Coming back to this a number of my tests are failing again. When parsing the following
xml
| <deployment xmlns="urn:jboss:bean-deployer:2.0">
|
| <bean name="AspectManager"
class="org.jboss.aop.AspectManager">
| <constructor factoryClass="org.jboss.aop.AspectManager"
factoryMethod="instance"/>
| </bean>
|
| <aspect xmlns="urn:jboss:aop-beans:1.0"
name="InterceptedAdvice"
class="org.jboss.test.microcontainer.support.TestAspect"/> <!-- Line 9
-->
|
| ...
| </deployment>
|
It falls over with the following exception
| org.jboss.xb.binding.JBossXBException: Failed to parse source:
file:/Users/kabir/sourcecontrol/microcontainer/Branch_2_0/subversion/aop-mc-int/target/test-classes/org/jboss/test/microcontainer/test/SimpleAspectTestCase.xml@9,127
| at
org.jboss.xb.binding.parser.sax.SaxJBossXBParser.parse(SaxJBossXBParser.java:177)
| ...
| Caused by: org.jboss.xb.binding.JBossXBRuntimeException: Property order is not
specified for type
org.jboss.aop.microcontainer.beans.metadata.AnnotationOverrideBeanMetaDataFactory bound to
a sequence. Property order can be specified using @XmlTy
| pe.propOrder or @XmlAccessorOrder. List of properties: demands start classLoader
installs properties uninstalls annotations constructor create installCallbacks beans
supplies uninstallCallbacks depends classShortName aliases
| at org.jboss.aop.microcontainer.beans.metadata.AOPDeployment.beanFactories
| at org.jboss.aop.microcontainer.beans.metadata.AOPDeployment
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.rethrowWithLocation(JBossXBNoSchemaBuilder.java:2018)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.createRootElementBinding(JBossXBNoSchemaBuilder.java:346)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.createRootElements(JBossXBNoSchemaBuilder.java:321)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.build(JBossXBNoSchemaBuilder.java:232)
| at org.jboss.xb.builder.JBossXBBuilder.build(JBossXBBuilder.java:291)
| at org.jboss.xb.builder.JBossXBBuilder.build(JBossXBBuilder.java:181)
| at org.jboss.xb.builder.JBossXBBuilder.build(JBossXBBuilder.java:160)
| at
org.jboss.xb.binding.resolver.AbstractMutableSchemaResolver.resolve(AbstractMutableSchemaResolver.java:261)
| at
org.jboss.xb.binding.sunday.unmarshalling.WildcardBinding.getElement(WildcardBinding.java:174)
| at
org.jboss.xb.binding.sunday.unmarshalling.SequenceBinding$1.startElement(SequenceBinding.java:276)
| at
org.jboss.xb.binding.sunday.unmarshalling.SequenceBinding$1.startElement(SequenceBinding.java:223)
| at
org.jboss.xb.binding.sunday.unmarshalling.ModelGroupBinding$Cursor.startElement(ModelGroupBinding.java:220)
| at
org.jboss.xb.binding.sunday.unmarshalling.SundayContentHandler.startElement(SundayContentHandler.java:423)
| at
org.jboss.xb.binding.parser.sax.SaxJBossXBParser$DelegatingContentHandler.startElement(SaxJBossXBParser.java:401)
| at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
| at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown
Source)
| at org.apache.xerces.xinclude.XIncludeHandler.emptyElement(Unknown Source)
| at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
Source)
| at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
| at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
| at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
| at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
| at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
| at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
| at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
| at
org.jboss.xb.binding.parser.sax.SaxJBossXBParser.parse(SaxJBossXBParser.java:173)
| ... 22 more
| Caused by: org.jboss.xb.binding.JBossXBRuntimeException: Property order is not
specified for type
org.jboss.aop.microcontainer.beans.metadata.AnnotationOverrideBeanMetaDataFactory bound to
a sequence. Property order can be specified using @XmlTy
| pe.propOrder or @XmlAccessorOrder. List of properties: demands start classLoader
installs properties uninstalls annotations constructor create installCallbacks beans
supplies uninstallCallbacks depends classShortName aliases
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.assertPropOrderNotRequired(JBossXBNoSchemaBuilder.java:1278)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateType(JBossXBNoSchemaBuilder.java:1071)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateBean(JBossXBNoSchemaBuilder.java:779)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateBean(JBossXBNoSchemaBuilder.java:767)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateTypeBinding(JBossXBNoSchemaBuilder.java:523)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.resolveTypeBinding(JBossXBNoSchemaBuilder.java:482)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.bindProperty(JBossXBNoSchemaBuilder.java:1684)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateType(JBossXBNoSchemaBuilder.java:1118)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateBean(JBossXBNoSchemaBuilder.java:779)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateBean(JBossXBNoSchemaBuilder.java:767)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateTypeBinding(JBossXBNoSchemaBuilder.java:523)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.resolveTypeBinding(JBossXBNoSchemaBuilder.java:482)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.createElementBinding(JBossXBNoSchemaBuilder.java:361)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.createRootElementBinding(JBossXBNoSchemaBuilder.java:341)
| ... 46 more
|
This seems to be on first access to anything within the
"urn:jboss:aop-beans:1.0" schema, and I believe it is from trying to parse the
schema. Here is the top-level class:
| @ManagementObject(properties = ManagementProperties.EXPLICIT) // TODO - explicitly add
props we want to manage
| @JBossXmlSchema(namespace="urn:jboss:aop-beans:1.0",
elementFormDefault=XmlNsForm.QUALIFIED)
| @XmlRootElement(name="aop")
| @XmlType(propOrder={"annotations", "classLoader",
"beanFactories", "create", "start", "stop",
"destroy", "aliases"})
| public class AOPDeployment extends AbstractKernelDeployment
| {
| private static final long serialVersionUID = 1L;
|
|
| @XmlElements
| ({
| @XmlElement(name="annotation",
type=AnnotationOverrideBeanMetaDataFactory.class),
| @XmlElement(name="annotation-introduction",
type=AnnotationIntroductionBeanMetaDataFactory.class),
| @XmlElement(name="arrayreplacement",
type=ArrayReplacementBeanMetaDataFactory.class),
| //Many more!
| })
| @XmlAnyElement
| public void setBeanFactories(List<BeanMetaDataFactory> beanFactories)
| {
| super.setBeanFactories(beanFactories);
| }
| }
|
AnnotationOverrideBeanMetaDataFactory:
| @JBossXmlSchema(namespace="urn:jboss:aop-beans:1.0",
elementFormDefault=XmlNsForm.QUALIFIED)
| @XmlRootElement(name="annotation")
| public class AnnotationOverrideBeanMetaDataFactory extends
AbstractAnnotationBeanMetaDataFactory
| {
|
| private static final long serialVersionUID = 1L;
|
| @Override
| protected String getBeanClassName()
| {
| return AnnotationOverride.class.getName();
| }
| }
|
AbstractAnnotationBeanMetaDataFactory
| public abstract class AbstractAnnotationBeanMetaDataFactory extends
AspectManagerAwareBeanMetaDataFactory
| {
| private static final long serialVersionUID = 1L;
|
| String expr;
|
| boolean invisible;
|
| String annotation;
|
| public String getExpr()
| {
| return expr;
| }
|
| @XmlAttribute
| public void setExpr(String expr)
| {
| this.expr = expr;
| }
|
| public boolean isInvisible()
| {
| return invisible;
| }
|
| @XmlAttribute
| public void setInvisible(boolean invisible)
| {
| this.invisible = invisible;
| }
|
| public String getAnnotation()
| {
| return annotation;
| }
|
| @XmlValue
| public void setAnnotation(String annotation)
| {
| this.annotation = annotation;
| }
|
| @Override
| public List<BeanMetaData> getBeans()
| {
| ArrayList<BeanMetaData> result = new ArrayList<BeanMetaData>();
| if (name == null)
| {
| name = GUID.asString();
| }
| BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(name,
getBeanClassName());
| builder.addPropertyMetaData("invisible", invisible);
| builder.addPropertyMetaData("expr", expr);
| builder.addPropertyMetaData("annotation", annotation);
|
| setAspectManagerProperty(builder);
|
| result.add(builder.getBeanMetaData());
|
| return result;
| }
|
|
| protected abstract String getBeanClassName();
| }
|
AspectManagerAwareBeanMetaDataFactory
| public abstract class AspectManagerAwareBeanMetaDataFactory extends
GenericBeanFactoryMetaData
| {
| //Setters to handle the aspectmanager to add the aop metadata to
| }
|
Then from MC we have GenericBeanFactoryMetaData
| @XmlRootElement(name="beanfactory")
| @XmlType(name="beanfactoryType", propOrder={"aliases",
"annotations", "classLoader", "constructor",
"properties", "create", "start", "depends",
"demands", "supplies", "installs", "uninstalls",
"installCallbacks", "uninstallCallbacks"})
| public class GenericBeanFactoryMetaData extends JBossObject implements
BeanMetaDataFactory, Serializable
| {
| ...
| }
|
If I add @XmlType(propOrder={})to AnnotationOverrideBeanMetaDataFactory:
| @JBossXmlSchema(namespace="urn:jboss:aop-beans:1.0",
elementFormDefault=XmlNsForm.QUALIFIED)
| @XmlRootElement(name="annotation")
| @XmlType(propOrder={})
| public class AnnotationOverrideBeanMetaDataFactory extends
AbstractAnnotationBeanMetaDataFactory
| {
|
| private static final long serialVersionUID = 1L;
|
| @Override
| protected String getBeanClassName()
| {
| return AnnotationOverride.class.getName();
| }
| }
|
I then get a new error
| org.jboss.xb.binding.JBossXBException: Failed to parse source:
file:/Users/kabir/sourcecontrol/microcontainer/Branch_2_0/subversion/aop-mc-int/target/test-classes/org/jboss/test/microcontainer/test/SimpleAspectTestCase.xml@9,127
| at
org.jboss.xb.binding.parser.sax.SaxJBossXBParser.parse(SaxJBossXBParser.java:177)
| Caused by: org.jboss.xb.binding.JBossXBRuntimeException: Property order is not
specified for type org.jboss.beans.metadata.spi.BeanMetaData bound to a sequence. Property
order can be specified using @XmlType.propOrder or @XmlAccessorOrder. List of
| properties: demands start classLoader installs properties related uninstalls destroy
annotations accessMode errorHandlingMode constructor create autowireType installCallbacks
name supplies mode uninstallCallbacks bean depends stop abstract autowi
| reCandidate parent aliases
| at
org.jboss.aop.microcontainer.beans.metadata.AnnotationOverrideBeanMetaDataFactory.beans
| at org.jboss.aop.microcontainer.beans.metadata.AOPDeployment.beanFactories
| at org.jboss.aop.microcontainer.beans.metadata.AOPDeployment
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.rethrowWithLocation(JBossXBNoSchemaBuilder.java:2018)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.createRootElementBinding(JBossXBNoSchemaBuilder.java:346)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.createRootElements(JBossXBNoSchemaBuilder.java:321)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.build(JBossXBNoSchemaBuilder.java:232)
| at org.jboss.xb.builder.JBossXBBuilder.build(JBossXBBuilder.java:291)
| at org.jboss.xb.builder.JBossXBBuilder.build(JBossXBBuilder.java:181)
| at org.jboss.xb.builder.JBossXBBuilder.build(JBossXBBuilder.java:160)
| at
org.jboss.xb.binding.resolver.AbstractMutableSchemaResolver.resolve(AbstractMutableSchemaResolver.java:261)
| at
org.jboss.xb.binding.sunday.unmarshalling.WildcardBinding.getElement(WildcardBinding.java:174)
| at
org.jboss.xb.binding.sunday.unmarshalling.SequenceBinding$1.startElement(SequenceBinding.java:276)
| at
org.jboss.xb.binding.sunday.unmarshalling.SequenceBinding$1.startElement(SequenceBinding.java:223)
| at
org.jboss.xb.binding.sunday.unmarshalling.ModelGroupBinding$Cursor.startElement(ModelGroupBinding.java:220)
| at
org.jboss.xb.binding.sunday.unmarshalling.SundayContentHandler.startElement(SundayContentHandler.java:423)
| at
org.jboss.xb.binding.parser.sax.SaxJBossXBParser$DelegatingContentHandler.startElement(SaxJBossXBParser.java:401)
| at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
| at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown
Source)
| at org.apache.xerces.xinclude.XIncludeHandler.emptyElement(Unknown Source)
| at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
Source)
| at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
| at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
| at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
| at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
| at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
| at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
| at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
| at
org.jboss.xb.binding.parser.sax.SaxJBossXBParser.parse(SaxJBossXBParser.java:173)
| ... 22 more
| Caused by: org.jboss.xb.binding.JBossXBRuntimeException: Property order is not
specified for type org.jboss.beans.metadata.spi.BeanMetaData bound to a sequence. Property
order can be specified using @XmlType.propOrder or @XmlAccessorOrder. List of
| properties: demands start classLoader installs properties related uninstalls destroy
annotations accessMode errorHandlingMode constructor create autowireType installCallbacks
name supplies mode uninstallCallbacks bean depends stop abstract autowi
| reCandidate parent aliases
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.assertPropOrderNotRequired(JBossXBNoSchemaBuilder.java:1278)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateType(JBossXBNoSchemaBuilder.java:1071)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateBean(JBossXBNoSchemaBuilder.java:779)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateBean(JBossXBNoSchemaBuilder.java:767)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateTypeBinding(JBossXBNoSchemaBuilder.java:523)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.resolveTypeBinding(JBossXBNoSchemaBuilder.java:482)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.bindProperty(JBossXBNoSchemaBuilder.java:1684)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateType(JBossXBNoSchemaBuilder.java:1118)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateBean(JBossXBNoSchemaBuilder.java:779)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateBean(JBossXBNoSchemaBuilder.java:767)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateTypeBinding(JBossXBNoSchemaBuilder.java:523)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.resolveTypeBinding(JBossXBNoSchemaBuilder.java:482)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.bindProperty(JBossXBNoSchemaBuilder.java:1684)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateType(JBossXBNoSchemaBuilder.java:1118)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateBean(JBossXBNoSchemaBuilder.java:779)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateBean(JBossXBNoSchemaBuilder.java:767)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.generateTypeBinding(JBossXBNoSchemaBuilder.java:523)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.resolveTypeBinding(JBossXBNoSchemaBuilder.java:482)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.createElementBinding(JBossXBNoSchemaBuilder.java:361)
| at
org.jboss.xb.builder.JBossXBNoSchemaBuilder.createRootElementBinding(JBossXBNoSchemaBuilder.java:341)
| ... 46 more
|
First, I thought it might be due to the @XmlType set in the
AnnotationOverrideBeanMetaDataFactory somehow interfering with the one in its superclass
GenericBeanFactoryMetaData.
But it looks more likely that is is due to BeanMetaData which is returned by the
AnnotationOverrideBeanMetaDataFactory.getBeans() not having @XmlType(propOrder={})?
BeanMetaData is an mc spi interface with no xb annotations. The annotations are on impl
classes instead, which is probably how it should be?
If my reasoning is correct, how to get around this?
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4229517#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...