You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2014/04/28 04:25:30 UTC

svn commit: r1590547 [1/3] - in /qpid/trunk/qpid/java: ./ bdbstore/ bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/ bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/ bdbstore/src/main/resources/META-INF/services/...

Author: rgodfrey
Date: Mon Apr 28 02:25:27 2014
New Revision: 1590547

URL: http://svn.apache.org/r1590547
Log:
QPID-5726 : [Java Broker] Use annotation processing to generate object factories and service definitions

Added:
    qpid/trunk/qpid/java/broker-codegen/
    qpid/trunk/qpid/java/broker-codegen/build.xml
    qpid/trunk/qpid/java/broker-codegen/pom.xml
    qpid/trunk/qpid/java/broker-codegen/src/
    qpid/trunk/qpid/java/broker-codegen/src/main/
    qpid/trunk/qpid/java/broker-codegen/src/main/java/
    qpid/trunk/qpid/java/broker-codegen/src/main/java/org/
    qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/
    qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/
    qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/
    qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/License.java
    qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/
    qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryGenerator.java
    qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactory.java
      - copied, changed from r1590318, qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedObject.java
    qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactoryConstructor.java
    qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/plugin/
    qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/plugin/PluggableProcessor.java
    qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/plugin/PluggableService.java
    qpid/trunk/qpid/java/broker-codegen/src/main/resources/
    qpid/trunk/qpid/java/broker-codegen/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-codegen/src/main/resources/META-INF/services/
    qpid/trunk/qpid/java/broker-codegen/src/main/resources/META-INF/services/javax.annotation.processing.Processor
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramAuthUser.java
Removed:
    qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java
    qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeFactory.java
    qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeFactory.java
    qpid/trunk/qpid/java/bdbstore/src/main/resources/META-INF/services/
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchangeFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchangeFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchangeFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchangeFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapterFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/StandardVirtualHostFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPortFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/JmxPortFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/RmiPortFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/LastValueQueueFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/PriorityQueueFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/FileKeyStoreFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/FileTrustStoreFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1UserRecoverer.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNodeFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderFactoryTest.java
    qpid/trunk/qpid/java/broker-plugins/access-control/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeFactory.java
    qpid/trunk/qpid/java/broker-plugins/derby-store/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeFactory.java
    qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/management-amqp/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementFactory.java
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java
    qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementFactory.java
    qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/JMXManagementFactoryTest.java
    qpid/trunk/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNodeFactory.java
    qpid/trunk/qpid/java/broker-plugins/memory-store/src/main/resources/META-INF/
    qpid/trunk/qpid/java/broker-plugins/websocket/src/main/resources/META-INF/
Modified:
    qpid/trunk/qpid/java/bdbstore/build.xml
    qpid/trunk/qpid/java/bdbstore/pom.xml
    qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java
    qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java
    qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
    qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java
    qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java
    qpid/trunk/qpid/java/broker-core/build.xml
    qpid/trunk/qpid/java/broker-core/pom.xml
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/factory/JsonConfigurationStoreFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/factory/MemoryConfigurationStoreFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchangeType.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchangeType.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchangeType.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchangeType.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/internal/InternalMessageMetaDataType.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderImpl.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPortImpl.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/JmxPortImpl.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/PortFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/RmiPort.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/LastValueQueueImpl.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/PriorityQueueImpl.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueImpl.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueImpl.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/FileKeyStoreImpl.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/FileTrustStoreImpl.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/KerberosAuthenticationManagerFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManager.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManagerFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStoreFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransportProviderFactory.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/JsonVirtualHostNodeImpl.java
    qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNodeTest.java
    qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/TestVirtualHostNode.java
    qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/TestVirtualHostNodeFactory.java
    qpid/trunk/qpid/java/broker-plugins/access-control/build.xml
    qpid/trunk/qpid/java/broker-plugins/access-control/pom.xml
    qpid/trunk/qpid/java/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactory.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/build.xml
    qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/pom.xml
    qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageConverter_Internal_to_v0_10.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageConverter_v0_10.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageConverter_v0_10_to_Internal.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageMetaDataType_0_10.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngineCreator_0_10.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/build.xml
    qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/pom.xml
    qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageConverter_Internal_to_v0_8.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageConverter_v0_8_to_Internal.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageMetaDataType_0_8.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_8.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9.java
    qpid/trunk/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9_1.java
    qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/build.xml
    qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/pom.xml
    qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_Internal_to_v1_0.java
    qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_v1_0_to_Internal.java
    qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageMetaDataType_1_0.java
    qpid/trunk/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ProtocolEngineCreator_1_0_0_SASL.java
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-10-to-1-0/build.xml
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-10-to-1-0/pom.xml
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/MessageConverter_0_10_to_1_0.java
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-10-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_10_v1_0/MessageConverter_1_0_to_v0_10.java
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/build.xml
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/pom.xml
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_8_to_0_10.java
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-1-0/build.xml
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-1-0/pom.xml
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v1_0/MessageConverter_0_8_to_1_0.java
    qpid/trunk/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v1_0/MessageConverter_1_0_to_v0_8.java
    qpid/trunk/qpid/java/broker-plugins/derby-store/build.xml
    qpid/trunk/qpid/java/broker-plugins/derby-store/pom.xml
    qpid/trunk/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java
    qpid/trunk/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNode.java
    qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/build.xml
    qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/pom.xml
    qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java
    qpid/trunk/qpid/java/broker-plugins/jdbc-store/build.xml
    qpid/trunk/qpid/java/broker-plugins/jdbc-store/pom.xml
    qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java
    qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreFactory.java
    qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
    qpid/trunk/qpid/java/broker-plugins/management-amqp/build.xml
    qpid/trunk/qpid/java/broker-plugins/management-amqp/pom.xml
    qpid/trunk/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeCreator.java
    qpid/trunk/qpid/java/broker-plugins/management-http/build.xml
    qpid/trunk/qpid/java/broker-plugins/management-http/pom.xml
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
    qpid/trunk/qpid/java/broker-plugins/management-jmx/build.xml
    qpid/trunk/qpid/java/broker-plugins/management-jmx/pom.xml
    qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagementPluginImpl.java
    qpid/trunk/qpid/java/broker-plugins/memory-store/build.xml
    qpid/trunk/qpid/java/broker-plugins/memory-store/pom.xml
    qpid/trunk/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/store/MemoryMessageStoreFactory.java
    qpid/trunk/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java
    qpid/trunk/qpid/java/broker-plugins/websocket/build.xml
    qpid/trunk/qpid/java/broker-plugins/websocket/pom.xml
    qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProviderFactory.java
    qpid/trunk/qpid/java/build.xml
    qpid/trunk/qpid/java/module.xml
    qpid/trunk/qpid/java/pom.xml

