Uploaded image for project: 'XBean'
  1. XBean
  2. XBEAN-106

Id is required for elements when NOT used as a top-level tag

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.4
    • 3.4.3
    • spring
    • None
    • xbean-spring-3.4.1
      spring-*-2.5.4

    Description

      I was using org.apache.xbean.spring.context.ClassPathXmlApplicationContext in my beanRefContext.xml and noticed weird behaviour with util:properties (and util:map)

      <bean class="org.apache.activemq.spring.ActiveMQConnectionFactory">
      <property name="properties">
      <util:properties location="classpath:jndi.properties" />
      </property>
      </bean>

      Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Configuration problem: Id is required for element 'properties' when used as a top-level tag
      at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
      at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
      at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:72)
      at org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(AbstractBeanDefinitionParser.java:73)
      at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:69)
      at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1253)
      at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseNestedCustomElement(BeanDefinitionParserDelegate.java:1302)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.apache.xbean.spring.context.v2c.XBeanBeanDefinitionParserDelegate.internalParseNestedCustomElement(XBeanBeanDefinitionParserDelegate.java:90)
      at org.apache.xbean.spring.context.v2c.XBeanBeanDefinitionParserDelegate.parsePropertySubElement(XBeanBeanDefinitionParserDelegate.java:47)

      When using org.springframework.context.support.ClassPathXmlApplicationContext or supplying and id this problem disappeared.

      • * * IRRELEVANT FYI * * *

      I couldn't get ActiveMQ XBean variant to accept properties at all.

      <amq:connectionFactory>
      <property name="properties">
      <util:properties id="foobar" location="classpath:jndi.properties" />
      </property>
      </amq:connectionFactory>

      It created PropertyValue named 'property' along with properties which naturally failed due to missing 'property' named property.

      <amq:connectionFactory>
      <util:properties id="foobar" location="classpath:jndi.properties" />
      </amq:connectionFactory>

      It resolved correctly but property type coercion lead to ManagedMap instead of property file. Here I revered from using ActiveMQ XBean to format used above.

      Attachments

        Activity

          People

            gnodet Guillaume Nodet
            tuomas_kiviaho Tuomas Kiviaho
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: