#
# 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.model.SystemConfigFactoryGenerator
org.apache.qpid.server.plugin.PluggableProcessor
org.apache.qpid.server.model.ConfiguredObjectRegistrationGenerator
org.apache.qpid.server.model.validation.AttributeAnnotationValidator
org.apache.qpid.server.model.validation.AttributeFieldValidation
org.apache.qpid.server.model.validation.ManagedAnnotationValidator
org.apache.qpid.server.model.validation.OperationAnnotationValidator
org.apache.qpid.server.model.validation.ContentHeaderAnnotationValidator
org.apache.qpid.server.model.validation.ManagedAttributeValueTypeValidator
org.apache.qpid.server.protocol.v1_0.CompositeTypeConstructorGenerator