Modified: qpid/trunk/qpid/java/bdbstore/build.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/build.xml?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/build.xml (original)
+++ qpid/trunk/qpid/java/bdbstore/build.xml Mon Apr 28 02:25:27 2014
@@ -17,7 +17,7 @@
  - under the License.
  -->
 <project name="bdbstore" xmlns:ivy="antlib:org.apache.ivy.ant" default="build">
-    <property name="module.depends" value="common broker-core broker-plugins/amqp-0-8-protocol broker-plugins/amqp-0-10-protocol" />
+    <property name="module.depends" value="common broker-core broker-codegen broker-plugins/amqp-0-8-protocol broker-plugins/amqp-0-10-protocol" />
     <property name="module.test.depends" value="client qpid-test-utils broker-core/tests management/common systests broker-plugins/management-jmx broker-plugins/memory-store broker-plugins/amqp-0-8-protocol broker-plugins/amqp-0-10-protocol broker-plugins/amqp-msg-conv-0-8-to-0-10" />
     <property name="module.genpom" value="true"/>
     <property name="module.genpom.args" value="-Sqpid-common=provided -Sqpid-broker-core=provided -Sqpid-broker-plugins-amqp-0-8-protocol=provided -Sje=provided"/>

Modified: qpid/trunk/qpid/java/bdbstore/pom.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/pom.xml?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/pom.xml (original)
+++ qpid/trunk/qpid/java/bdbstore/pom.xml Mon Apr 28 02:25:27 2014
@@ -38,6 +38,13 @@
 
     <dependency>
       <groupId>org.apache.qpid</groupId>
+      <artifactId>qpid-broker-codegen</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.qpid</groupId>
       <artifactId>qpid-broker-plugins-amqp-0-8-protocol</artifactId>
       <version>${project.version}</version>
     </dependency>

Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java Mon Apr 28 02:25:27 2014
@@ -24,6 +24,7 @@ import java.util.Map;
 
 import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject;
 import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.model.VirtualHostNode;
 import org.apache.qpid.server.store.DurableConfigurationStore;
 import org.apache.qpid.server.store.MessageStore;
@@ -37,6 +38,7 @@ public class BDBHAVirtualHost extends Ab
     private final BDBMessageStore _messageStore;
     private MessageStoreLogSubject _messageStoreLogSubject;
 
+    @ManagedObjectFactoryConstructor
     protected BDBHAVirtualHost(final Map<String, Object> attributes, VirtualHostNode<?> virtualHostNode)
     {
         super(attributes, virtualHostNode);

Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java Mon Apr 28 02:25:27 2014
@@ -25,9 +25,11 @@ import java.util.Map;
 import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.plugin.DurableConfigurationStoreFactory;
 import org.apache.qpid.server.plugin.MessageStoreFactory;
+import org.apache.qpid.server.plugin.PluggableService;
 import org.apache.qpid.server.store.DurableConfigurationStore;
 import org.apache.qpid.server.store.MessageStore;
 
+@PluggableService
 public class BDBMessageStoreFactory implements MessageStoreFactory, DurableConfigurationStoreFactory
 {
 

Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java Mon Apr 28 02:25:27 2014
@@ -26,31 +26,31 @@ import java.util.Map;
 
 import javax.security.auth.Subject;
 
+import com.sleepycat.je.rep.StateChangeEvent;
+import com.sleepycat.je.rep.StateChangeListener;
 import org.apache.log4j.Logger;
-import org.apache.qpid.server.configuration.updater.TaskExecutor;
+
 import org.apache.qpid.server.logging.messages.ConfigStoreMessages;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.BrokerModel;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.ManagedAttributeField;
 import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory;
 import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.store.DurableConfigurationStore;
 import org.apache.qpid.server.store.VirtualHostStoreUpgraderAndRecoverer;
 import org.apache.qpid.server.store.berkeleydb.BDBHAVirtualHost;
-import org.apache.qpid.server.store.berkeleydb.BDBHAVirtualHostFactory;
 import org.apache.qpid.server.store.berkeleydb.BDBMessageStore;
 import org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade;
 import org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacadeFactory;
 import org.apache.qpid.server.virtualhost.VirtualHostState;
 import org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode;
 
-import com.sleepycat.je.rep.StateChangeEvent;
-import com.sleepycat.je.rep.StateChangeListener;
-
 @ManagedObject( category = false, type = "BDB_HA" )
 public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtualHostNodeImpl> implements BDBHAVirtualHostNode<BDBHAVirtualHostNodeImpl>
 {
@@ -89,9 +89,10 @@ public class BDBHAVirtualHostNodeImpl ex
     @ManagedAttributeField
     private Map<String, String> _replicatedEnvironmentConfiguration;
 
-    public BDBHAVirtualHostNodeImpl(Broker<?> broker, Map<String, Object> attributes, TaskExecutor taskExecutor)
+    @ManagedObjectFactoryConstructor
+    public BDBHAVirtualHostNodeImpl(Map<String, Object> attributes, Broker<?> broker)
     {
-        super(broker, attributes, taskExecutor);
+        super(broker, attributes);
     }
 
     @Override
@@ -182,8 +183,9 @@ public class BDBHAVirtualHostNodeImpl ex
         {
             if ("MASTER".equals(((ReplicatedEnvironmentFacade)getConfigurationStore().getEnvironmentFacade()).getNodeState()))
             {
-                BDBHAVirtualHostFactory virtualHostFactory = new BDBHAVirtualHostFactory();
-                return (C) virtualHostFactory.create(getObjectFactory(), attributes,this);
+                ConfiguredObjectTypeFactory<? extends ConfiguredObject> factory =
+                        getObjectFactory().getConfiguredObjectTypeFactory(VirtualHost.class.getSimpleName(), "BDB_HA");
+                return (C) factory.create(getObjectFactory(), attributes, this);
             }
             else
             {

Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBVirtualHostNodeImpl.java Mon Apr 28 02:25:27 2014
@@ -22,10 +22,10 @@ package org.apache.qpid.server.virtualho
 
 import java.util.Map;
 
-import org.apache.qpid.server.configuration.updater.TaskExecutor;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ManagedAttributeField;
 import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.plugin.DurableConfigurationStoreFactory;
 import org.apache.qpid.server.store.berkeleydb.BDBMessageStoreFactory;
 import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
@@ -39,9 +39,10 @@ public class BDBVirtualHostNodeImpl exte
     @ManagedAttributeField
     private Map<String, String> _environmentConfiguration;
 
-    public BDBVirtualHostNodeImpl(Broker<?> parent, Map<String, Object> attributes, TaskExecutor taskExecutor)
+    @ManagedObjectFactoryConstructor
+    public BDBVirtualHostNodeImpl(Map<String, Object> attributes, Broker<?> parent)
     {
-        super(parent, attributes, taskExecutor);
+        super(attributes, parent);
     }
 
     @Override

Modified: qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java Mon Apr 28 02:25:27 2014
@@ -36,8 +36,10 @@ import com.sleepycat.je.rep.ReplicationC
 import org.apache.qpid.server.configuration.updater.TaskExecutor;
 import org.apache.qpid.server.configuration.updater.TaskExecutorImpl;
 import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.BrokerModel;
 import org.apache.qpid.server.model.ConfigurationChangeListener;
 import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.ConfiguredObjectFactory;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.model.VirtualHostNode;
@@ -45,7 +47,6 @@ import org.apache.qpid.server.plugin.Con
 import org.apache.qpid.server.store.DurableConfigurationStore;
 import org.apache.qpid.server.util.BrokerTestHelper;
 import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode;
-import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNodeFactory;
 import org.apache.qpid.test.utils.QpidTestCase;
 import org.apache.qpid.util.FileUtils;
 
@@ -118,7 +119,9 @@ public class BDBHAVirtualHostNodeTest ex
         attributes.put(BDBHAVirtualHostNode.REPLICATED_ENVIRONMENT_CONFIGURATION,
                 Collections.singletonMap(ReplicationConfig.REP_STREAM_TIMEOUT, repStreamTimeout));
 
-        ConfiguredObjectTypeFactory<?> factory = new BDBHAVirtualHostNodeFactory();
+        ConfiguredObjectFactory objectFactory = BrokerModel.getInstance().getObjectFactory();
+        ConfiguredObjectTypeFactory factory = objectFactory.getConfiguredObjectTypeFactory("VirtualHostNode",
+                                                                                              "BDB_HA");
 
         BDBHAVirtualHostNode<?> node = (BDBHAVirtualHostNode<?>) factory.create(null, attributes, _broker);
 

Added: qpid/trunk/qpid/java/broker-codegen/build.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-codegen/build.xml?rev=1590547&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-codegen/build.xml (added)
+++ qpid/trunk/qpid/java/broker-codegen/build.xml Mon Apr 28 02:25:27 2014
@@ -0,0 +1,28 @@
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements.  See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership.  The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License.  You may obtain a copy of the License at
+ - 
+ -   http://www.apache.org/licenses/LICENSE-2.0
+ - 
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied.  See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+ -->
+<project name="Broker Codegen" default="build">
+    <import file="../module.xml"/>
+
+    <property name="module.genpom" value="false"/>
+
+    <target name="bundle" depends="bundle-tasks"/>
+
+</project>

Added: qpid/trunk/qpid/java/broker-codegen/pom.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-codegen/pom.xml?rev=1590547&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-codegen/pom.xml (added)
+++ qpid/trunk/qpid/java/broker-codegen/pom.xml Mon Apr 28 02:25:27 2014
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.qpid</groupId>
+    <artifactId>qpid-java-build</artifactId>
+    <version>0.28-SNAPSHOT</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+
+  <artifactId>qpid-broker-codegen</artifactId>
+  <name>Qpid Broker Code Generation</name>
+  <description>Code Generation For Broker and Plugins</description>
+
+  <dependencies>
+  </dependencies>
+   
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>${maven-compiler-plugin-version}</version>
+        <configuration>
+          <compilerArgument>-proc:none</compilerArgument>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>

Added: qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/License.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/License.java?rev=1590547&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/License.java (added)
+++ qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/License.java Mon Apr 28 02:25:27 2014
@@ -0,0 +1,43 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server;
+
+public interface License
+{
+    String[] LICENSE = {
+            " Licensed to the Apache Software Foundation (ASF) under one",
+            " or more contributor license agreements.  See the NOTICE file",
+            " distributed with this work for additional information",
+            " regarding copyright ownership.  The ASF licenses this file",
+            " to you under the Apache License, Version 2.0 (the",
+            " \"License\"); you may not use this file except in compliance",
+            " with the License.  You may obtain a copy of the License at",
+            "",
+            "   http://www.apache.org/licenses/LICENSE-2.0",
+            "",
+            " Unless required by applicable law or agreed to in writing,",
+            " software distributed under the License is distributed on an",
+            " \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY",
+            " KIND, either express or implied.  See the License for the",
+            " specific language governing permissions and limitations",
+            " under the License."
+    };
+}

Added: qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryGenerator.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryGenerator.java?rev=1590547&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryGenerator.java (added)
+++ qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryGenerator.java Mon Apr 28 02:25:27 2014
@@ -0,0 +1,169 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.model;
+
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.annotation.processing.AbstractProcessor;
+import javax.annotation.processing.Filer;
+import javax.annotation.processing.RoundEnvironment;
+import javax.lang.model.SourceVersion;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ElementKind;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.PackageElement;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.element.VariableElement;
+import javax.lang.model.type.TypeMirror;
+import javax.tools.Diagnostic;
+import javax.tools.JavaFileObject;
+
+import org.apache.qpid.server.License;
+
+public class ConfiguredObjectFactoryGenerator extends AbstractProcessor
+{
+    @Override
+    public SourceVersion getSupportedSourceVersion()
+    {
+        return SourceVersion.latest();
+    }
+
+    @Override
+    public Set<String> getSupportedAnnotationTypes()
+    {
+        return new HashSet<>(Arrays.asList(ManagedObjectFactory.class.getName(), ManagedObjectFactoryConstructor.class.getName()));
+    }
+
+    @Override
+    public boolean process(final Set<? extends TypeElement> annotations, final RoundEnvironment roundEnv)
+    {
+
+        if(roundEnv.processingOver())
+        {
+
+            return true;
+        }
+
+        Filer filer = processingEnv.getFiler();
+
+        try
+        {
+
+            for (Element e : roundEnv.getElementsAnnotatedWith(ManagedObjectFactoryConstructor.class))
+            {
+                if(e.getKind() == ElementKind.CONSTRUCTOR)
+                {
+                    ExecutableElement constructorElement = (ExecutableElement) e;
+                    String factoryName = generateObjectFactory(filer, constructorElement);
+                }
+            }
+
+        }
+        catch (Exception e)
+        {
+            processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "Error: " + e.getLocalizedMessage());
+        }
+
+        return true;
+    }
+
+    private String generateObjectFactory(final Filer filer, final ExecutableElement constructorElement)
+    {
+        TypeElement classElement = (TypeElement) constructorElement.getEnclosingElement();
+        String factoryName = classElement.getQualifiedName().toString() + "Factory";
+        String factorySimpleName = classElement.getSimpleName().toString() + "Factory";
+        String objectSimpleName = classElement.getSimpleName().toString();
+        processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "Generating factory file for " + classElement.getQualifiedName().toString());
+
+        PackageElement packageElement = (PackageElement) classElement.getEnclosingElement();
+
+        try
+        {
+            JavaFileObject factoryFile = filer.createSourceFile(factoryName);
+            PrintWriter pw = new PrintWriter(new OutputStreamWriter(factoryFile.openOutputStream(), "UTF-8"));
+            pw.println("/*");
+            for(String headerLine : License.LICENSE)
+            {
+                pw.println(" *" + headerLine);
+            }
+            pw.println(" */");
+            pw.println();
+            pw.print("package ");
+            pw.print(packageElement.getQualifiedName());
+            pw.println(";");
+            pw.println();
+
+            pw.println("import java.util.Map;");
+            pw.println();
+            pw.println("import org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory;");
+            pw.println("import org.apache.qpid.server.model.ConfiguredObject;");
+            pw.println("import org.apache.qpid.server.plugin.PluggableService;");
+            pw.println();
+            pw.println("@PluggableService");
+            pw.println("public final class " + factorySimpleName + " extends AbstractConfiguredObjectTypeFactory<"+ objectSimpleName +">");
+            pw.println("{");
+            pw.println("    public " + factorySimpleName + "()");
+            pw.println("    {");
+            pw.println("        super(" + objectSimpleName + ".class);");
+            pw.println("    }");
+            pw.println();
+            pw.println("    @Override");
+            pw.println("    protected "+objectSimpleName+" createInstance(final Map<String, Object> attributes, final ConfiguredObject<?>... parents)");
+            pw.println("    {");
+            pw.print("        return new "+objectSimpleName+"(attributes");
+            boolean first = true;
+            for(VariableElement param : constructorElement.getParameters())
+            {
+                if(first)
+                {
+                    first = false;
+                }
+                else
+                {
+                    TypeMirror erasureType = processingEnv.getTypeUtils().erasure(param.asType());
+                    pw.print(", getParent("+erasureType.toString()+".class,parents)");
+                }
+            }
+            pw.println(");");
+            pw.println("    }");
+
+            pw.println("}");
+
+            pw.close();
+        }
+        catch (IOException e)
+        {
+            processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
+                                                     "Failed to write factory file: "
+                                                     + factoryName
+                                                     + " - "
+                                                     + e.getLocalizedMessage());
+        }
+
+        return factoryName;
+    }
+
+}

Copied: qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactory.java (from r1590318, qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedObject.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactory.java?p2=qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactory.java&p1=qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedObject.java&r1=1590318&r2=1590547&rev=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ManagedObject.java (original)
+++ qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactory.java Mon Apr 28 02:25:27 2014
@@ -23,14 +23,8 @@ package org.apache.qpid.server.model;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
-@Retention(RetentionPolicy.RUNTIME)
+@Retention(RetentionPolicy.SOURCE)
 
-public @interface ManagedObject
+public @interface ManagedObjectFactory
 {
-    boolean category() default true;
-    String[] operations() default {};
-    boolean managesChildren() default false; // for objects that manage children, a management node needs to be created
-    boolean creatable() default true;
-    String defaultType() default ""; // in this case the class/interface itself is to be used
-    String type() default "";
 }

Added: qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactoryConstructor.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactoryConstructor.java?rev=1590547&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactoryConstructor.java (added)
+++ qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/model/ManagedObjectFactoryConstructor.java Mon Apr 28 02:25:27 2014
@@ -0,0 +1,30 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.model;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.SOURCE)
+
+public @interface ManagedObjectFactoryConstructor
+{
+}

Added: qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/plugin/PluggableProcessor.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/plugin/PluggableProcessor.java?rev=1590547&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/plugin/PluggableProcessor.java (added)
+++ qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/plugin/PluggableProcessor.java Mon Apr 28 02:25:27 2014
@@ -0,0 +1,209 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.plugin;
+
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.annotation.processing.AbstractProcessor;
+import javax.annotation.processing.Filer;
+import javax.annotation.processing.RoundEnvironment;
+import javax.lang.model.SourceVersion;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ElementKind;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.type.NoType;
+import javax.lang.model.type.TypeMirror;
+import javax.tools.Diagnostic;
+import javax.tools.FileObject;
+import javax.tools.StandardLocation;
+
+import org.apache.qpid.server.License;
+
+public class PluggableProcessor extends AbstractProcessor
+{
+    private Map<String, Set<String>> factoryImplementations = new HashMap<>();
+
+
+    @Override
+    public SourceVersion getSupportedSourceVersion()
+    {
+        return SourceVersion.latest();
+    }
+
+    @Override
+    public Set<String> getSupportedAnnotationTypes()
+    {
+        return Collections.singleton(PluggableService.class.getName());
+    }
+
+    @Override
+    public boolean process(final Set<? extends TypeElement> annotations, final RoundEnvironment roundEnv)
+    {
+        if(roundEnv.processingOver())
+        {
+            generateServiceFiles(processingEnv.getFiler());
+
+            return true;
+        }
+        try
+        {
+
+            for (Element e : roundEnv.getElementsAnnotatedWith(PluggableService.class))
+            {
+
+                if (e.getKind() == ElementKind.CLASS)
+                {
+                    TypeElement classElement = (TypeElement) e;
+                    Set<String> pluggableTypes = getPluggableTypes(classElement);
+                    for(String pluggableType : pluggableTypes)
+                    {
+                        Set<String> existingFactories = factoryImplementations.get(pluggableType);
+                        if(existingFactories == null)
+                        {
+                            existingFactories = new HashSet<>();
+                            factoryImplementations.put(pluggableType, existingFactories);
+                        }
+                        existingFactories.add(classElement.getQualifiedName().toString());
+                    }
+                }
+            }
+
+        }
+        catch (Exception e)
+        {
+            processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, "Error: " + e.getLocalizedMessage());
+        }
+
+        return true;
+    }
+
+    private Set<String> getPluggableTypes(final TypeElement classElement)
+    {
+
+        final Set<String> types = new HashSet<>();
+
+        List<? extends TypeMirror> interfaces = classElement.getInterfaces();
+        for(TypeMirror typeMirror : interfaces)
+        {
+            TypeElement interfaceElt = (TypeElement) processingEnv.getTypeUtils().asElement(typeMirror);
+            if(interfaceElt.getQualifiedName().toString().equals("org.apache.qpid.server.plugin.Pluggable"))
+            {
+                types.add(classElement.getQualifiedName().toString());
+            }
+            else
+            {
+                types.addAll(getPluggableTypes(interfaceElt));
+            }
+
+        }
+        TypeMirror superClass = classElement.getSuperclass();
+        if(!(superClass instanceof NoType))
+        {
+            types.addAll(getPluggableTypes((TypeElement) processingEnv.getTypeUtils().asElement(superClass)));
+        }
+
+        return types;
+    }
+
+    private void generateServiceFiles(Filer filer)
+    {
+        for(String serviceName : factoryImplementations.keySet())
+        {
+            processingEnv.getMessager()
+                    .printMessage(Diagnostic.Kind.NOTE, "Generating service file for " + serviceName);
+
+            String relativeName = "META-INF/services/" + serviceName;
+
+            try
+            {
+                FileObject serviceFile = filer.createResource(StandardLocation.CLASS_OUTPUT, "", relativeName);
+                PrintWriter pw = new PrintWriter(new OutputStreamWriter(serviceFile.openOutputStream(), "UTF-8"));
+
+                for (String headerLine : License.LICENSE)
+                {
+                    pw.println("#" + headerLine);
+                }
+                pw.println("#");
+                pw.println("# Note: Parts of this file are auto-generated from annotations.");
+                pw.println("#");
+                for (String implementation : factoryImplementations.get(serviceName))
+                {
+                    pw.println(implementation);
+                }
+
+                pw.close();
+            }
+            catch (IOException e)
+            {
+                processingEnv.getMessager()
+                        .printMessage(Diagnostic.Kind.ERROR,
+                                      "Failed to write services file: "
+                                      + relativeName
+                                      + " - "
+                                      + e.getLocalizedMessage()
+                                     );
+            }
+        }
+    }
+
+    private String loadExistingServicesFile(final Filer filer, String serviceName)
+    {
+        String relativeName = "META-INF/services/" + serviceName;
+        try
+        {
+
+            FileObject existingFile = filer.getResource(StandardLocation.CLASS_OUTPUT, "", relativeName);
+            BufferedReader r = new BufferedReader(new InputStreamReader(existingFile.openInputStream(), "UTF-8"));
+            String line;
+            while((line=r.readLine())!=null)
+            {
+                if(!line.matches(" *#"))
+                {
+                    factoryImplementations.get(serviceName).add(line);
+                }
+            }
+            r.close();
+        }
+        catch (FileNotFoundException e)
+        {
+            // no existing file (ignore)
+        }
+        catch (IOException e)
+        {
+            processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
+                                                     "Error loading existing services file: " + relativeName
+                                                     + " - " + e.getLocalizedMessage());
+        }
+        return relativeName;
+    }
+
+}

Added: qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/plugin/PluggableService.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/plugin/PluggableService.java?rev=1590547&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/plugin/PluggableService.java (added)
+++ qpid/trunk/qpid/java/broker-codegen/src/main/java/org/apache/qpid/server/plugin/PluggableService.java Mon Apr 28 02:25:27 2014
@@ -0,0 +1,28 @@
+package org.apache.qpid.server.plugin;/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.SOURCE)
+public @interface PluggableService
+{
+}

Added: qpid/trunk/qpid/java/broker-codegen/src/main/resources/META-INF/services/javax.annotation.processing.Processor
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-codegen/src/main/resources/META-INF/services/javax.annotation.processing.Processor?rev=1590547&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-codegen/src/main/resources/META-INF/services/javax.annotation.processing.Processor (added)
+++ qpid/trunk/qpid/java/broker-codegen/src/main/resources/META-INF/services/javax.annotation.processing.Processor Mon Apr 28 02:25:27 2014
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+org.apache.qpid.server.model.ConfiguredObjectFactoryGenerator
+org.apache.qpid.server.plugin.PluggableProcessor

Modified: qpid/trunk/qpid/java/broker-core/build.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/build.xml?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/build.xml (original)
+++ qpid/trunk/qpid/java/broker-core/build.xml Mon Apr 28 02:25:27 2014
@@ -19,7 +19,7 @@
  -
  -->
 <project name="AMQ Broker" default="build">
-    <property name="module.depends" value="management/common common"/>
+    <property name="module.depends" value="management/common common broker-codegen"/>
     <property name="module.test.depends" value="qpid-test-utils" />
     <property name="module.genpom" value="true"/>
 

Modified: qpid/trunk/qpid/java/broker-core/pom.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/pom.xml?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/pom.xml (original)
+++ qpid/trunk/qpid/java/broker-core/pom.xml Mon Apr 28 02:25:27 2014
@@ -46,6 +46,13 @@
     </dependency>
 
     <dependency>
+      <groupId>org.apache.qpid</groupId>
+      <artifactId>qpid-broker-codegen</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
       <version>${log4j-version}</version>

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingFactory.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingFactory.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingFactory.java Mon Apr 28 02:25:27 2014
@@ -27,8 +27,10 @@ import org.apache.qpid.server.model.Abst
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Exchange;
 import org.apache.qpid.server.model.Queue;
+import org.apache.qpid.server.plugin.PluggableService;
 import org.apache.qpid.server.queue.AMQQueue;
 
+@PluggableService
 public class BindingFactory extends AbstractConfiguredObjectTypeFactory<BindingImpl>
 {
     public BindingFactory()

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/factory/JsonConfigurationStoreFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/factory/JsonConfigurationStoreFactory.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/factory/JsonConfigurationStoreFactory.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/factory/JsonConfigurationStoreFactory.java Mon Apr 28 02:25:27 2014
@@ -26,7 +26,9 @@ import org.apache.qpid.server.configurat
 import org.apache.qpid.server.configuration.store.JsonConfigurationEntryStore;
 import org.apache.qpid.server.model.SystemContext;
 import org.apache.qpid.server.plugin.ConfigurationStoreFactory;
+import org.apache.qpid.server.plugin.PluggableService;
 
+@PluggableService
 public class JsonConfigurationStoreFactory implements ConfigurationStoreFactory
 {
     @Override

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/factory/MemoryConfigurationStoreFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/factory/MemoryConfigurationStoreFactory.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/factory/MemoryConfigurationStoreFactory.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/factory/MemoryConfigurationStoreFactory.java Mon Apr 28 02:25:27 2014
@@ -26,7 +26,9 @@ import org.apache.qpid.server.configurat
 import org.apache.qpid.server.configuration.store.MemoryConfigurationEntryStore;
 import org.apache.qpid.server.model.SystemContext;
 import org.apache.qpid.server.plugin.ConfigurationStoreFactory;
+import org.apache.qpid.server.plugin.PluggableService;
 
+@PluggableService
 public class MemoryConfigurationStoreFactory  implements ConfigurationStoreFactory
 {
     @Override

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java Mon Apr 28 02:25:27 2014
@@ -40,6 +40,7 @@ import org.apache.qpid.server.filter.Mes
 import org.apache.qpid.server.message.InstanceProperties;
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.plugin.ExchangeType;
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.queue.BaseQueue;
@@ -137,6 +138,7 @@ public class DirectExchange extends Abst
 
     public static final ExchangeType<DirectExchange> TYPE = new DirectExchangeType();
 
+    @ManagedObjectFactoryConstructor
     public DirectExchange(final Map<String, Object> attributes, final VirtualHostImpl vhost)
     {
         super(attributes, vhost);

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchangeType.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchangeType.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchangeType.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchangeType.java Mon Apr 28 02:25:27 2014
@@ -24,8 +24,10 @@ import java.util.Map;
 
 import org.apache.qpid.exchange.ExchangeDefaults;
 import org.apache.qpid.server.plugin.ExchangeType;
+import org.apache.qpid.server.plugin.PluggableService;
 import org.apache.qpid.server.virtualhost.VirtualHostImpl;
 
+@PluggableService
 public class DirectExchangeType implements ExchangeType<DirectExchange>
 {
     @Override

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java Mon Apr 28 02:25:27 2014
@@ -37,6 +37,7 @@ import org.apache.qpid.server.filter.Mes
 import org.apache.qpid.server.message.InstanceProperties;
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.plugin.ExchangeType;
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.queue.BaseQueue;
@@ -67,6 +68,7 @@ public class FanoutExchange extends Abst
 
     public static final ExchangeType<FanoutExchange> TYPE = new FanoutExchangeType();
 
+    @ManagedObjectFactoryConstructor
     public FanoutExchange(final Map<String, Object> attributes, final VirtualHostImpl vhost)
     {
         super(attributes, vhost);

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchangeType.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchangeType.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchangeType.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchangeType.java Mon Apr 28 02:25:27 2014
@@ -24,8 +24,10 @@ import java.util.Map;
 
 import org.apache.qpid.exchange.ExchangeDefaults;
 import org.apache.qpid.server.plugin.ExchangeType;
+import org.apache.qpid.server.plugin.PluggableService;
 import org.apache.qpid.server.virtualhost.VirtualHostImpl;
 
+@PluggableService
 public class FanoutExchangeType implements ExchangeType<FanoutExchange>
 {
     @Override

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java Mon Apr 28 02:25:27 2014
@@ -35,6 +35,7 @@ import org.apache.qpid.server.filter.Fil
 import org.apache.qpid.server.message.InstanceProperties;
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.plugin.ExchangeType;
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.queue.BaseQueue;
@@ -82,6 +83,7 @@ public class HeadersExchange extends Abs
 
     public static final ExchangeType<HeadersExchange> TYPE = new HeadersExchangeType();
 
+    @ManagedObjectFactoryConstructor
     public HeadersExchange(final Map<String, Object> attributes, final VirtualHostImpl vhost)
     {
         super(attributes, vhost);

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchangeType.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchangeType.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchangeType.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchangeType.java Mon Apr 28 02:25:27 2014
@@ -24,8 +24,10 @@ import java.util.Map;
 
 import org.apache.qpid.exchange.ExchangeDefaults;
 import org.apache.qpid.server.plugin.ExchangeType;
+import org.apache.qpid.server.plugin.PluggableService;
 import org.apache.qpid.server.virtualhost.VirtualHostImpl;
 
+@PluggableService
 public class HeadersExchangeType implements ExchangeType<HeadersExchange>
 {
     @Override

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java Mon Apr 28 02:25:27 2014
@@ -41,6 +41,7 @@ import org.apache.qpid.server.filter.Fil
 import org.apache.qpid.server.message.InstanceProperties;
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.plugin.ExchangeType;
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.queue.BaseQueue;
@@ -62,6 +63,7 @@ public class TopicExchange extends Abstr
 
     private final Map<BindingImpl, Map<String,Object>> _bindings = new HashMap<BindingImpl, Map<String,Object>>();
 
+    @ManagedObjectFactoryConstructor
     public TopicExchange(final Map<String,Object> attributes, final VirtualHostImpl vhost)
     {
         super(attributes, vhost);

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchangeType.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchangeType.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchangeType.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchangeType.java Mon Apr 28 02:25:27 2014
@@ -24,8 +24,10 @@ import java.util.Map;
 
 import org.apache.qpid.exchange.ExchangeDefaults;
 import org.apache.qpid.server.plugin.ExchangeType;
+import org.apache.qpid.server.plugin.PluggableService;
 import org.apache.qpid.server.virtualhost.VirtualHostImpl;
 
+@PluggableService
 public class TopicExchangeType implements ExchangeType<TopicExchange>
 {
     @Override

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/internal/InternalMessageMetaDataType.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/internal/InternalMessageMetaDataType.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/internal/InternalMessageMetaDataType.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/internal/InternalMessageMetaDataType.java Mon Apr 28 02:25:27 2014
@@ -20,16 +20,18 @@
  */
 package org.apache.qpid.server.message.internal;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.nio.ByteBuffer;
+
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.plugin.MessageMetaDataType;
+import org.apache.qpid.server.plugin.PluggableService;
 import org.apache.qpid.server.store.StoredMessage;
 import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
 import org.apache.qpid.util.ByteBufferInputStream;
 
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.nio.ByteBuffer;
-
+@PluggableService
 public class InternalMessageMetaDataType implements MessageMetaDataType<InternalMessageMetaData>
 {
     public static final int INTERNAL_ORDINAL = 999;

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java Mon Apr 28 02:25:27 2014
@@ -942,7 +942,6 @@ public abstract class AbstractConfigured
 
     }
 
-
     protected void deleted()
     {
         for (ConfiguredObject<?> parent : _parents.values())

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java Mon Apr 28 02:25:27 2014
@@ -65,7 +65,7 @@ abstract public class AbstractConfigured
     {
 
         if(!parents[0].getModel().getParentTypes((Class<? extends ConfiguredObject>) getCategoryClass()).contains(
-                parentClass))
+                Model.getCategory(parentClass)))
         {
             throw new IllegalArgumentException(parentClass.getSimpleName() + " is not a parent of " + _clazz.getSimpleName());
         }

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java Mon Apr 28 02:25:27 2014
@@ -44,41 +44,50 @@ public class ConfiguredObjectFactoryImpl
     public ConfiguredObjectFactoryImpl(Model model)
     {
         _model = model;
-
-        QpidServiceLoader<ConfiguredObjectTypeFactory> serviceLoader = new QpidServiceLoader<ConfiguredObjectTypeFactory>();
-        Iterable<ConfiguredObjectTypeFactory> allFactories = serviceLoader.instancesOf(ConfiguredObjectTypeFactory.class);
-        for(ConfiguredObjectTypeFactory factory : allFactories)
+        try
         {
-            final Class<? extends ConfiguredObject> categoryClass = factory.getCategoryClass();
-            final String categoryName = categoryClass.getSimpleName();
-
-            Map<String, ConfiguredObjectTypeFactory> categoryFactories = _allFactories.get(categoryName);
-            if(categoryFactories == null)
+            QpidServiceLoader<ConfiguredObjectTypeFactory> serviceLoader =
+                    new QpidServiceLoader<ConfiguredObjectTypeFactory>();
+            Iterable<ConfiguredObjectTypeFactory> allFactories =
+                    serviceLoader.instancesOf(ConfiguredObjectTypeFactory.class);
+            for (ConfiguredObjectTypeFactory factory : allFactories)
             {
-                categoryFactories = new HashMap<String, ConfiguredObjectTypeFactory>();
-                _allFactories.put(categoryName, categoryFactories);
-                _supportedTypes.put(categoryName, new ArrayList<String>());
-                ManagedObject annotation = categoryClass.getAnnotation(ManagedObject.class);
-                if(annotation != null && !"".equals(annotation.defaultType()))
+                final Class<? extends ConfiguredObject> categoryClass = factory.getCategoryClass();
+                final String categoryName = categoryClass.getSimpleName();
+
+                Map<String, ConfiguredObjectTypeFactory> categoryFactories = _allFactories.get(categoryName);
+                if (categoryFactories == null)
                 {
-                    _defaultTypes.put(categoryName, annotation.defaultType());
+                    categoryFactories = new HashMap<String, ConfiguredObjectTypeFactory>();
+                    _allFactories.put(categoryName, categoryFactories);
+                    _supportedTypes.put(categoryName, new ArrayList<String>());
+                    ManagedObject annotation = categoryClass.getAnnotation(ManagedObject.class);
+                    if (annotation != null && !"".equals(annotation.defaultType()))
+                    {
+                        _defaultTypes.put(categoryName, annotation.defaultType());
+                    }
+                    else
+                    {
+                        _defaultTypes.put(categoryName, categoryName);
+                    }
+
                 }
-                else
+                if (categoryFactories.put(factory.getType(), factory) != null)
                 {
-                    _defaultTypes.put(categoryName, categoryName);
+                    throw new ServerScopedRuntimeException(
+                            "Misconfiguration - there is more than one factory defined for class " + categoryName
+                            + " with type " + factory.getType());
+                }
+                if (factory.getType() != null)
+                {
+                    _supportedTypes.get(categoryName).add(factory.getType());
                 }
-
-            }
-            if(categoryFactories.put(factory.getType(),factory) != null)
-            {
-                throw new ServerScopedRuntimeException("Misconfiguration - there is more than one factory defined for class " + categoryName
-                                                       + " with type " + factory.getType());
-            }
-            if(factory.getType() != null)
-            {
-                _supportedTypes.get(categoryName).add(factory.getType());
             }
         }
+        catch (RuntimeException | Error e)
+        {
+            e.printStackTrace();
+        }
     }
 
     @Override

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java Mon Apr 28 02:25:27 2014
@@ -100,7 +100,7 @@ public class BrokerAdapter extends Abstr
     @ManagedAttributeField
     private boolean _statisticsReportingResetEnabled;
 
-
+    @ManagedObjectFactoryConstructor
     public BrokerAdapter(Map<String, Object> attributes,
                          SystemContext parent)
     {

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileBasedGroupProviderImpl.java Mon Apr 28 02:25:27 2014
@@ -44,6 +44,7 @@ import org.apache.qpid.server.model.Grou
 import org.apache.qpid.server.model.GroupProvider;
 import org.apache.qpid.server.model.IllegalStateTransitionException;
 import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.server.security.access.Operation;
@@ -67,6 +68,7 @@ public class FileBasedGroupProviderImpl
     @ManagedAttributeField
     private String _path;
 
+    @ManagedObjectFactoryConstructor
     public FileBasedGroupProviderImpl(Map<String, Object> attributes,
                                       Broker broker)
     {

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderImpl.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderImpl.java Mon Apr 28 02:25:27 2014
@@ -53,6 +53,7 @@ import org.apache.qpid.server.model.Brok
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.IllegalStateTransitionException;
 import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.util.MapValueConverter;
 
@@ -72,6 +73,7 @@ public class FileSystemPreferencesProvid
 
     private boolean _open;
 
+    @ManagedObjectFactoryConstructor
     public FileSystemPreferencesProviderImpl(Map<String, Object> attributes,
                                              AuthenticationProvider<? extends AuthenticationProvider> authenticationProvider)
     {

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java?rev=1590547&r1=1590546&r2=1590547&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java Mon Apr 28 02:25:27 2014
@@ -38,10 +38,10 @@ import org.apache.qpid.server.logging.me
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.KeyStore;
 import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.model.Protocol;
 import org.apache.qpid.server.model.Transport;
 import org.apache.qpid.server.model.TrustStore;
-import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.plugin.QpidServiceLoader;
 import org.apache.qpid.server.plugin.TransportProviderFactory;
 import org.apache.qpid.server.transport.AcceptingTransport;
@@ -67,6 +67,7 @@ public class AmqpPortImpl extends Abstra
     private final Broker<?> _broker;
     private AcceptingTransport _transport;
 
+    @ManagedObjectFactoryConstructor
     public AmqpPortImpl(Map<String, Object> attributes, Broker<?> broker)
     {
         super(attributes, broker);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org