Merge "Removed unused private variable containerAwareRegistration - please review...
authorGiovanni Meo <gmeo@cisco.com>
Wed, 15 May 2013 13:57:37 +0000 (13:57 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Wed, 15 May 2013 13:57:37 +0000 (13:57 +0000)
109 files changed:
opendaylight/arphandler/src/main/java/org/opendaylight/controller/arphandler/internal/ArpHandler.java
opendaylight/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTracker.java
opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/Controller.java
opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/MessageReadWriteService.java
opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/PriorityMessage.java
opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SecureMessageReadWriteService.java
opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchHandler.java
opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DataPacketMuxDemux.java
opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DiscoveryService.java
opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/OFStatisticsManager.java
opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6FlowMod.java
opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6Match.java
opendaylight/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/DijkstraImplementation.java
opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDP.java
opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/Packet.java
opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/PathTest.java
opendaylight/sal/yang-prototype/code-generator/binding-generator-impl/src/test/java/org/opendaylight/controller/sal/binding/generator/impl/GeneratedTypesTest.java
opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/controller/sal/java/api/generator/test/GeneratorJavaFileTest.java
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/java/org/opendaylight/controller/yang2sources/plugin/it/CombineTest.java [deleted file]
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/java/org/opendaylight/controller/yang2sources/plugin/it/YangToResourcesPluginTest.java [deleted file]
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/java/org/opendaylight/controller/yang2sources/plugin/it/YangToSourcesPluginTest.java
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/Correct/pom.xml
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/Correct_resources/pom.xml
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/Generator/pom.xml [moved from opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/Correct_combined/pom.xml with 93% similarity]
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/NoGenerators/pom.xml
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/NoGenerators_resources/pom.xml
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/NoOutputDir/pom.xml [new file with mode: 0644]
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/NoYangFiles/pom.xml
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/UnknownGenerator/pom.xml
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/UnknownGenerator_resources/pom.xml
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/YangRootNotExist/pom.xml
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/pom.xml
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/main/java/org/opendaylight/controller/yang2sources/plugin/ConfigArg.java
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/main/java/org/opendaylight/controller/yang2sources/plugin/Util.java
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/main/java/org/opendaylight/controller/yang2sources/plugin/YangToResourcesMojo.java [deleted file]
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/main/java/org/opendaylight/controller/yang2sources/plugin/YangToSourcesMojo.java
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/test/java/org/opendaylight/controller/yang2sources/plugin/GenerateResourcesTest.java [deleted file]
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/test/java/org/opendaylight/controller/yang2sources/plugin/GenerateSourcesTest.java
opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/test/java/org/opendaylight/controller/yang2sources/plugin/UtilTest.java
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/AbstractChildNodeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/AbstractChildNodeBuilder.java with 95% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/AbstractTypeAwareBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/AbstractTypeAwareBuilder.java with 93% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/AugmentationSchemaBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/AugmentationSchemaBuilder.java with 94% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/AugmentationTargetBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/AugmentationTargetBuilder.java with 90% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/Builder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/Builder.java with 86% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/ChildNodeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/ChildNodeBuilder.java with 85% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/DataSchemaNodeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/DataSchemaNodeBuilder.java with 82% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/GroupingBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/GroupingBuilder.java with 90% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/SchemaNodeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/SchemaNodeBuilder.java with 83% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/TypeAwareBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/TypeAwareBuilder.java with 91% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/TypeDefinitionAwareBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/TypeDefinitionAwareBuilder.java with 89% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/TypeDefinitionBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/TypeDefinitionBuilder.java with 88% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/api/UsesNodeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/api/UsesNodeBuilder.java with 86% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AnyXmlBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/AnyXmlBuilder.java with 98% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/AugmentationSchemaBuilderImpl.java with 95% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ChoiceBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/ChoiceBuilder.java with 94% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ChoiceCaseBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/ChoiceCaseBuilder.java with 96% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ConstraintsBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/ConstraintsBuilder.java with 98% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ContainerSchemaNodeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/ContainerSchemaNodeBuilder.java with 94% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/DeviationBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/DeviationBuilder.java with 95% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ExtensionBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/ExtensionBuilder.java with 97% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/FeatureBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/FeatureBuilder.java with 97% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/GroupingBuilderImpl.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/GroupingBuilderImpl.java with 96% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentitySchemaNodeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/IdentitySchemaNodeBuilder.java with 97% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/IdentityrefTypeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/IdentityrefTypeBuilder.java with 95% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/LeafListSchemaNodeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/LeafListSchemaNodeBuilder.java with 96% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/LeafSchemaNodeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/LeafSchemaNodeBuilder.java with 96% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ListSchemaNodeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/ListSchemaNodeBuilder.java with 94% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/ModuleBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/ModuleBuilder.java with 97% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/NotificationBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/NotificationBuilder.java with 93% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/RpcDefinitionBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/RpcDefinitionBuilder.java with 95% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/TypedefBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/TypedefBuilder.java with 94% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnionTypeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/UnionTypeBuilder.java with 95% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UnknownSchemaNodeBuilder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/UnknownSchemaNodeBuilder.java with 97% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UsesNodeBuilderImpl.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/builder/impl/UsesNodeBuilderImpl.java with 90% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangParserImpl.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/impl/YangParserImpl.java with 95% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangParserListenerImpl.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/impl/YangParserListenerImpl.java with 94% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/impl/YangValidationException.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/impl/YangValidationException.java with 92% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/BitImpl.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/util/BitImpl.java with 98% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/ModuleDependencySort.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/util/ModuleDependencySort.java with 95% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/MustDefinitionImpl.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/util/MustDefinitionImpl.java with 98% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/ParserUtils.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/util/ParserUtils.java with 82% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/RefineHolder.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/util/RefineHolder.java with 92% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/TopologicalSort.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/util/TopologicalSort.java with 98% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/TypeConstraints.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/util/TypeConstraints.java with 99% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/UnknownBoundaryNumber.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/util/UnknownBoundaryNumber.java with 94% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/YangModelBuilderUtil.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/util/YangModelBuilderUtil.java with 99% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/YangParseException.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/util/YangParseException.java with 96% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/util/YangValidationException.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/util/YangValidationException.java with 92% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/validator/BasicValidations.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/validator/BasicValidations.java with 98% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/validator/ValidationUtil.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/validator/ValidationUtil.java with 93% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/validator/YangModelBasicValidationListener.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/validator/YangModelBasicValidationListener.java with 99% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/validator/YangModelBasicValidator.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/validator/YangModelBasicValidator.java with 90% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TestUtils.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/parser/impl/TestUtils.java with 98% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/TypesResolutionTest.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/parser/impl/TypesResolutionTest.java with 99% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/impl/YangParserTest.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/parser/impl/YangParserTest.java with 99% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/util/ModuleDependencySortTest.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/parser/util/ModuleDependencySortTest.java with 92% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/parser/util/TopologicalSortTest.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/parser/util/TopologicalSortTest.java with 85% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/validator/YangModelValidationListTest.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/validator/YangModelValidationListTest.java with 94% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/validator/YangModelValidationModuleTest.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/validator/YangModelValidationModuleTest.java with 96% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/validator/YangModelValidationSubModuleTest.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/validator/YangModelValidationSubModuleTest.java with 91% similarity]
opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/validator/YangModelValidationTest.java [moved from opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/test/java/org/opendaylight/controller/yang/model/validator/YangModelValidationTest.java with 97% similarity]
opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/SimpleForwardingImpl.java
opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerImpl.java
opendaylight/web/devices/src/main/resources/WEB-INF/jsp/autherror.jsp
opendaylight/web/flows/src/main/resources/WEB-INF/jsp/autherror.jsp
opendaylight/web/root/src/main/resources/WEB-INF/jsp/autherror.jsp
opendaylight/web/topology/src/main/java/org/opendaylight/controller/topology/web/Topology.java
opendaylight/web/topology/src/main/resources/WEB-INF/jsp/autherror.jsp
opendaylight/web/troubleshoot/src/main/resources/WEB-INF/jsp/autherror.jsp

index 3730a71f1e05db48ca74031424feaf54a26f3317..26a86c53a4694ff45ca4fbdf2ff7dbc1a2721dcb 100644 (file)
@@ -156,9 +156,11 @@ public class ArpHandler implements IHostFinder, IListenDataPacket {
          * This is to avoid continuous flooding
          */
         if (Arrays.equals(sourceMAC, getControllerMAC())) {
-            logger.debug(
+            if (logger.isDebugEnabled()) {
+              logger.debug(
                     "Receive the self originated packet (srcMAC {}) --> DROP",
                     HexEncode.bytesToHexString(sourceMAC));
+            }
             return;
         }
 
@@ -167,18 +169,16 @@ public class ArpHandler implements IHostFinder, IListenDataPacket {
             subnet = switchManager.getSubnetByNetworkAddress(sourceIP);
         }
         if (subnet == null) {
-            logger.debug("can't find subnet matching {}, drop packet", sourceIP
-                    .toString());
+            logger.debug("can't find subnet matching {}, drop packet",sourceIP);
             return;
         }
-        logger.debug("Found {} matching {}", subnet.toString(), sourceIP
-                .toString());
+        logger.debug("Found {} matching {}", subnet, sourceIP);
         /*
          * Make sure that the host is a legitimate member of this subnet
          */
         if (!subnet.hasNodeConnector(p)) {
             logger.debug("{} showing up on {} does not belong to {}",
-                    new Object[] { sourceIP.toString(), p, subnet.toString() });
+                    new Object[] { sourceIP, p, subnet });
             return;
         }
 
@@ -364,18 +364,17 @@ public class ArpHandler implements IHostFinder, IListenDataPacket {
     }
 
     public void find(InetAddress networkAddress) {
-        logger.debug("Received find IP {}", networkAddress.toString());
+        logger.debug("Received find IP {}", networkAddress);
 
         Subnet subnet = null;
         if (switchManager != null) {
             subnet = switchManager.getSubnetByNetworkAddress(networkAddress);
         }
         if (subnet == null) {
-            logger.debug("can't find subnet matching IP {}", networkAddress
-                    .toString());
+            logger.debug("can't find subnet matching IP {}", networkAddress);
             return;
         }
-        logger.debug("found subnet {}", subnet.toString());
+        logger.debug("found subnet {}", subnet);
 
         // send a broadcast ARP Request to this interface
         sendBcastARPRequest(networkAddress, subnet);
@@ -394,7 +393,7 @@ public class ArpHandler implements IHostFinder, IListenDataPacket {
         }
         if (subnet == null) {
             logger.debug("can't find subnet matching {}", host
-                    .getNetworkAddress().toString());
+                    .getNetworkAddress());
             return;
         }
         sendUcastARPRequest(host, subnet);
@@ -419,11 +418,10 @@ public class ArpHandler implements IHostFinder, IListenDataPacket {
             subnet = switchManager.getSubnetByNetworkAddress(dIP);
         }
         if (subnet == null) {
-            logger.debug("can't find subnet matching {}, drop packet", dIP
-                    .toString());
+            logger.debug("can't find subnet matching {}, drop packet", dIP);
             return;
         }
-        logger.debug("Found {} matching {}", subnet.toString(), dIP.toString());
+        logger.debug("Found {} matching {}", subnet, dIP);
         /*
          * unknown destination host, initiate ARP request
          */
index f416f29a25c639341f0b512d9c3b2555c49f6890..f5123eb4d0dc3393cebeb1bdae0b864a626ccc64 100644 (file)
@@ -394,8 +394,7 @@ public class HostTracker implements IfIptoHost, IfHostListener,
         arphost.setHostIP(networkAddr);
         arphost.setSent_count((short) 1);
         ARPPendingList.add(arphost);
-        logger.debug("Host Added to ARPPending List, IP: {}",
-                networkAddr.toString());
+        logger.debug("Host Added to ARPPending List, IP: {}", networkAddr);
     }
 
     private void removePendingARPFromList(int index) {
@@ -434,7 +433,7 @@ public class HostTracker implements IfIptoHost, IfHostListener,
                  */
                 removePendingARPFromList(i);
                 logger.debug("Host Removed from ARPPending List, IP: {}",
-                        networkAddr.toString());
+                          networkAddr);
                 return;
             }
         }
@@ -452,7 +451,7 @@ public class HostTracker implements IfIptoHost, IfHostListener,
                  */
                 failedARPReqList.remove(i);
                 logger.debug("Host Removed from FailedARPReqList List, IP: {}",
-                        networkAddr.toString());
+                        networkAddr);
                 return;
             }
         }
@@ -708,7 +707,7 @@ public class HostTracker implements IfIptoHost, IfHostListener,
             for (String switchName : hierarchy) {
                 buf.append(switchName + "/");
             }
-            logger.debug("{} -> {}", getContainerName(), buf.toString());
+            logger.debug("{} -> {}", getContainerName(), buf);
             num++;
         }
     }
@@ -991,13 +990,15 @@ public class HostTracker implements IfIptoHost, IfHostListener,
                      * Use the services of arphandler to check if host is still
                      * there
                      */
-                    logger.trace(
-                            "ARP Probing ({}) for {}({})",
-                            new Object[] {
-                                    arp_cntdown,
-                                    host.getNetworkAddress().getHostAddress(),
-                                    HexEncode.bytesToHexString(host
-                                            .getDataLayerAddressBytes()) });
+                    if (logger.isTraceEnabled()) {
+                      logger.trace(
+                              "ARP Probing ({}) for {}({})",
+                              new Object[] {
+                                      arp_cntdown,
+                                      host.getNetworkAddress().getHostAddress(),
+                                      HexEncode.bytesToHexString(host
+                                              .getDataLayerAddressBytes()) });
+                    }
                     host.setArpSendCountDown(arp_cntdown);
                     hostFinder.probe(host);
                 }
@@ -1160,8 +1161,10 @@ public class HostTracker implements IfIptoHost, IfHostListener,
         switch (type) {
         case REMOVED:
             long sid = (Long) node.getID();
-            logger.debug("Received removedSwitch for sw id {}",
-                    HexEncode.longToHexString(sid));
+            if (logger.isDebugEnabled()) {
+              logger.debug("Received removedSwitch for sw id {}",
+                      HexEncode.longToHexString(sid));
+            }
             for (Entry<InetAddress, HostNodeConnector> entry : hostsDB
                     .entrySet()) {
                 HostNodeConnector host = entry.getValue();
index bfa6f0ba0ff341fafda217a03eb32614238efc2c..2863070cc5a7a34ff0f2d95475cd5a9359a443f3 100644 (file)
@@ -70,7 +70,7 @@ public class Controller implements IController, CommandProvider {
                         ISwitch existingSwitch = switches.get(sid);
                         if (existingSwitch != null) {
                             logger.info("Replacing existing {} with New {}",
-                                    existingSwitch.toString(), sw.toString());
+                                    existingSwitch, sw);
                             disconnectSwitch(existingSwitch);
                         }
                         switches.put(sid, sw);
@@ -175,20 +175,18 @@ public class Controller implements IController, CommandProvider {
     public void addMessageListener(OFType type, IMessageListener listener) {
         IMessageListener currentListener = this.messageListeners.get(type);
         if (currentListener != null) {
-            logger.warn("{} is already listened by {}", type.toString(),
-                    currentListener.toString());
+            logger.warn("{} is already listened by {}", type,
+                    currentListener);
         }
         this.messageListeners.put(type, listener);
-        logger.debug("{} is now listened by {}", type.toString(),
-                listener.toString());
+        logger.debug("{} is now listened by {}", type, listener);
     }
 
     @Override
     public void removeMessageListener(OFType type, IMessageListener listener) {
         IMessageListener currentListener = this.messageListeners.get(type);
         if ((currentListener != null) && (currentListener == listener)) {
-            logger.debug("{} listener {} is Removed", type.toString(),
-                    listener.toString());
+            logger.debug("{} listener {} is Removed", type, listener);
             this.messageListeners.remove(type);
         }
     }
@@ -197,19 +195,17 @@ public class Controller implements IController, CommandProvider {
     public void addSwitchStateListener(ISwitchStateListener listener) {
         if (this.switchStateListener != null) {
             logger.warn("Switch events are already listened by {}",
-                    this.switchStateListener.toString());
+                    this.switchStateListener);
         }
         this.switchStateListener = listener;
-        logger.debug("Switch events are now listened by {}",
-                listener.toString());
+        logger.debug("Switch events are now listened by {}", listener);
     }
 
     @Override
     public void removeSwitchStateListener(ISwitchStateListener listener) {
         if ((this.switchStateListener != null)
                 && (this.switchStateListener == listener)) {
-            logger.debug("SwitchStateListener {} is Removed",
-                    listener.toString());
+            logger.debug("SwitchStateListener {} is Removed", listener);
             this.switchStateListener = null;
         }
     }
@@ -242,7 +238,7 @@ public class Controller implements IController, CommandProvider {
         if (((SwitchHandler) sw).isOperational()) {
             Long sid = sw.getId();
             if (this.switches.remove(sid, sw)) {
-                logger.warn("{} is Disconnected", sw.toString());
+                logger.warn("{} is Disconnected", sw);
                 notifySwitchDeleted(sw);
             }
         }
index 3dd99e60064e181b26941985d45017ddfab97e23..d2dab0fc94483b4827890d087c996e0c9ebe3a09 100644 (file)
@@ -84,7 +84,7 @@ public class MessageReadWriteService implements IMessageReadWrite {
                 this.clientSelectionKey = this.socket.register(this.selector,
                         SelectionKey.OP_WRITE, this);
             }
-            logger.trace("Message sent: {}", msg.toString());
+            logger.trace("Message sent: {}", msg);
         }
     }
 
index 0c66dccd013b150e8c8631fdfe33f47b6b219ac2..6a2cb9e9c4f576949a79a1b63976605a3970d95f 100644 (file)
@@ -10,8 +10,6 @@ package org.opendaylight.controller.protocol_plugin.openflow.core.internal;
 
 import java.util.concurrent.atomic.AtomicLong;
 
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
 import org.openflow.protocol.OFMessage;
 
@@ -55,17 +53,41 @@ class PriorityMessage {
 
     @Override
     public int hashCode() {
-        return HashCodeBuilder.reflectionHashCode(this);
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((msg == null) ? 0 : msg.hashCode());
+        result = prime * result + priority;
+        result = prime * result + (int) (seqNum ^ (seqNum >>> 32));
+        result = prime * result + (syncReply ? 1231 : 1237);
+        return result;
     }
 
     @Override
     public boolean equals(Object obj) {
-        return EqualsBuilder.reflectionEquals(this, obj);
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        PriorityMessage other = (PriorityMessage) obj;
+        if (msg == null) {
+            if (other.msg != null)
+                return false;
+        } else if (!msg.equals(other.msg))
+            return false;
+        if (priority != other.priority)
+            return false;
+        if (seqNum != other.seqNum)
+            return false;
+        if (syncReply != other.syncReply)
+            return false;
+        return true;
     }
 
     @Override
     public String toString() {
-        return "PriorityMessage[" + ReflectionToStringBuilder.toString(this)
-                + "]";
+        return "PriorityMessage [msg=" + msg + ", priority=" + priority
+                + ", seqNum=" + seqNum + ", syncReply=" + syncReply + "]";
     }
 }
index 27a5cc690625d9f780f371cab12286db976e2a3d..43a64814d8498a1842ae9f4e2ce4ee75a08aca2f 100644 (file)
@@ -190,7 +190,7 @@ public class SecureMessageReadWriteService implements IMessageReadWrite {
                         SelectionKey.OP_READ, this);
             }
 
-            logger.trace("Message sent: {}", msg.toString());
+            logger.trace("Message sent: {}", msg);
         }
     }
 
index 9a05c3f4f100c46b2c357f59ae6256f4e497f491..91606f4a41daaeecd7cce64e0566c54e028ced82 100644 (file)
@@ -320,13 +320,13 @@ public class SwitchHandler implements ISwitch {
         }
 
         if (msgs == null) {
-            logger.debug("{} is down", toString());
+            logger.debug("{} is down", this);
             // the connection is down, inform core
             reportSwitchStateChange(false);
             return;
         }
         for (OFMessage msg : msgs) {
-            logger.trace("Message received: {}", msg.toString());
+            logger.trace("Message received: {}", msg);
             this.lastMsgReceivedTimeStamp = System.currentTimeMillis();
             OFType type = msg.getType();
             switch (type) {
@@ -418,7 +418,7 @@ public class SwitchHandler implements ISwitch {
                             // send a probe to see if the switch is still alive
                             logger.debug(
                                     "Send idle probe (Echo Request) to {}",
-                                    toString());
+                                    this);
                             probeSent = true;
                             OFMessage echo = factory
                                     .getMessage(OFType.ECHO_REQUEST);
@@ -462,7 +462,9 @@ public class SwitchHandler implements ISwitch {
                 || e instanceof InterruptedException
                 || e instanceof SocketException || e instanceof IOException
                 || e instanceof ClosedSelectorException) {
-            logger.debug("Caught exception {}", e.getMessage());
+            if (logger.isDebugEnabled()) {
+              logger.debug("Caught exception {}", e.getMessage());
+            }
         } else {
             logger.warn("Caught exception ", e);
         }
@@ -729,7 +731,7 @@ public class SwitchHandler implements ISwitch {
                     if (!transmitQ.isEmpty()) {
                         PriorityMessage pmsg = transmitQ.poll();
                         msgReadWriteService.asyncSend(pmsg.msg);
-                        logger.trace("Message sent: {}", pmsg.toString());
+                        logger.trace("Message sent: {}", pmsg);
                         /*
                          * If syncReply is set to true, wait for the response
                          * back.
@@ -883,8 +885,10 @@ public class SwitchHandler implements ISwitch {
                 // if result is not null, this means the switch can't handle
                 // this message
                 // the result if OFError already
-                logger.debug("Send {} failed --> {}", msg.getType().toString(),
-                        ((OFError) result).toString());
+                if (logger.isDebugEnabled()) {
+                  logger.debug("Send {} failed --> {}", msg.getType(),
+                               ((OFError) result));
+                }
             }
             return result;
         } catch (Exception e) {
index a8ebcb068b9399f0fee0c6b8dd6370e3b810b4d2..7614a4d128eae867ed4378f78e346da447c4d081 100644 (file)
@@ -195,13 +195,15 @@ public class DataPacketMuxDemux implements IContainerListener,
                         .get(GlobalConstants.DEFAULT.toString());
                 if (defaultOutService != null) {
                     defaultOutService.receiveDataPacket(dataPacket);
-                    logger.trace(
-                            "Dispatched to apps a frame of size: {} on container: {}: {}",
-                            new Object[] {
+                    if (logger.isTraceEnabled()) {
+                      logger.trace(
+                              "Dispatched to apps a frame of size: {} on " +
+                              "container: {}: {}", new Object[] {
                                     ofPacket.getPacketData().length,
                                     GlobalConstants.DEFAULT.toString(),
                                     HexEncode.bytesToHexString(dataPacket
                                             .getPacketData()) });
+                    }
                 }
                 // Now check the mapping between nodeConnector and
                 // Container and later on optimally filter based on
@@ -215,15 +217,15 @@ public class DataPacketMuxDemux implements IContainerListener,
                         if (s != null) {
                             // TODO add filtering on a per-flowSpec base
                             s.receiveDataPacket(dataPacket);
-                            logger.trace(
-                                    "Dispatched to apps a frame of size: {} on container: {}: {}",
-                                    new Object[] {
+                            if (logger.isTraceEnabled()) {
+                              logger.trace(
+                                      "Dispatched to apps a frame of size: {}" +
+                                      " on container: {}: {}", new Object[] {
                                             ofPacket.getPacketData().length,
-                                            GlobalConstants.DEFAULT.toString(),
-                                            HexEncode
-                                                    .bytesToHexString(dataPacket
-                                                            .getPacketData()) });
-
+                                            container,
+                                            HexEncode.bytesToHexString(dataPacket
+                                                    .getPacketData()) });
+                            }
                         }
                     }
                 }
index afc5b8c825843940a1e25a8642b8151c3dd68f2e..0cbaf67d9ed9452afc0927de7b9b487547663713 100644 (file)
@@ -294,11 +294,13 @@ public class DiscoveryService implements IInventoryShimExternalListener,
         }
         if (ethPkt.getPayload() instanceof LLDP) {
             NodeConnector dst = inPkt.getIncomingNodeConnector();
-            if (!processDiscoveryPacket(dst, ethPkt)) {
-                /* Snoop the discovery pkt if not generated from us */
-                snoopDiscoveryPacket(dst, ethPkt);
+            if (isEnabled(dst)) {
+                if (!processDiscoveryPacket(dst, ethPkt)) {
+                    /* Snoop the discovery pkt if not generated from us */
+                    snoopDiscoveryPacket(dst, ethPkt);
+                }
+                return PacketResult.CONSUME;
             }
-            return PacketResult.CONSUME;
         }
         return PacketResult.IGNORED;
     }
index 9dc8b3b6aa77f352a80ee58c5e358de0d331f46f..d6100e3fdc499c2bd53eb9eb45c414c70e8517d1 100644 (file)
@@ -176,7 +176,7 @@ public class OFStatisticsManager implements IOFStatisticsManager,
         descriptionListeners = new HashSet<IStatisticsListener>();
 
         configStatsPollIntervals();
-        
+
         // Initialize managed timers
         statisticsTimer = new Timer();
         statisticsTimerTask = new TimerTask() {
@@ -703,8 +703,10 @@ public class OFStatisticsManager implements IOFStatisticsManager,
         ByteBuffer data = ByteBuffer.allocate(length);
         stat.writeTo(data);
         data.rewind();
-        log.trace("getV6ReplyStatistics: Buffer BYTES ARE {}",
-                HexString.toHexString(data.array()));
+        if (log.isTraceEnabled()) {
+            log.trace("getV6ReplyStatistics: Buffer BYTES ARE {}",
+                    HexString.toHexString(data.array()));
+        }
 
         int vendor = data.getInt(); // first 4 bytes is vendor id.
         if (vendor != V6StatsRequest.NICIRA_VENDOR_ID) {
index 888d2e63ed745adc915d8ec45880e4d08ce276f9..53f4e1d5ad0e73f61219483fc16344d34ed0ca95 100644 (file)
@@ -204,7 +204,7 @@ public class V6FlowMod extends OFVendor implements Cloneable {
                 action.writeTo(data);
             }
         }
-        logger.trace("{}", this.toString());
+        logger.trace("{}", this);
     }
 
     /**
index 9921e826fce147fc29e4440b9d07c6f068e2b294..2da6b9b00891008850075e31920d02c01888ad16 100644 (file)
@@ -674,7 +674,7 @@ public class V6Match extends OFMatch implements Cloneable {
                 data.put(ipv6ext_dstport_msg);
             }
         }
-        logger.trace("{}", this.toString());
+        logger.trace("{}", this);
     }
 
     private void readInPort(ByteBuffer data, int nxmLen, boolean hasMask) {
index d878b231bcde7e71f4c3643970d2466d21e6629b..26ae86243b7b83279443b2a2a2b477aa85a4e179 100644 (file)
@@ -184,16 +184,14 @@ public class DijkstraImplementation implements IRouting, ITopologyManagerAware {
         try {
             path = mtp.getMaxThroughputPath(src, dst);
         } catch (IllegalArgumentException ie) {
-            log.debug("A vertex is yet not known between {} {}",
-                    src.toString(), dst.toString());
+            log.debug("A vertex is yet not known between {} {}", src, dst);
             return null;
         }
         Path res;
         try {
             res = new Path(path);
         } catch (ConstructionException e) {
-            log.debug("A vertex is yet not known between {} {}",
-                    src.toString(), dst.toString());
+            log.debug("A vertex is yet not known between {} {}", src, dst);
             return null;
         }
         return res;
@@ -208,16 +206,14 @@ public class DijkstraImplementation implements IRouting, ITopologyManagerAware {
         try {
             path = spt.getPath(src, dst);
         } catch (IllegalArgumentException ie) {
-            log.debug("A vertex is yet not known between {} {}",
-                    src.toString(), dst.toString());
+            log.debug("A vertex is yet not known between {} {}", src, dst);
             return null;
         }
         Path res;
         try {
             res = new Path(path);
         } catch (ConstructionException e) {
-            log.debug("A vertex is yet not known between {} {}",
-                    src.toString(), dst.toString());
+            log.debug("A vertex is yet not known between {} {}", src, dst);
             return null;
         }
         return res;
@@ -343,7 +339,9 @@ public class DijkstraImplementation implements IRouting, ITopologyManagerAware {
         if (props != null)
             props.remove(bw);
 
-        log.debug("edgeUpdate: {} bw: {}", e.toString(), bw.getValue());
+        if (log.isDebugEnabled()) {
+          log.debug("edgeUpdate: {} bw: {}", e, bw.getValue());
+        }
 
         Short baseBW = Short.valueOf((short) 0);
         boolean add = (type == UpdateType.ADDED) ? true : false;
index 5e7a214f0ea9d723c641c157b6c187b1fd59b87b..562d03b7abe503088664c28d5ecb04bb546b1258 100644 (file)
@@ -171,8 +171,10 @@ public class LLDP extends Packet {
         int lldpOffset = bitOffset; // LLDP start
         int lldpSize = size; // LLDP size
 
-        logger.trace("LLDP: {} (offset {} bitsize {})", new Object[] {
-                HexEncode.bytesToHexString(data), lldpOffset, lldpSize });
+        if (logger.isTraceEnabled()) {
+          logger.trace("LLDP: {} (offset {} bitsize {})", new Object[] {
+                  HexEncode.bytesToHexString(data), lldpOffset, lldpSize });
+        }
         /*
          * Deserialize the TLVs until we reach the end of the packet
          */
@@ -212,8 +214,10 @@ public class LLDP extends Packet {
             throw new PacketException(e.getMessage());
         }
 
-        logger.trace("LLDP: serialized: {}",
-                HexEncode.bytesToHexString(serializedBytes));
+        if (logger.isTraceEnabled()) {
+          logger.trace("LLDP: serialized: {}",
+                  HexEncode.bytesToHexString(serializedBytes));
+        }
         return serializedBytes;
     }
 
index 95f0ca8617cf8d5951ac616393abebeab51acbc0..446ec3e230e8bd11d0b9dc7451f8824b12adfda6 100644 (file)
@@ -109,10 +109,12 @@ public abstract class Packet {
              * Store the raw read value, checks the payload type and set the
              * payloadClass accordingly
              */
-            logger.trace("{}: {}: {} (offset {} bitsize {})",
-                    new Object[] { this.getClass().getSimpleName(), hdrField,
-                            HexEncode.bytesToHexString(hdrFieldBytes),
-                            startOffset, numBits });
+            if (logger.isTraceEnabled()) {
+              logger.trace("{}: {}: {} (offset {} bitsize {})",
+                      new Object[] { this.getClass().getSimpleName(), hdrField,
+                              HexEncode.bytesToHexString(hdrFieldBytes),
+                              startOffset, numBits });
+            }
 
             this.setHeaderField(hdrField, hdrFieldBytes);
         }
@@ -189,8 +191,10 @@ public abstract class Packet {
         }
         postSerializeCustomOperation(headerBytes);
 
-        logger.trace("{}: {}", this.getClass().getSimpleName(),
-                HexEncode.bytesToHexString(headerBytes));
+        if (logger.isTraceEnabled()) {
+          logger.trace("{}: {}", this.getClass().getSimpleName(),
+                  HexEncode.bytesToHexString(headerBytes));
+        }
         return headerBytes;
     }
 
index 9058156b9e05ba607946f0dcb0b2b0dcfea142e6..656dd8ea5bf45b35d65f56e3ff71276967527aa9 100644 (file)
@@ -63,7 +63,8 @@ public class PathTest {
             Edge e2 = new Edge(c2, c3);
             Edge e3 = new Edge(c3, c4);
             Edge e4 = new Edge(c4, c5);
-            edges = new LinkedList(Arrays.asList(e0, e1, e2, e3, e4));
+            // actually need a LinkedList because we're going to .remove()
+            edges = new LinkedList<Edge>(Arrays.asList(e0, e1, e2, e3, e4));
         } catch (ConstructionException e) {
             // Exception is NOT expected if raised test will fail
             Assert.assertTrue(false);
@@ -130,7 +131,7 @@ public class PathTest {
             Edge e2 = new Edge(c2, c3);
             Edge e3 = new Edge(c3, c4);
             Edge e4 = new Edge(c4, c5);
-            edges1 = new LinkedList(Arrays.asList(e0, e1, e2, e3, e4));
+            edges1 = Arrays.asList(e0, e1, e2, e3, e4);
         } catch (ConstructionException e) {
             // Exception is NOT expected if raised test will fail
             Assert.assertTrue(false);
@@ -168,7 +169,7 @@ public class PathTest {
             Edge e2 = new Edge(c2, c3);
             Edge e3 = new Edge(c3, c4);
             Edge e4 = new Edge(c4, c5);
-            edges2 = new LinkedList(Arrays.asList(e0, e1, e2, e3, e4));
+            edges2 = Arrays.asList(e0, e1, e2, e3, e4);
         } catch (ConstructionException e) {
             // Exception is NOT expected if raised test will fail
             Assert.assertTrue(false);
@@ -206,7 +207,7 @@ public class PathTest {
             Edge e2 = new Edge(c2, c3);
             Edge e3 = new Edge(c3, c4);
             Edge e4 = new Edge(c4, c5);
-            edges3 = new LinkedList(Arrays.asList(e0, e1, e2, e3, e4));
+            edges3 = Arrays.asList(e0, e1, e2, e3, e4);
         } catch (ConstructionException e) {
             // Exception is NOT expected if raised test will fail
             Assert.assertTrue(false);
@@ -257,7 +258,7 @@ public class PathTest {
 
             Edge e0 = new Edge(c0, c1);
 
-            Path path = new Path(new LinkedList(Arrays.asList(e0)));
+            Path path = new Path(Arrays.asList(e0));
         } catch (ConstructionException e) {
             // Exception is NOT expected if raised test will fail
             Assert.assertTrue(false);
@@ -299,7 +300,7 @@ public class PathTest {
             Edge e2 = new Edge(c2, c3);
             Edge e3 = new Edge(c3, c4);
             Edge e4 = new Edge(c4, c5);
-            List<Edge> edges = new LinkedList(Arrays.asList(e0, e1, e2, e3, e4));
+            List<Edge> edges = Arrays.asList(e0, e1, e2, e3, e4);
             Path path = new Path(edges);
 
             // Test start node
@@ -325,7 +326,7 @@ public class PathTest {
                             (short) 0x1), n1);
 
             Edge e0 = new Edge(c0, c1);
-            List<Edge> edges = new LinkedList(Arrays.asList(e0));
+            List<Edge> edges = Arrays.asList(e0);
             Path path = new Path(edges);
 
             // Test start node
index cf9ecdd937e30e9cd4d29fdd6607103ff83b0d7a..92d9359130967008ccc76ea4bccb4f510023d8d6 100644 (file)
@@ -25,7 +25,7 @@ import org.opendaylight.controller.sal.binding.model.api.Type;
 import org.opendaylight.controller.yang.model.api.Module;
 import org.opendaylight.controller.yang.model.api.SchemaContext;
 import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserImpl;
+import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
 
 public class GeneratedTypesTest {
 
index 0e2d9e4c40b901eb30bde73b454d3514bebe9492..d7fa329c89cb252849aaaaf0bba9342bb3830335 100644 (file)
@@ -36,7 +36,7 @@ import org.opendaylight.controller.sal.java.api.generator.GeneratorJavaFile;
 import org.opendaylight.controller.sal.java.api.generator.InterfaceGenerator;
 import org.opendaylight.controller.yang.model.api.Module;
 import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserImpl;
+import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
 
 public class GeneratorJavaFileTest {
     private static final String FS = File.separator;
diff --git a/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/java/org/opendaylight/controller/yang2sources/plugin/it/CombineTest.java b/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/java/org/opendaylight/controller/yang2sources/plugin/it/CombineTest.java
deleted file mode 100644 (file)
index 7171ee9..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.controller.yang2sources.plugin.it;
-
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
-import org.junit.Test;
-
-public class CombineTest {
-
-    @Test
-    public void testCorrect() throws VerificationException {
-        Verifier v = YangToSourcesPluginTest.setUp("Correct_combined/", false);
-        YangToResourcesPluginTest.verifyCorrectLog(v);
-        YangToSourcesPluginTest.verifyCorrectLog(v);
-    }
-
-}
diff --git a/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/java/org/opendaylight/controller/yang2sources/plugin/it/YangToResourcesPluginTest.java b/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/java/org/opendaylight/controller/yang2sources/plugin/it/YangToResourcesPluginTest.java
deleted file mode 100644 (file)
index f7aa4f7..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.controller.yang2sources.plugin.it;
-
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
-import org.junit.Test;
-
-public class YangToResourcesPluginTest {
-
-    @Test
-    public void testCorrect() throws VerificationException {
-        Verifier v = YangToSourcesPluginTest.setUp("Correct_resources/", false);
-        verifyCorrectLog(v);
-    }
-
-    static void verifyCorrectLog(Verifier v) throws VerificationException {
-        v.verifyErrorFreeLog();
-        v.verifyTextInLog("[INFO] yang-to-resources: Resource provider instantiated from org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl");
-        v.verifyTextInLog("[INFO] yang-to-resources: Resource provider org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl call successful");
-    }
-
-    @Test
-    public void testNoGenerators() throws VerificationException {
-        Verifier v = YangToSourcesPluginTest.setUp("NoGenerators_resources/",
-                false);
-        v.verifyErrorFreeLog();
-        v.verifyTextInLog("[WARNING] yang-to-resources: No resource provider classes provided");
-    }
-
-    @Test
-    public void testUnknownGenerator() throws VerificationException {
-        Verifier v = YangToSourcesPluginTest.setUp(
-                "UnknownGenerator_resources/", true);
-        v.verifyTextInLog("[ERROR] yang-to-resources: Unable to provide resources with unknown resource provider");
-        v.verifyTextInLog("java.lang.ClassNotFoundException: unknown");
-        v.verifyTextInLog("[INFO] yang-to-resources: Resource provider instantiated from org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl");
-        v.verifyTextInLog("[INFO] yang-to-resources: Resource provider org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl call successful");
-        v.verifyTextInLog("[ERROR] yang-to-resources: One or more code resource provider failed, including failed list(resourceProviderClass=exception) {unknown=java.lang.ClassNotFoundException}");
-    }
-
-}
index 4b41cfd9441705ef07ae23685c7c272afeace5f9..75d6ee5d7d5ffb1898cb950d37af25203d2e0e04 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.controller.yang2sources.plugin.it;
 
 import static org.junit.Assert.*;
-import static org.junit.matchers.JUnitMatchers.*;
+import static org.junit.matchers.JUnitMatchers.containsString;
 
 import java.io.File;
 
@@ -38,6 +38,7 @@ public class YangToSourcesPluginTest {
     public void testCorrect() throws VerificationException {
         Verifier v = setUp("Correct/", false);
         verifyCorrectLog(v);
+
     }
 
     static void verifyCorrectLog(Verifier v) throws VerificationException {
@@ -45,6 +46,8 @@ public class YangToSourcesPluginTest {
         v.verifyTextInLog("[INFO] yang-to-sources: yang files parsed from");
         v.verifyTextInLog("[INFO] yang-to-sources: Code generator instantiated from org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl");
         v.verifyTextInLog("[INFO] yang-to-sources: Sources generated by org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl: null");
+        v.verifyTextInLog("[INFO] yang-to-sources: Resource provider instantiated from org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl");
+        v.verifyTextInLog("[INFO] yang-to-sources: Resource provider org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl call successful");
     }
 
     @Test
@@ -83,8 +86,34 @@ public class YangToSourcesPluginTest {
                 + project).getAbsolutePath());
         if (ignoreF)
             verifier.addCliOption("-fn");
-        verifier.executeGoal("generate-resources");
+        verifier.executeGoal("generate-sources");
         return verifier;
     }
 
+    @Test
+    public void testNoGeneratorsResources() throws VerificationException {
+        Verifier v = YangToSourcesPluginTest.setUp("NoGenerators_resources/",
+                false);
+        v.verifyErrorFreeLog();
+        v.verifyTextInLog("[WARNING] yang-to-sources: No resource provider classes provided");
+    }
+
+    @Test
+    public void testUnknownGeneratorResources() throws VerificationException {
+        Verifier v = YangToSourcesPluginTest.setUp(
+                "UnknownGenerator_resources/", true);
+        v.verifyTextInLog("[ERROR] yang-to-sources: Unable to provide resources with unknown resource provider");
+        v.verifyTextInLog("java.lang.ClassNotFoundException: unknown");
+        v.verifyTextInLog("[INFO] yang-to-sources: Resource provider instantiated from org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl");
+        v.verifyTextInLog("[INFO] yang-to-sources: Resource provider org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl call successful");
+        v.verifyTextInLog("[ERROR] yang-to-sources: One or more code resource provider failed, including failed list(resourceProviderClass=exception) {unknown=java.lang.ClassNotFoundException}");
+    }
+
+    @Test
+    public void testNoOutputDir() throws VerificationException {
+        Verifier v = YangToSourcesPluginTest.setUp("NoOutputDir/",
+                false);
+        verifyCorrectLog(v);
+    }
+
 }
index 6a7c3f95b70f0c32905915dc338edc8490f17fe5..91e90c5b3d3a8657a73c4517596d06e25d7084ef 100644 (file)
@@ -1,49 +1,67 @@
 <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/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>binding-generator</artifactId>
-        <groupId>org.opendaylight.controller</groupId>
-        <version>0.5-SNAPSHOT</version>
-    </parent>
-    <artifactId>test</artifactId>
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <artifactId>binding-generator</artifactId>
+               <groupId>org.opendaylight.controller</groupId>
+               <version>0.5-SNAPSHOT</version>
+       </parent>
+       <artifactId>test</artifactId>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.opendaylight.controller</groupId>
-                <artifactId>yang-maven-plugin</artifactId>
-                <version>0.5-SNAPSHOT</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>generate-sources</goal>
-                        </goals>
-                        <configuration>
-                            <yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
-                            <codeGenerators>
-                                <generator>
-                                    <codeGeneratorClass>
-                                        org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
-                                    </codeGeneratorClass>
-                                    <outputBaseDir>
-                                        outDir/
-                                    </outputBaseDir>
-                                </generator>
-                            </codeGenerators>
-                        </configuration>
-                    </execution>
-                </executions>
+       <dependencies>
+               <dependency>
+                       <groupId>org.opendaylight.controller</groupId>
+                       <artifactId>yang-maven-plugin-spi</artifactId>
+                       <version>0.5-SNAPSHOT</version>
+               </dependency>
+       </dependencies>
 
-                <dependencies>
-                    <dependency>
-                        <groupId>org.opendaylight.controller</groupId>
-                        <artifactId>yang-maven-plugin-spi</artifactId>
-                        <version>0.5-SNAPSHOT</version>
-                        <type>test-jar</type>
-                    </dependency>
-                </dependencies>
-            </plugin>
-        </plugins>
-    </build>
-</project>
\ No newline at end of file
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.opendaylight.controller</groupId>
+                               <artifactId>yang-maven-plugin</artifactId>
+                               <version>0.5-SNAPSHOT</version>
+                               <executions>
+                                       <execution>
+                                               <goals>
+                                                       <goal>generate-sources</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
+                                                       <codeGenerators>
+                                                               <generator>
+                                                                       <codeGeneratorClass>
+                                                                               org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+                                                                       </codeGeneratorClass>
+                                                                       <outputBaseDir>
+                                                                               outDir/
+                                                                       </outputBaseDir>
+                                                               </generator>
+                                                       </codeGenerators>
+                                                       <resourceProviders>
+                                                               <provider>
+                                                                       <resourceProviderClass>
+                                                                               org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+                                                                       </resourceProviderClass>
+                                                                       <outputBaseDir>
+                                                                               outDir/
+                                                                       </outputBaseDir>
+                                                               </provider>
+                                                       </resourceProviders>
+                                               </configuration>
+                                       </execution>
+                               </executions>
+
+                               <dependencies>
+                                       <dependency>
+                                               <groupId>org.opendaylight.controller</groupId>
+                                               <artifactId>yang-maven-plugin-spi</artifactId>
+                                               <version>0.5-SNAPSHOT</version>
+                                               <type>test-jar</type>
+                                       </dependency>
+                               </dependencies>
+                       </plugin>
+               </plugins>
+       </build>
+</project>
index 0e0c96a48c33e7ea2682f44a06512d687e2b24fd..8ae77305786100d54e7f4e4daa4e76e0f18acf1a 100644 (file)
@@ -17,7 +17,7 @@
                 <executions>
                     <execution>
                         <goals>
-                            <goal>generate-resources</goal>
+                            <goal>generate-sources</goal>
                         </goals>
                         <configuration>
                             <yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
similarity index 93%
rename from opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/Correct_combined/pom.xml
rename to opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/Generator/pom.xml
index fe67c7815282e6247ddf28019692bc1c7fe32cc9..8b11eace35945bf1867dad31f88f41c5e6faa75f 100644 (file)
@@ -18,7 +18,6 @@
                     <execution>
                         <goals>
                             <goal>generate-sources</goal>
-                            <goal>generate-resources</goal>
                         </goals>
                         <configuration>
                             <yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
@@ -28,7 +27,7 @@
                                         org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
                                     </codeGeneratorClass>
                                     <outputBaseDir>
-                                        outDir/src
+                                        outDir/
                                     </outputBaseDir>
                                 </generator>
                             </codeGenerators>
@@ -38,7 +37,7 @@
                                         org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
                                     </resourceProviderClass>
                                     <outputBaseDir>
-                                        outDir/resources
+                                        outDir/
                                     </outputBaseDir>
                                 </provider>
                             </resourceProviders>
index f19d84886ec2006c54f54d5a16a22f3a6ea44112..cf158cc7b016aff06af65f6ae81558e60e4a8a21 100644 (file)
                             <yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
                             <codeGenerators>
                             </codeGenerators>
+                            <resourceProviders>
+                                <provider>
+                                    <resourceProviderClass>
+                                        org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+                                    </resourceProviderClass>
+                                    <outputBaseDir>
+                                        outDir/
+                                    </outputBaseDir>
+                                </provider>
+                            </resourceProviders>
                         </configuration>
                     </execution>
                 </executions>
+                               <dependencies>
+                    <dependency>
+                        <groupId>org.opendaylight.controller</groupId>
+                        <artifactId>yang-maven-plugin-spi</artifactId>
+                        <version>0.5-SNAPSHOT</version>
+                        <type>test-jar</type>
+                    </dependency>
+                </dependencies>
             </plugin>
         </plugins>
     </build>
index 38028b84e909189964bea3ab2a0efe57d6d4d340..67c0984ae35afaf783d2ad6a345229d3635ce837 100644 (file)
                 <executions>
                     <execution>
                         <goals>
-                            <goal>generate-resources</goal>
+                            <goal>generate-sources</goal>
                         </goals>
                         <configuration>
                             <yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
+                                                       <codeGenerators>
+                                <generator>
+                                    <codeGeneratorClass>
+                                        org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+                                    </codeGeneratorClass>
+                                    <outputBaseDir>
+                                        outDir/
+                                    </outputBaseDir>
+                                </generator>
+                            </codeGenerators>
                             <resourceProviders>
                             </resourceProviders>
                         </configuration>
                     </execution>
                 </executions>
+                               <dependencies>
+                    <dependency>
+                        <groupId>org.opendaylight.controller</groupId>
+                        <artifactId>yang-maven-plugin-spi</artifactId>
+                        <version>0.5-SNAPSHOT</version>
+                        <type>test-jar</type>
+                    </dependency>
+                </dependencies>
             </plugin>
         </plugins>
     </build>
diff --git a/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/NoOutputDir/pom.xml b/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin-it/src/test/resources/NoOutputDir/pom.xml
new file mode 100644 (file)
index 0000000..adca0fa
--- /dev/null
@@ -0,0 +1,53 @@
+<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/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>binding-generator</artifactId>
+        <groupId>org.opendaylight.controller</groupId>
+        <version>0.5-SNAPSHOT</version>
+    </parent>
+    <artifactId>test</artifactId>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.opendaylight.controller</groupId>
+                <artifactId>yang-maven-plugin</artifactId>
+                <version>0.5-SNAPSHOT</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate-sources</goal>
+                        </goals>
+                        <configuration>
+                            <yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
+                            <codeGenerators>
+                                <generator>
+                                    <codeGeneratorClass>
+                                        org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+                                    </codeGeneratorClass>
+                                </generator>
+                            </codeGenerators>
+                            <resourceProviders>
+                                <provider>
+                                    <resourceProviderClass>
+                                        org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+                                    </resourceProviderClass>
+                                </provider>
+                            </resourceProviders>
+                        </configuration>
+                    </execution>
+                </executions>
+
+                <dependencies>
+                    <dependency>
+                        <groupId>org.opendaylight.controller</groupId>
+                        <artifactId>yang-maven-plugin-spi</artifactId>
+                        <version>0.5-SNAPSHOT</version>
+                        <type>test-jar</type>
+                    </dependency>
+                </dependencies>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
index 2308da0fed6b10dd47486832523cb6806ba8cbdf..70aa82aae5d90797624e47b301e2057703db7edc 100644 (file)
                                     </outputBaseDir>
                                 </generator>
                             </codeGenerators>
+                                                       <resourceProviders>
+                                <provider>
+                                    <resourceProviderClass>
+                                        org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+                                    </resourceProviderClass>
+                                    <outputBaseDir>
+                                        outDir/
+                                    </outputBaseDir>
+                                </provider>
+                            </resourceProviders>
                         </configuration>
                     </execution>
                 </executions>
index 2101b8471b0f5415fc0caa910c7e87e43cc02193..da7554e044750ca1387cbf972a9d540326be02aa 100644 (file)
                                     </outputBaseDir>
                                 </generator>
                             </codeGenerators>
+                                                       <resourceProviders>
+                                <provider>
+                                    <resourceProviderClass>
+                                        org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+                                    </resourceProviderClass>
+                                    <outputBaseDir>
+                                        outDir/
+                                    </outputBaseDir>
+                                </provider>
+                            </resourceProviders>
                         </configuration>
                     </execution>
                 </executions>
index 8ee0606631545f3038fb6412cac2a47a61b7627c..f5eddd95c044804a0e7e1f3872074b6d9a70e596 100644 (file)
                 <executions>
                     <execution>
                         <goals>
-                            <goal>generate-resources</goal>
+                            <goal>generate-sources</goal>
                         </goals>
                         <configuration>
                             <yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
+                                                       <codeGenerators>
+                                <generator>
+                                    <codeGeneratorClass>
+                                        org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+                                    </codeGeneratorClass>
+                                    <outputBaseDir>
+                                        outDir/
+                                    </outputBaseDir>
+                                </generator>
+                            </codeGenerators>
                             <resourceProviders>
                                 <provider>
                                     <resourceProviderClass>
index 3aeb2e9535ba7b7ec0caa8ca7abcafe3a653cfce..6208231c6feb9d42c01419b480ff87c7537aa169 100644 (file)
                                     </outputBaseDir>
                                 </generator>
                             </codeGenerators>
+                                                       <resourceProviders>
+                                <provider>
+                                    <resourceProviderClass>
+                                        org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+                                    </resourceProviderClass>
+                                    <outputBaseDir>
+                                        outDir/
+                                    </outputBaseDir>
+                                </provider>
+                            </resourceProviders>
                         </configuration>
                     </execution>
                 </executions>
index e82c737351b155d1fbdac480f690e6d00f86baf6..d542e6d93fce647fd15f542de40336bf26295917 100644 (file)
             <version>3.2</version>
             <scope>provided</scope>
         </dependency>
+               <dependency>
+                       <groupId>org.apache.maven</groupId>
+                       <artifactId>maven-artifact</artifactId>
+                       <version>2.0</version>
+               </dependency>
 
         <dependency>
             <groupId>${project.groupId}</groupId>
index 85f2d8905dd51e48e648a495c85dc8f8d93afaf1..217c6f5b86a7f923f22d136c04a07379c8d2c10f 100644 (file)
@@ -40,6 +40,10 @@ public abstract class ConfigArg {
         public ResourceProviderArg() {
         }
 
+        public ResourceProviderArg(String resourceProviderClass) {
+            this(resourceProviderClass, new File("outDir/"));
+        }
+
         public ResourceProviderArg(String resourceProviderClass,
                 File outputBaseDir) {
             super(outputBaseDir);
@@ -51,9 +55,6 @@ public abstract class ConfigArg {
             Preconditions
                     .checkNotNull(resourceProviderClass,
                             "resourceProviderClass for ResourceProvider cannot be null");
-            Preconditions.checkNotNull(outputBaseDir,
-                    "outputBaseDir for ResourceProvider cannot be null, "
-                            + resourceProviderClass);
         }
 
         public String getResourceProviderClass() {
@@ -70,6 +71,10 @@ public abstract class ConfigArg {
         public CodeGeneratorArg() {
         }
 
+        public CodeGeneratorArg(String codeGeneratorClass) {
+            this(codeGeneratorClass, new File("outDir/"));
+        }
+
         public CodeGeneratorArg(String codeGeneratorClass, File outputBaseDir) {
             super(outputBaseDir);
             this.codeGeneratorClass = codeGeneratorClass;
@@ -79,9 +84,6 @@ public abstract class ConfigArg {
         public void check() {
             Preconditions.checkNotNull(codeGeneratorClass,
                     "codeGeneratorClass for CodeGenerator cannot be null");
-            Preconditions.checkNotNull(outputBaseDir,
-                    "outputBaseDir for CodeGenerator cannot be null, "
-                            + codeGeneratorClass);
         }
 
         public String getCodeGeneratorClass() {
index 98a5d8531b79e0d8d78da9ffb2ee7461928d6773..5676530afec2eaecedab1469608654abb3ebc675 100644 (file)
@@ -8,17 +8,29 @@
 package org.opendaylight.controller.yang2sources.plugin;
 
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Enumeration;
+import java.util.List;
 import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipException;
+import java.util.zip.ZipFile;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.project.MavenProject;
 
 import com.google.common.base.Function;
 import com.google.common.collect.Collections2;
+import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
 final class Util {
-
     static final String YANG_SUFFIX = "yang";
 
     // Cache for listed directories and found yang files. Typically yang files
@@ -33,11 +45,15 @@ final class Util {
      * List files recursively and return as array of String paths. Use cache of
      * size 1.
      */
-    static Collection<File> listFiles(String rootDir) {
-
+    static Collection<File> listFiles(String rootDir) throws FileNotFoundException {
         if (cache.get(rootDir) != null)
             return cache.get(rootDir);
 
+        File file = new File(rootDir);
+        if(!file.exists()) {
+            throw new FileNotFoundException();
+        }
+
         Collection<File> yangFiles = FileUtils.listFiles(new File(rootDir),
                 new String[] { YANG_SUFFIX }, true);
 
@@ -45,7 +61,18 @@ final class Util {
         return yangFiles;
     }
 
-    static String[] listFilesAsArrayOfPaths(String rootDir) {
+    static Collection<InputStream> listFilesAsStream(String rootDir) throws FileNotFoundException {
+        Collection<InputStream> is = new ArrayList<InputStream>();
+
+        Collection<File> files = listFiles(rootDir);
+        for(File f : files) {
+            is.add(new FileInputStream(f));
+        }
+
+        return is;
+    }
+
+    static String[] listFilesAsArrayOfPaths(String rootDir) throws FileNotFoundException {
         String[] filesArray = new String[] {};
         Collection<File> yangFiles = listFiles(rootDir);
 
@@ -99,4 +126,56 @@ final class Util {
         String innerMessage = String.format(message, args);
         return String.format("%s %s", logPrefix, innerMessage);
     }
+
+    public static List<File> getClassPath(MavenProject project)
+            throws DependencyResolutionRequiredException {
+        List<File> dependencies = Lists.newArrayList();
+        try {
+            for (Object element : project.getCompileClasspathElements()) {
+                File asFile = new File((String) element);
+                if (isJar(asFile)) {
+                    dependencies.add(asFile);
+                }
+            }
+        } catch (DependencyResolutionRequiredException e) {
+            throw e;
+        }
+        return dependencies;
+    }
+
+    private static final String JAR_SUFFIX = ".jar";
+
+    private static boolean isJar(File element) {
+        return (element.isFile() && element.getName().endsWith(JAR_SUFFIX)) ? true
+                : false;
+    }
+
+    public static Collection<File> getFilesFromClasspath(
+            List<File> jarsOnClasspath, List<String> classPathFilter)
+            throws ZipException, IOException {
+        List<File> yangs = Lists.newArrayList();
+
+        for (File file : jarsOnClasspath) {
+            ZipFile zip = new ZipFile(file);
+            Enumeration<? extends ZipEntry> entries = zip.entries();
+            while (entries.hasMoreElements()) {
+                ZipEntry entry = entries.nextElement();
+                if (entry.getName().endsWith(YANG_SUFFIX)) {
+                    InputStream stream = zip.getInputStream(entry);
+                }
+            }
+        }
+
+        return yangs;
+    }
+
+    public static boolean acceptedFilter(String name, List<String> filter) {
+        for(String f : filter) {
+            if(name.endsWith(f)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
 }
diff --git a/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/main/java/org/opendaylight/controller/yang2sources/plugin/YangToResourcesMojo.java b/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/main/java/org/opendaylight/controller/yang2sources/plugin/YangToResourcesMojo.java
deleted file mode 100644 (file)
index b449049..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.controller.yang2sources.plugin;
-
-import java.io.File;
-import java.util.Collection;
-import java.util.Map;
-
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.opendaylight.controller.yang2sources.plugin.ConfigArg.ResourceProviderArg;
-import org.opendaylight.controller.yang2sources.spi.ResourceGenerator;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.Maps;
-
-/**
- * Generate resources from yang files using user provided set of
- * {@link ResourceGenerator}s. Can be used to copy yang files that served as
- * blueprint for code generation into resources directory. Steps of this
- * process:
- * <ol>
- * <li>List yang files from {@link #yangFilesRootDir} (If this goal is in the
- * same execution as generate-sources, the same cached list will be used and the
- * root folder will not be searched for yang files twice)</li>
- * <li>For each {@link ResourceGenerator} from {@link #resourceProviders}:</li>
- * <ol>
- * <li>Instantiate using default constructor</li>
- * <li>Call {@link ResourceGenerator#generateResourceFiles(Collection, File)}</li>
- * </ol>
- * </ol>
- */
-@Mojo(name = "generate-resources", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
-public final class YangToResourcesMojo extends AbstractMojo {
-
-    private static final String LOG_PREFIX = "yang-to-resources:";
-
-    /**
-     * Classes implementing {@link ResourceGenerator} interface. An instance
-     * will be created out of every class using default constructor. Method
-     * {@link ResourceGenerator#generateResourceFiles(Collection, File)} will be
-     * called on every instance.
-     */
-    @Parameter(required = true)
-    private ResourceProviderArg[] resourceProviders;
-
-    /**
-     * Source directory that will be recursively searched for yang files (ending
-     * with .yang suffix).
-     */
-    @Parameter(required = true)
-    private String yangFilesRootDir;
-
-    @VisibleForTesting
-    YangToResourcesMojo(ResourceProviderArg[] resourceProviderArgs,
-            String yangFilesRootDir) {
-        super();
-        this.resourceProviders = resourceProviderArgs;
-        this.yangFilesRootDir = yangFilesRootDir;
-    }
-
-    public YangToResourcesMojo() {
-        super();
-    }
-
-    @Override
-    public void execute() throws MojoExecutionException, MojoFailureException {
-
-        if (resourceProviders.length == 0) {
-            getLog().warn(
-                    Util.message("No resource provider classes provided",
-                            LOG_PREFIX));
-            return;
-        }
-
-        Map<String, String> thrown = Maps.newHashMap();
-        Collection<File> yangFiles = Util.listFiles(yangFilesRootDir);
-
-        for (ResourceProviderArg resourceProvider : resourceProviders) {
-            try {
-
-                provideResourcesWithOneProvider(yangFiles, resourceProvider);
-
-            } catch (Exception e) {
-                // try other generators, exception will be thrown after
-                getLog().error(
-                        Util.message(
-                                "Unable to provide resources with %s resource provider",
-                                LOG_PREFIX,
-                                resourceProvider.getResourceProviderClass()), e);
-                thrown.put(resourceProvider.getResourceProviderClass(), e
-                        .getClass().getCanonicalName());
-            }
-        }
-
-        if (!thrown.isEmpty()) {
-            String message = Util
-                    .message(
-                            "One or more code resource provider failed, including failed list(resourceProviderClass=exception) %s",
-                            LOG_PREFIX, thrown.toString());
-            getLog().error(message);
-            throw new MojoFailureException(message);
-        }
-    }
-
-    /**
-     * Instantiate provider from class and call required method
-     */
-    private void provideResourcesWithOneProvider(Collection<File> yangFiles,
-            ResourceProviderArg resourceProvider)
-            throws ClassNotFoundException, InstantiationException,
-            IllegalAccessException {
-
-        resourceProvider.check();
-
-        ResourceGenerator g = Util.getInstance(
-                resourceProvider.getResourceProviderClass(),
-                ResourceGenerator.class);
-        getLog().info(
-                Util.message("Resource provider instantiated from %s",
-                        LOG_PREFIX, resourceProvider.getResourceProviderClass()));
-
-        g.generateResourceFiles(yangFiles, resourceProvider.getOutputBaseDir());
-        getLog().info(
-                Util.message("Resource provider %s call successful",
-                        LOG_PREFIX, resourceProvider.getResourceProviderClass()));
-    }
-}
index 05d9c0cd2c54488e5815b4701ec862c7744f89f3..262198571674611c352660c78636119dd5012f34 100644 (file)
@@ -7,13 +7,24 @@
  */
 package org.opendaylight.controller.yang2sources.plugin;
 
+import java.io.Closeable;
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Enumeration;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
 
+import org.apache.commons.io.IOUtils;
+import org.apache.maven.model.Resource;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -25,11 +36,14 @@ import org.apache.maven.project.MavenProject;
 import org.opendaylight.controller.yang.model.api.Module;
 import org.opendaylight.controller.yang.model.api.SchemaContext;
 import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserImpl;
+import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
 import org.opendaylight.controller.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
+import org.opendaylight.controller.yang2sources.plugin.ConfigArg.ResourceProviderArg;
 import org.opendaylight.controller.yang2sources.spi.CodeGenerator;
+import org.opendaylight.controller.yang2sources.spi.ResourceGenerator;
 
 import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
 /**
@@ -47,8 +61,9 @@ import com.google.common.collect.Maps;
  */
 @Mojo(name = "generate-sources", defaultPhase = LifecyclePhase.GENERATE_SOURCES, requiresDependencyResolution = ResolutionScope.COMPILE, requiresProject = true)
 public final class YangToSourcesMojo extends AbstractMojo {
-
     private static final String LOG_PREFIX = "yang-to-sources:";
+    private static final String INPUT_RESOURCE_DIR = "META-INF/yangs/";
+    private static final String OUTPUT_RESOURCE_DIR = "/target/external-resources/";
 
     /**
      * Classes implementing {@link CodeGenerator} interface. An instance will be
@@ -66,15 +81,26 @@ public final class YangToSourcesMojo extends AbstractMojo {
     @Parameter(required = true)
     private String yangFilesRootDir;
 
+    /**
+     * Classes implementing {@link ResourceGenerator} interface. An instance
+     * will be created out of every class using default constructor. Method
+     * {@link ResourceGenerator#generateResourceFiles(Collection, File)} will be
+     * called on every instance.
+     */
+    @Parameter(required = true)
+    private ResourceProviderArg[] resourceProviders;
+
     @Parameter(property = "project", required = true, readonly = true)
     protected MavenProject project;
 
     private transient final YangModelParser parser;
 
     @VisibleForTesting
-    YangToSourcesMojo(CodeGeneratorArg[] codeGeneratorArgs,
-            YangModelParser parser, String yangFilesRootDir) {
+    YangToSourcesMojo(ResourceProviderArg[] resourceProviderArgs,
+            CodeGeneratorArg[] codeGeneratorArgs, YangModelParser parser,
+            String yangFilesRootDir) {
         super();
+        this.resourceProviders = resourceProviderArgs;
         this.codeGenerators = codeGeneratorArgs;
         this.yangFilesRootDir = yangFilesRootDir;
         this.parser = parser;
@@ -89,6 +115,9 @@ public final class YangToSourcesMojo extends AbstractMojo {
     public void execute() throws MojoExecutionException, MojoFailureException {
         SchemaContext context = processYang();
         generateSources(context);
+        generateResources();
+
+        closeResources();
     }
 
     /**
@@ -96,7 +125,9 @@ public final class YangToSourcesMojo extends AbstractMojo {
      */
     private SchemaContext processYang() throws MojoExecutionException {
         try {
-            Collection<File> yangFiles = Util.listFiles(yangFilesRootDir);
+            Collection<InputStream> yangFiles = Util
+                    .listFilesAsStream(yangFilesRootDir);
+            yangFiles.addAll(getFilesFromDependenciesAsStream());
 
             if (yangFiles.isEmpty()) {
                 getLog().warn(
@@ -106,7 +137,8 @@ public final class YangToSourcesMojo extends AbstractMojo {
             }
 
             Set<Module> parsedYang = parser
-                    .parseYangModels(new ArrayList<File>(yangFiles));
+                    .parseYangModelsFromStreams(new ArrayList<InputStream>(
+                            yangFiles));
             SchemaContext resolveSchemaContext = parser
                     .resolveSchemaContext(parsedYang);
             getLog().info(
@@ -123,6 +155,158 @@ public final class YangToSourcesMojo extends AbstractMojo {
         }
     }
 
+    private void generateResources() throws MojoExecutionException,
+            MojoFailureException {
+        if (resourceProviders.length == 0) {
+            getLog().warn(
+                    Util.message("No resource provider classes provided",
+                            LOG_PREFIX));
+            return;
+        }
+
+        Resource res = new Resource();
+        String baseDirName = project.getBasedir().getAbsolutePath();
+        res.setDirectory(baseDirName + OUTPUT_RESOURCE_DIR);
+        res.setTargetPath(INPUT_RESOURCE_DIR);
+        project.addResource(res);
+
+        Map<String, String> thrown = Maps.newHashMap();
+
+        Collection<File> yangFiles = new ArrayList<File>();
+
+        // load files from yang root
+        yangFiles.addAll(getFilesFromYangRoot());
+
+        // load files from dependencies
+        yangFiles.addAll(getFilesFromDependencies());
+
+
+        for (ResourceProviderArg resourceProvider : resourceProviders) {
+            try {
+                provideResourcesWithOneProvider(yangFiles, resourceProvider);
+            } catch (Exception e) {
+                // try other generators, exception will be thrown after
+                getLog().error(
+                        Util.message(
+                                "Unable to provide resources with %s resource provider",
+                                LOG_PREFIX,
+                                resourceProvider.getResourceProviderClass()), e);
+                thrown.put(resourceProvider.getResourceProviderClass(), e
+                        .getClass().getCanonicalName());
+            }
+        }
+
+        if (!thrown.isEmpty()) {
+            String message = Util
+                    .message(
+                            "One or more code resource provider failed, including failed list(resourceProviderClass=exception) %s",
+                            LOG_PREFIX, thrown.toString());
+            getLog().error(message);
+            throw new MojoFailureException(message);
+        }
+    }
+
+    private Collection<File> getFilesFromYangRoot() {
+        Collection<File> yangFilesLoaded = null;
+
+        File rootDir = new File(yangFilesRootDir);
+        try {
+            if(!rootDir.isAbsolute()) {
+                yangFilesLoaded = Util.listFiles(project.getBasedir().getAbsolutePath() + yangFilesRootDir);
+            } else {
+                yangFilesLoaded = Util.listFiles(yangFilesRootDir);
+            }
+
+        } catch(FileNotFoundException e) {
+            getLog().warn("Directory '" + yangFilesRootDir + "' does not exists.");
+            yangFilesLoaded = new ArrayList<File>();
+        }
+        Collection<File> yangFiles = new ArrayList<File>(yangFilesLoaded);
+
+        try {
+            for(File yangFile : yangFilesLoaded) {
+                InputStream is = new FileInputStream(yangFile);
+                yangFiles.add(createFileFromStream(is, project.getBasedir().getAbsolutePath() + OUTPUT_RESOURCE_DIR + yangFile.getName()));
+                resources.add(is);
+            }
+        } catch(IOException e) {
+            getLog().warn("Exception while loading yang files.", e);
+        }
+        return yangFiles;
+    }
+
+    private Collection<File> getFilesFromDependencies() {
+        Collection<File> yangFiles = new ArrayList<File>();
+
+        try {
+            List<File> filesOnCp = Util.getClassPath(project);
+            List<String> filter = Lists.newArrayList(".yang");
+            for (File file : filesOnCp) {
+                ZipFile zip = new ZipFile(file);
+                Enumeration<? extends ZipEntry> entries = zip.entries();
+
+                while (entries.hasMoreElements()) {
+                    ZipEntry entry = entries.nextElement();
+                    String entryName = entry.getName();
+                    if (entryName.startsWith(INPUT_RESOURCE_DIR)) {
+                        if (entry.isDirectory()) {
+                            continue;
+                        }
+                        if (!Util.acceptedFilter(entryName, filter)) {
+                            continue;
+                        }
+                        InputStream entryStream = zip.getInputStream(entry);
+                        String newEntryName = entryName.substring(INPUT_RESOURCE_DIR.length());
+                        File f = createFileFromStream(entryStream, project.getBasedir().getAbsolutePath() + OUTPUT_RESOURCE_DIR + newEntryName);
+                        yangFiles.add(f);
+
+                        resources.add(entryStream);
+                    }
+                }
+
+                resources.add(zip);
+            }
+        } catch (Exception e) {
+            getLog().warn("Exception while loading external yang files.", e);
+        }
+        return yangFiles;
+    }
+
+    private File createFileFromStream(InputStream is, String absoluteName) throws IOException {
+        File f = new File(absoluteName);
+        if(!f.exists()) {
+            f.getParentFile().mkdirs();
+        }
+        f.createNewFile();
+
+        FileOutputStream fos = new FileOutputStream(f);
+        IOUtils.copy(is, fos);
+        return f;
+    }
+
+    /**
+     * Instantiate provider from class and call required method
+     */
+    private void provideResourcesWithOneProvider(Collection<File> yangFiles,
+            ResourceProviderArg resourceProvider)
+            throws ClassNotFoundException, InstantiationException,
+            IllegalAccessException {
+
+        resourceProvider.check();
+
+        ResourceGenerator g = Util.getInstance(
+                resourceProvider.getResourceProviderClass(),
+                ResourceGenerator.class);
+        getLog().info(
+                Util.message("Resource provider instantiated from %s",
+                        LOG_PREFIX, resourceProvider.getResourceProviderClass()));
+
+        g.generateResourceFiles(yangFiles, resourceProvider.getOutputBaseDir());
+        getLog().info(
+                Util.message("Resource provider %s call successful",
+                        LOG_PREFIX, resourceProvider.getResourceProviderClass()));
+    }
+
     /**
      * Call generate on every generator from plugin configuration
      */
@@ -135,12 +319,9 @@ public final class YangToSourcesMojo extends AbstractMojo {
         }
 
         Map<String, String> thrown = Maps.newHashMap();
-
         for (CodeGeneratorArg codeGenerator : codeGenerators) {
             try {
-
                 generateSourcesWithOneGenerator(context, codeGenerator);
-
             } catch (Exception e) {
                 // try other generators, exception will be thrown after
                 getLog().error(
@@ -188,4 +369,62 @@ public final class YangToSourcesMojo extends AbstractMojo {
                         codeGeneratorCfg.getCodeGeneratorClass(), generated));
     }
 
+    /**
+     * Collection of resources which should be closed after use.
+     */
+    private final List<Closeable> resources = new ArrayList<Closeable>();
+
+    /**
+     * Search for yang files in dependent projects.
+     *
+     * @return files found as List of InputStream
+     */
+    private List<InputStream> getFilesFromDependenciesAsStream() {
+        final List<InputStream> yangsFromDependencies = new ArrayList<InputStream>();
+        try {
+            List<File> filesOnCp = Util.getClassPath(project);
+
+            List<String> filter = Lists.newArrayList(".yang");
+            for (File file : filesOnCp) {
+                ZipFile zip = new ZipFile(file);
+                Enumeration<? extends ZipEntry> entries = zip.entries();
+                while (entries.hasMoreElements()) {
+                    ZipEntry entry = entries.nextElement();
+                    String entryName = entry.getName();
+
+                    if(entryName.startsWith(INPUT_RESOURCE_DIR)) {
+                        if(entry.isDirectory()) {
+                            continue;
+                        }
+                        if (!Util.acceptedFilter(entryName, filter)) {
+                            continue;
+                        }
+
+                        InputStream entryStream = zip.getInputStream(entry);
+                        yangsFromDependencies.add(entryStream);
+                        resources.add(entryStream);
+                    }
+
+                }
+                resources.add(zip);
+            }
+        } catch (Exception e) {
+            getLog().warn("Exception while searching yangs in dependencies", e);
+        }
+        return yangsFromDependencies;
+    }
+
+    /**
+     * Internal utility method for closing open resources.
+     */
+    private void closeResources() {
+        for (Closeable resource : resources) {
+            try {
+                resource.close();
+            } catch (IOException e) {
+                getLog().warn("Failed to close resources: "+ resource, e);
+            }
+        }
+    }
+
 }
diff --git a/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/test/java/org/opendaylight/controller/yang2sources/plugin/GenerateResourcesTest.java b/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/test/java/org/opendaylight/controller/yang2sources/plugin/GenerateResourcesTest.java
deleted file mode 100644 (file)
index a23e3b5..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.controller.yang2sources.plugin;
-
-import static org.hamcrest.core.Is.*;
-import static org.junit.Assert.*;
-
-import java.io.File;
-import java.util.Collection;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.yang2sources.plugin.ConfigArg.ResourceProviderArg;
-import org.opendaylight.controller.yang2sources.spi.ResourceGenerator;
-
-public class GenerateResourcesTest {
-
-    private String yang;
-    private YangToResourcesMojo mojo;
-    private File outDir;
-
-    @Before
-    public void setUp() {
-        yang = new File(getClass().getResource("/mock.yang").getFile())
-                .getParent();
-        outDir = new File("outputDir");
-        mojo = new YangToResourcesMojo(
-                new ResourceProviderArg[] {
-                        new ResourceProviderArg(ProviderMock.class.getName(),
-                                outDir),
-                        new ResourceProviderArg(ProviderMock2.class.getName(),
-                                outDir) }, yang);
-    }
-
-    @Test
-    public void test() throws Exception {
-        mojo.execute();
-        assertThat(ProviderMock.called, is(1));
-        assertThat(ProviderMock2.called, is(1));
-        assertThat(ProviderMock2.baseDir, is(outDir));
-        assertThat(ProviderMock.baseDir, is(outDir));
-    }
-
-    public static class ProviderMock implements ResourceGenerator {
-
-        private static int called = 0;
-        private static File baseDir;
-
-        @Override
-        public void generateResourceFiles(Collection<File> resources,
-                File outputDir) {
-            called++;
-            baseDir = outputDir;
-        }
-    }
-
-    public static class ProviderMock2 implements ResourceGenerator {
-
-        private static int called = 0;
-        private static File baseDir;
-
-        @Override
-        public void generateResourceFiles(Collection<File> resources,
-                File outputDir) {
-            called++;
-            baseDir = outputDir;
-        }
-    }
-
-}
index db703c2d0f3917db939f0337d7908f2de2c7f5bd..6961fa84ec94a3057c70fdd02e3483d6004a99b9 100644 (file)
@@ -7,25 +7,29 @@
  */
 package org.opendaylight.controller.yang2sources.plugin;
 
-import static org.hamcrest.core.Is.*;
-import static org.junit.Assert.*;
-import static org.mockito.Matchers.*;
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Matchers.anyListOf;
 import static org.mockito.Mockito.*;
 
 import java.io.File;
 import java.util.Collection;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.opendaylight.controller.yang.model.api.SchemaContext;
 import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
 import org.opendaylight.controller.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
+import org.opendaylight.controller.yang2sources.plugin.ConfigArg.ResourceProviderArg;
 import org.opendaylight.controller.yang2sources.spi.CodeGenerator;
+import org.opendaylight.controller.yang2sources.spi.ResourceGenerator;
 
 import com.google.common.collect.Lists;
 
+@Ignore
 public class GenerateSourcesTest {
 
     @Mock
@@ -42,6 +46,11 @@ public class GenerateSourcesTest {
                 .getParent();
         outDir = new File("outputDir");
         mojo = new YangToSourcesMojo(
+                new ResourceProviderArg[] {
+                        new ResourceProviderArg(ProviderMock.class.getName(),
+                                outDir),
+                        new ResourceProviderArg(ProviderMock2.class.getName(),
+                                outDir) },
                 new CodeGeneratorArg[] { new CodeGeneratorArg(
                         GeneratorMock.class.getName(), outDir) }, parser, yang);
     }
@@ -54,6 +63,15 @@ public class GenerateSourcesTest {
         assertThat(GeneratorMock.outputDir, is(outDir));
     }
 
+    @Test
+    public void testRes() throws Exception {
+        mojo.execute();
+        assertThat(ProviderMock.called, is(1));
+        assertThat(ProviderMock2.called, is(1));
+        assertThat(ProviderMock2.baseDir, is(outDir));
+        assertThat(ProviderMock.baseDir, is(outDir));
+    }
+
     public static class GeneratorMock implements CodeGenerator {
 
         private static int called = 0;
@@ -67,4 +85,30 @@ public class GenerateSourcesTest {
             return Lists.newArrayList();
         }
     }
+
+    public static class ProviderMock implements ResourceGenerator {
+
+        private static int called = 0;
+        private static File baseDir;
+
+        @Override
+        public void generateResourceFiles(Collection<File> resources,
+                File outputDir) {
+            called++;
+            baseDir = outputDir;
+        }
+    }
+
+    public static class ProviderMock2 implements ResourceGenerator {
+
+        private static int called = 0;
+        private static File baseDir;
+
+        @Override
+        public void generateResourceFiles(Collection<File> resources,
+                File outputDir) {
+            called++;
+            baseDir = outputDir;
+        }
+    }
 }
index 0a17d9f13d5e8b06eb8820238ba868a3cc82e930..75e50f0261a1b5f2eba1ee4bc26fd4193464aa8e 100644 (file)
@@ -7,9 +7,10 @@
  */
 package org.opendaylight.controller.yang2sources.plugin;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertTrue;
 
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.util.Collection;
 
 import org.junit.Test;
@@ -17,7 +18,7 @@ import org.junit.Test;
 public class UtilTest {
 
     @Test
-    public void testCache() {
+    public void testCache() throws FileNotFoundException {
         String yang = new File(getClass().getResource("/mock.yang").getFile())
                 .getParent();
         Collection<File> files = Util.listFiles(yang);
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
 
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
 
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
 
 import java.util.Set;
 
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
 
 /**
  * Interface for builders of those nodes, which can be augmentation targets.
@@ -5,11 +5,12 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
 
 import java.util.Set;
 
 import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.controller.yang.model.api.SchemaPath;
 
 /**
  * Interface for all yang data-node containers [augment, case, container,
@@ -29,4 +30,6 @@ public interface ChildNodeBuilder extends Builder {
 
     Set<DataSchemaNodeBuilder> getChildNodes();
 
+    SchemaPath getPath();
+
 }
@@ -5,10 +5,10 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
 
 import org.opendaylight.controller.yang.model.api.DataSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ConstraintsBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ConstraintsBuilder;
 
 /**
  * Interface for all yang data-schema nodes [anyxml, case, container, grouping,
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
 
 import org.opendaylight.controller.yang.model.api.GroupingDefinition;
 
@@ -5,13 +5,13 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
  */\r
-package org.opendaylight.controller.yang.model.parser.builder.api;\r
+package org.opendaylight.controller.yang.parser.builder.api;\r
 \r
 import org.opendaylight.controller.yang.common.QName;\r
 import org.opendaylight.controller.yang.model.api.SchemaNode;\r
 import org.opendaylight.controller.yang.model.api.SchemaPath;\r
 import org.opendaylight.controller.yang.model.api.Status;\r
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;\r
+import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;\r
 \r
 /**\r
  * Interface for all builders of SchemaNode nodes.\r
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
 
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
 
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
 
 /**
  * Builders of all nodes, which can have 'typedef' statement must implement this interface.
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
  */\r
-package org.opendaylight.controller.yang.model.parser.builder.api;\r
+package org.opendaylight.controller.yang.parser.builder.api;\r
 \r
 import java.util.List;\r
 \r
@@ -16,7 +16,7 @@ import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.type.LengthConstraint;\r
 import org.opendaylight.controller.yang.model.api.type.PatternConstraint;\r
 import org.opendaylight.controller.yang.model.api.type.RangeConstraint;\r
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;\r
+import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;\r
 \r
 /**\r
  * Interface for builders of 'typedef' statement.\r
@@ -5,13 +5,13 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
 
 import java.util.List;
 
 import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.util.RefineHolder;
+import org.opendaylight.controller.yang.parser.util.RefineHolder;
 
 /**
  * Interface for builders of 'uses' statement.
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -17,7 +17,7 @@ import org.opendaylight.controller.yang.model.api.ConstraintDefinition;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
 
 public class AnyXmlBuilder implements DataSchemaNodeBuilder {
     private final int line;
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -22,13 +22,13 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.util.YangModelBuilderUtil;
 import org.opendaylight.controller.yang.model.util.RevisionAwareXPathImpl;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.util.YangModelBuilderUtil;
 
 public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder {
     private final AugmentationSchemaImpl instance;
@@ -84,6 +84,14 @@ public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder
         return null;
     }
 
+    /**
+     * Always returns null.
+     */
+    @Override
+    public SchemaPath getPath() {
+        return null;
+    }
+
     @Override
     public AugmentationSchema build() {
         instance.setTargetPath(finalAugmentTarget);
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -21,13 +21,13 @@ import org.opendaylight.controller.yang.model.api.ConstraintDefinition;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationTargetBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.ChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.ChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
 
 public class ChoiceBuilder implements DataSchemaNodeBuilder, ChildNodeBuilder,
         AugmentationTargetBuilder {
@@ -1,4 +1,4 @@
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -19,10 +19,10 @@ import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
 
 public final class ChoiceCaseBuilder extends AbstractChildNodeBuilder implements
         DataSchemaNodeBuilder {
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.Collections;
 import java.util.HashSet;
@@ -15,8 +15,8 @@ import org.opendaylight.controller.yang.model.api.ConstraintDefinition;
 import org.opendaylight.controller.yang.model.api.DataSchemaNode;
 import org.opendaylight.controller.yang.model.api.MustDefinition;
 import org.opendaylight.controller.yang.model.api.RevisionAwareXPath;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
 import org.opendaylight.controller.yang.model.util.RevisionAwareXPathImpl;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
 
 public class ConstraintsBuilder implements Builder {
     private final ConstraintDefinitionImpl instance;
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -26,14 +26,14 @@ import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationTargetBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
 
 public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder
         implements TypeDefinitionAwareBuilder, AugmentationTargetBuilder,
@@ -5,13 +5,13 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import org.opendaylight.controller.yang.model.api.Deviation;
 import org.opendaylight.controller.yang.model.api.Deviation.Deviate;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
-import org.opendaylight.controller.yang.model.parser.util.YangModelBuilderUtil;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
+import org.opendaylight.controller.yang.parser.util.YangModelBuilderUtil;
 
 public class DeviationBuilder implements Builder {
     private final DeviationImpl instance;
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -16,7 +16,7 @@ import org.opendaylight.controller.yang.model.api.ExtensionDefinition;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
 
 public class ExtensionBuilder implements SchemaNodeBuilder {
     private final ExtensionDefinitionImpl instance;
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -16,7 +16,7 @@ import org.opendaylight.controller.yang.model.api.FeatureDefinition;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
 
 public class FeatureBuilder implements SchemaNodeBuilder {
     private final FeatureDefinitionImpl instance;
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -23,10 +23,10 @@ import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
 
 public class GroupingBuilderImpl implements GroupingBuilder {
     private final GroupingDefinitionImpl instance;
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -16,7 +16,7 @@ import org.opendaylight.controller.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
 
 public final class IdentitySchemaNodeBuilder implements SchemaNodeBuilder {
     private final IdentitySchemaNodeImpl instance;
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.Collections;
 import java.util.List;
@@ -17,10 +17,10 @@ import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.type.LengthConstraint;
 import org.opendaylight.controller.yang.model.api.type.PatternConstraint;
 import org.opendaylight.controller.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractTypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
 import org.opendaylight.controller.yang.model.util.IdentityrefType;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
 
 /**
  * Builder for YANG union type. User can add type to this union as
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -18,9 +18,9 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractTypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
 
 public class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder
         implements SchemaNodeBuilder, DataSchemaNodeBuilder {
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -18,9 +18,9 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractTypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
 
 public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements
         DataSchemaNodeBuilder, SchemaNodeBuilder {
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -26,15 +26,15 @@ import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationTargetBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
 
 public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements
         DataSchemaNodeBuilder, SchemaNodeBuilder, AugmentationTargetBuilder,
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.net.URI;
 import java.util.ArrayList;
@@ -32,18 +32,18 @@ import org.opendaylight.controller.yang.model.api.RpcDefinition;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
-import org.opendaylight.controller.yang.model.parser.builder.api.ChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.util.RefineHolder;
-import org.opendaylight.controller.yang.model.parser.util.YangParseException;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
+import org.opendaylight.controller.yang.parser.builder.api.ChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.util.RefineHolder;
+import org.opendaylight.controller.yang.parser.util.YangParseException;
 
 /**
  * This builder builds Module object. If this module is dependent on external
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -25,13 +25,13 @@ import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
 
 public class NotificationBuilder extends AbstractChildNodeBuilder implements
         TypeDefinitionAwareBuilder, SchemaNodeBuilder {
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -21,10 +21,10 @@ import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
 
 public class RpcDefinitionBuilder implements SchemaNodeBuilder,
         TypeDefinitionAwareBuilder {
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -19,11 +19,11 @@ import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.controller.yang.model.api.type.LengthConstraint;
 import org.opendaylight.controller.yang.model.api.type.PatternConstraint;
 import org.opendaylight.controller.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractTypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.util.YangParseException;
 import org.opendaylight.controller.yang.model.util.ExtendedType;
 import org.opendaylight.controller.yang.model.util.UnknownType;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.util.YangParseException;
 
 public class TypedefBuilder extends AbstractTypeAwareBuilder implements
         TypeDefinitionBuilder {
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.net.URI;
 import java.util.ArrayList;
@@ -20,10 +20,10 @@ import org.opendaylight.controller.yang.model.api.TypeDefinition;
 import org.opendaylight.controller.yang.model.api.type.LengthConstraint;
 import org.opendaylight.controller.yang.model.api.type.PatternConstraint;
 import org.opendaylight.controller.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractTypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
 import org.opendaylight.controller.yang.model.util.UnionType;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
 
 /**
  * Builder for YANG union type. User can add type to this union as
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -15,7 +15,7 @@ import org.opendaylight.controller.yang.common.QName;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
 
 public class UnknownSchemaNodeBuilder implements SchemaNodeBuilder {
     private final UnknownSchemaNodeImpl instance;
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
  */\r
-package org.opendaylight.controller.yang.model.parser.builder.impl;\r
+package org.opendaylight.controller.yang.parser.builder.impl;\r
 \r
 import java.util.ArrayList;\r
 import java.util.Collections;\r
@@ -20,11 +20,11 @@ import org.opendaylight.controller.yang.model.api.AugmentationSchema;
 import org.opendaylight.controller.yang.model.api.SchemaNode;\r
 import org.opendaylight.controller.yang.model.api.SchemaPath;\r
 import org.opendaylight.controller.yang.model.api.UsesNode;\r
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;\r
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;\r
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;\r
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;\r
-import org.opendaylight.controller.yang.model.parser.util.RefineHolder;\r
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;\r
+import org.opendaylight.controller.yang.parser.builder.api.Builder;\r
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;\r
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;\r
+import org.opendaylight.controller.yang.parser.util.RefineHolder;\r
 \r
 final class UsesNodeBuilderImpl implements UsesNodeBuilder, Builder {\r
     private final UsesNodeImpl instance;\r
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.impl;
+package org.opendaylight.controller.yang.parser.impl;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -50,37 +50,37 @@ import org.opendaylight.controller.yang.model.api.type.PatternConstraint;
 import org.opendaylight.controller.yang.model.api.type.RangeConstraint;
 import org.opendaylight.controller.yang.model.api.type.StringTypeDefinition;
 import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationTargetBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
-import org.opendaylight.controller.yang.model.parser.builder.api.ChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.AnyXmlBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ChoiceBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ContainerSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.IdentitySchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.IdentityrefTypeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.LeafListSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.LeafSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ListSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ModuleBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.TypedefBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnionTypeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.util.ModuleDependencySort;
-import org.opendaylight.controller.yang.model.parser.util.ModuleDependencySort.ModuleSimple;
-import org.opendaylight.controller.yang.model.parser.util.ParserUtils;
-import org.opendaylight.controller.yang.model.parser.util.RefineHolder;
-import org.opendaylight.controller.yang.model.parser.util.TypeConstraints;
-import org.opendaylight.controller.yang.model.parser.util.YangParseException;
 import org.opendaylight.controller.yang.model.util.ExtendedType;
 import org.opendaylight.controller.yang.model.util.IdentityrefType;
 import org.opendaylight.controller.yang.model.util.UnknownType;
-import org.opendaylight.controller.yang.model.validator.YangModelBasicValidator;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
+import org.opendaylight.controller.yang.parser.builder.api.ChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.AnyXmlBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ChoiceBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ContainerSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.IdentitySchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.IdentityrefTypeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.LeafListSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.LeafSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ListSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ModuleBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.TypedefBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.UnionTypeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.util.ModuleDependencySort;
+import org.opendaylight.controller.yang.parser.util.ModuleDependencySort.ModuleSimple;
+import org.opendaylight.controller.yang.parser.util.ParserUtils;
+import org.opendaylight.controller.yang.parser.util.RefineHolder;
+import org.opendaylight.controller.yang.parser.util.TypeConstraints;
+import org.opendaylight.controller.yang.parser.util.YangParseException;
+import org.opendaylight.controller.yang.validator.YangModelBasicValidator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -5,9 +5,9 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.impl;
+package org.opendaylight.controller.yang.parser.impl;
 
-import static org.opendaylight.controller.yang.model.parser.util.YangModelBuilderUtil.*;
+import static org.opendaylight.controller.yang.parser.util.YangModelBuilderUtil.*;
 
 import java.net.URI;
 import java.text.DateFormat;
@@ -55,26 +55,26 @@ import org.opendaylight.controller.yang.common.QName;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Status;
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.AnyXmlBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ChoiceBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ChoiceCaseBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ContainerSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.DeviationBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ExtensionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.FeatureBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.IdentitySchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.LeafListSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.LeafSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ListSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ModuleBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.NotificationBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.RpcDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.TypedefBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.util.RefineHolder;
 import org.opendaylight.controller.yang.model.util.YangTypesConverter;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.AnyXmlBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ChoiceBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ChoiceCaseBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ContainerSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.DeviationBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ExtensionBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.FeatureBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.IdentitySchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.LeafListSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.LeafSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ListSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ModuleBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.NotificationBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.RpcDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.TypedefBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.util.RefineHolder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.impl;
+package org.opendaylight.controller.yang.parser.impl;
 
 /**
  * Unchecked exception thrown if yang definition is not valid according to
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
 
 import java.util.Date;
 import java.util.List;
@@ -13,10 +13,10 @@ import java.util.Map;
 import java.util.Set;
 
 import org.opendaylight.controller.yang.model.api.ModuleImport;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ModuleBuilder;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserListenerImpl;
-import org.opendaylight.controller.yang.model.parser.util.TopologicalSort.Node;
-import org.opendaylight.controller.yang.model.parser.util.TopologicalSort.NodeImpl;
+import org.opendaylight.controller.yang.parser.builder.impl.ModuleBuilder;
+import org.opendaylight.controller.yang.parser.impl.YangParserListenerImpl;
+import org.opendaylight.controller.yang.parser.util.TopologicalSort.Node;
+import org.opendaylight.controller.yang.parser.util.TopologicalSort.NodeImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
 
 import org.opendaylight.controller.yang.model.api.MustDefinition;
 import org.opendaylight.controller.yang.model.api.RevisionAwareXPath;
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -15,22 +15,22 @@ import org.opendaylight.controller.yang.model.api.ModuleImport;
 import org.opendaylight.controller.yang.model.api.MustDefinition;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.TypeDefinition;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.ChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.AnyXmlBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ChoiceBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ChoiceCaseBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ConstraintsBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ContainerSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.LeafListSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.LeafSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ListSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ModuleBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.ChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.AnyXmlBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ChoiceBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ChoiceCaseBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ConstraintsBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ContainerSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.LeafListSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.LeafSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ListSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ModuleBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;
 
 public final class ParserUtils {
 
@@ -96,10 +96,28 @@ public final class ParserUtils {
             final ChildNodeBuilder target) {
         for (DataSchemaNodeBuilder builder : augment.getChildNodes()) {
             builder.setAugmenting(true);
+            correctPath(augment, target.getPath());
             target.addChildNode(builder);
         }
     }
 
+    private static void correctPath(final ChildNodeBuilder node,
+            final SchemaPath parentSchemaPath) {
+        for(DataSchemaNodeBuilder builder : node.getChildNodes()) {
+
+            // add correct path
+            SchemaPath targetNodeSchemaPath = parentSchemaPath;
+            List<QName> targetNodePath = new ArrayList<QName>(targetNodeSchemaPath.getPath());
+            targetNodePath.add(builder.getQName());
+            builder.setPath(new SchemaPath(targetNodePath, true));
+
+            if(builder instanceof ChildNodeBuilder) {
+                ChildNodeBuilder cnb = (ChildNodeBuilder)builder;
+                correctPath(cnb, builder.getPath());
+            }
+        }
+    }
+
     public static LeafSchemaNodeBuilder copyLeafBuilder(
             final LeafSchemaNodeBuilder old) {
         final LeafSchemaNodeBuilder copy = new LeafSchemaNodeBuilder(
@@ -5,14 +5,14 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import org.opendaylight.controller.yang.model.api.MustDefinition;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
+import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;
 
 public final class RefineHolder implements Builder {
     private final String name;
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
 
 /**
  * Marker object representing special 'min' or 'max' values in YANG.
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/eplv10.html
  */
-package org.opendaylight.controller.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
 
 import java.net.URI;
 import java.util.ArrayList;
@@ -81,8 +81,6 @@ import org.opendaylight.controller.yang.model.api.type.EnumTypeDefinition.EnumPa
 import org.opendaylight.controller.yang.model.api.type.LengthConstraint;
 import org.opendaylight.controller.yang.model.api.type.PatternConstraint;
 import org.opendaylight.controller.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ConstraintsBuilder;
 import org.opendaylight.controller.yang.model.util.BaseConstraints;
 import org.opendaylight.controller.yang.model.util.BinaryType;
 import org.opendaylight.controller.yang.model.util.BitsType;
@@ -101,6 +99,8 @@ import org.opendaylight.controller.yang.model.util.Uint32;
 import org.opendaylight.controller.yang.model.util.Uint64;
 import org.opendaylight.controller.yang.model.util.Uint8;
 import org.opendaylight.controller.yang.model.util.UnknownType;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ConstraintsBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
 
 /**
  * Unchecked exception thrown if yang definition is not valid according to
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/eplv10.html
  */
-package org.opendaylight.controller.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
 
 import java.text.DateFormat;
 import java.text.ParseException;
@@ -18,8 +18,8 @@ import java.util.regex.Pattern;
 import org.antlr.v4.runtime.ParserRuleContext;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Yang_version_stmtContext;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserListenerImpl;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.impl.YangParserListenerImpl;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
 
 import com.google.common.collect.Sets;
 
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/eplv10.html
  */
-package org.opendaylight.controller.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
 
 import java.util.Arrays;
 import java.util.Collection;
@@ -16,8 +16,8 @@ import java.util.Set;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Module_stmtContext;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Submodule_stmtContext;
-import org.opendaylight.controller.yang.model.parser.util.YangModelBuilderUtil;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.util.YangModelBuilderUtil;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
 
 /**
  * Validation utilities
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
 
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -57,7 +57,7 @@ import org.opendaylight.controller.antlrv4.code.gen.YangParser.Unique_stmtContex
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Uses_stmtContext;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Yin_element_argContext;
 import org.opendaylight.controller.antlrv4.code.gen.YangParserBaseListener;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserListenerImpl;
+import org.opendaylight.controller.yang.parser.impl.YangParserListenerImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -5,13 +5,13 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
 
 import java.util.List;
 
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.ParseTreeWalker;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
 
 /**
  * Exposed basic yang validation.
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
 
 import static org.hamcrest.core.AnyOf.anyOf;
 import static org.hamcrest.core.Is.is;
@@ -22,11 +22,11 @@ import java.util.Set;
 import org.hamcrest.Matcher;
 import org.junit.Test;
 import org.opendaylight.controller.yang.model.api.ModuleImport;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ModuleBuilder;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserListenerImpl;
-import org.opendaylight.controller.yang.model.parser.util.ModuleDependencySort.ModuleNodeImpl;
-import org.opendaylight.controller.yang.model.parser.util.ModuleDependencySort.ModuleSimple;
-import org.opendaylight.controller.yang.model.parser.util.TopologicalSort.Edge;
+import org.opendaylight.controller.yang.parser.builder.impl.ModuleBuilder;
+import org.opendaylight.controller.yang.parser.impl.YangParserListenerImpl;
+import org.opendaylight.controller.yang.parser.util.ModuleDependencySort.ModuleNodeImpl;
+import org.opendaylight.controller.yang.parser.util.ModuleDependencySort.ModuleSimple;
+import org.opendaylight.controller.yang.parser.util.TopologicalSort.Edge;
 
 import com.google.common.collect.Sets;
 
@@ -5,17 +5,17 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
 
-import static org.hamcrest.core.Is.*;
-import static org.junit.Assert.*;
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
 
 import java.util.List;
 import java.util.Set;
 
 import org.junit.Test;
-import org.opendaylight.controller.yang.model.parser.util.TopologicalSort.Node;
-import org.opendaylight.controller.yang.model.parser.util.TopologicalSort.NodeImpl;
+import org.opendaylight.controller.yang.parser.util.TopologicalSort.Node;
+import org.opendaylight.controller.yang.parser.util.TopologicalSort.NodeImpl;
 
 import com.google.common.collect.Sets;
 
@@ -5,10 +5,10 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
 
-import static org.junit.Assert.*;
-import static org.junit.matchers.JUnitMatchers.*;
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.containsString;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -20,7 +20,7 @@ import org.opendaylight.controller.antlrv4.code.gen.YangParser.Mandatory_stmtCon
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Ordered_by_argContext;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Type_stmtContext;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Unique_stmtContext;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
 
 public class YangModelValidationListTest {
 
@@ -5,10 +5,10 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
 
-import static org.junit.Assert.*;
-import static org.junit.matchers.JUnitMatchers.*;
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.containsString;
 import static org.mockito.Mockito.*;
 
 import org.junit.Before;
@@ -19,7 +19,7 @@ import org.opendaylight.controller.antlrv4.code.gen.YangParser.Namespace_stmtCon
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Revision_stmtContext;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Revision_stmtsContext;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Yang_version_stmtContext;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
 
 public class YangModelValidationModuleTest {
 
@@ -5,11 +5,11 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
 
-import static org.junit.Assert.*;
-import static org.junit.matchers.JUnitMatchers.*;
-import static org.mockito.Mockito.*;
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.mockito.Mockito.mock;
 
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.junit.Before;
@@ -17,7 +17,7 @@ import org.junit.Test;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Belongs_to_stmtContext;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Submodule_header_stmtsContext;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Submodule_stmtContext;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
 
 public class YangModelValidationSubModuleTest {
 
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
 
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.*;
@@ -33,8 +33,8 @@ import org.opendaylight.controller.antlrv4.code.gen.YangParser.Prefix_stmtContex
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Revision_date_stmtContext;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Status_argContext;
 import org.opendaylight.controller.antlrv4.code.gen.YangParser.StringContext;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserListenerImpl;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.impl.YangParserListenerImpl;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
 
 import com.google.common.collect.Sets;
 
index 9e838d29e8bace591f76a3cde2168ce2e7141f5e..c2fee970ac00c8354140de8318786cd0bfcac7c4 100644 (file)
@@ -285,12 +285,13 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
                         //short tag = container.getTag((Long)nextNode.getNodeID());
                         short tag = 0;
                         if (tag != 0) {
-                            log.debug("adding SET_VLAN " + tag
-                                    + "  for traffic leaving " + currNode + "/"
-                                    + outPort + "toward switch " + nextNode);
+                            log.debug("adding SET_VLAN {} for traffic " +
+                                    "leaving {}/{} toward switch {}",
+                                    new Object[] { tag, currNode, outPort,
+                                    nextNode});
                             actions.add(new SetVlanId(tag));
                         } else {
-                            log.debug("No tag assigned to switch " + nextNode);
+                            log.debug("No tag assigned to switch {}", nextNode);
                         }
                     }
                 }
@@ -319,12 +320,12 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
                     //short tag = container.getTag((Long)currNode.getNodeID());
                     short tag = 0;
                     if (tag != 0) {
-                        log.debug("adding MATCH VLAN " + tag
-                                + "  for traffic entering " + currNode + "/"
-                                + inPort);
+                        log.debug("adding MATCH VLAN {} for traffic entering" +
+                                "  {}/{}",
+                                new Object[] {tag, currNode, inPort});
                         match.setField(MatchType.DL_VLAN, tag);
                     } else {
-                        log.debug("No tag assigned to switch " + currNode);
+                        log.debug("No tag assigned to switch {}", currNode);
                     }
                 }
             }
@@ -351,10 +352,11 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
             pos.put(inPort, po);
             this.rulesDB.put(key, pos);
             if (!inPort.getType().equals(NodeConnectorIDType.ALL)) {
-                log.debug("Adding Match(inPort=" + inPort + ",DIP="
-                        + host.getNetworkAddress().getHostAddress()
-                        + ") Action(outPort=" + outPort + ") to node "
-                        + currNode);
+                log.debug("Adding Match(inPort = {} , DIP = {})" +
+                        " Action(outPort= {}) to node {}",
+                        new Object[] { inPort,
+                        host.getNetworkAddress().getHostAddress(),
+                        outPort, currNode});
                 if ((removed_po != null)
                         && (!po.getFlow().getMatch().equals(
                                 removed_po.getFlow().getMatch()))) {
@@ -365,10 +367,10 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
                 }
 
             } else {
-                log.debug("Adding policy Match(DIP="
-                        + host.getNetworkAddress().getHostAddress()
-                        + ") Action(outPort=" + outPort + ") to node "
-                        + currNode);
+                log.debug("Adding policyMatch(DIP = {}) Action(outPort= {}) " + 
+                        "to node {}", new Object[] {
+                        host.getNetworkAddress().getHostAddress(), outPort,
+                        currNode});
             }
         }
     }
@@ -419,8 +421,8 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
             if ((res == null) || ((links = res.getEdges()) == null)) {
                 // Still the path that connect node to rootNode
                 // doesn't exists
-                log.debug("NO Route/Path between SW[" + node + "] --> SW["
-                        + rootNode + "] cleaning potentially existing entries");
+                log.debug("NO Route/Path between SW[{}] --> SW[{}] cleaning " +
+                        "potentially existing entries", node, rootNode);
                 key = new HostNodePair(host, node);
                 pos = this.rulesDB.get(key);
                 if (pos != null) {
@@ -436,8 +438,7 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
                 continue;
             }
 
-            log.debug("Route between SW[" + node + "] --> SW[" + rootNode
-                            + "]");
+            log.debug("Route between SW[{}] --> SW[{}]", node, rootNode);
             Integer curr;
             Node currNode = node;
             key = new HostNodePair(host, currNode);
@@ -528,8 +529,8 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
         if ((res == null) || ((links = res.getEdges()) == null)) {
             // Still the path that connect node to rootNode
             // doesn't exists
-            log.debug("NO Route/Path between SW[" + node + "] --> SW["
-                    + rootNode + "] cleaning potentially existing entries");
+            log.debug("NO Route/Path between SW[{}] --> SW[{}] cleaning " +
+                    "potentially existing entries", node, rootNode);
             key = new HostNodePair(host, node);
             pos = this.rulesDB.get(key);
             if (pos != null) {
@@ -545,7 +546,7 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
             return null;
         }
 
-        log.debug("Route between SW[" + node + "] --> SW[" + rootNode + "]");
+        log.debug("Route between SW[{}] --> SW[{}]", node, rootNode);
         Integer curr;
         Node currNode = node;
         key = new HostNodePair(host, currNode);
@@ -557,10 +558,10 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
                 continue;
             }
 
-            log.debug("Link [" + currNode + "/" + link.getHeadNodeConnector()
-                    + "] --> ["
-                    + link.getHeadNodeConnector().getNode() + "/"
-                    + link.getTailNodeConnector() + "]");
+            log.debug("Link [{}/{}] --> [{}/{}]", new Object[] {
+                    currNode, link.getHeadNodeConnector(),
+                    link.getHeadNodeConnector().getNode(),
+                    link.getTailNodeConnector()});
 
             // Index all the switches to be programmed
             switchesToProgram.add(currNode);
@@ -627,8 +628,8 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
                                 + po.toString() + " on switch " + swId);
                     }
                 } else {
-                    log.error("Cannot find a policy for SW:{" + swId
-                            + "} Host: {" + host + "}");
+                    log.error("Cannot find a policy for SW:({}) Host: ({})",
+                              swId, host);
                     /* // Now dump every single rule */
                     /* for (HostNodePair dumpkey : this.rulesDB.keySet()) { */
                     /*         po = this.rulesDB.get(dumpkey); */
@@ -688,7 +689,7 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
         for (HostNodePair key : this.rulesDB.keySet()) {
             Node node = key.getNode();
             if (targetNode == null || node.equals(targetNode)) {
-                log.debug("Work on " + node + " host " + key.getHost());
+                log.debug("Work on {} host {}", node, key.getHost());
                 pos = this.rulesDB.get(key);
                 for (Map.Entry<NodeConnector, FlowEntry> e : pos.entrySet()) {
                     po = e.getValue();
@@ -697,7 +698,7 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
                         this.frm.uninstallFlowEntry(po);
                     }
                 }
-                log.debug("Remove " + key);
+                log.debug("Remove {}", key);
                 this.rulesDB.remove(key);
             }
         }
@@ -738,8 +739,8 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
         }
         pl.add(po);
         log.debug("Adding Pruned Policy for SwId: {}", swId);
-        log.debug("Old Policy: " + po.toString());
-        log.debug("New Policy: " + new_po.toString());
+        log.debug("Old Policy: {}", po);
+        log.debug("New Policy: {}", new_po);
     }
 
     private void pruneExcessRules(Set<Node> switches) {
@@ -825,7 +826,7 @@ public class SimpleForwardingImpl implements IfNewHostNotify,
 
         switch (type) {
         case REMOVED:
-            log.debug("Node " + node + " gone, doing a cleanup");
+            log.debug("Node {} gone, doing a cleanup", node);
             uninstallPerNodeRules(node);
             break;
         default:
index 79159e5ff102270c0d2e094a732acd5fb77130a5..4ef841643691bdb145c377c85199fa1635f49d29 100644 (file)
@@ -1479,9 +1479,13 @@ public class SwitchManagerImpl implements ISwitchManager,
             ci.println("Please enter node id");
             return;
         }
-        Long id = Long.decode(st);
 
-        Node node = NodeCreator.createOFNode(id);
+        Node node = Node.fromString(st);
+        if (node == null) {
+            ci.println("Please enter node id");
+            return;
+        }
+
         Set<NodeConnector> nodeConnectorSet = getUpNodeConnectors(node);
         if (nodeConnectorSet == null) {
             return;
@@ -1501,10 +1505,14 @@ public class SwitchManagerImpl implements ISwitchManager,
             ci.println("Please enter node id");
             return;
         }
-        Long id = Long.decode(st);
+
+        Node node = Node.fromString(st);
+        if (node == null) {
+            ci.println("Please enter node id");
+            return;
+        }
 
         ci.println("          NodeConnector               BandWidth(Gbps)     Admin     State");
-        Node node = NodeCreator.createOFNode(id);
         Set<NodeConnector> nodeConnectorSet = getNodeConnectors(node);
         if (nodeConnectorSet == null) {
             return;
@@ -1534,8 +1542,14 @@ public class SwitchManagerImpl implements ISwitchManager,
             ci.println("Please enter node id");
             return;
         }
-        Object id = Long.decode(st);
-        Switch sw = getSwitchByNode(NodeCreator.createOFNode((Long) id));
+
+        Node node = Node.fromString(st);
+        if (node == null) {
+            ci.println("Please enter node id");
+            return;
+        }
+
+        Switch sw = getSwitchByNode(node);
 
         ci.println("          NodeConnector                        Name");
         if (sw == null) {
@@ -1549,10 +1563,9 @@ public class SwitchManagerImpl implements ISwitchManager,
                 nodeConnectorName = (propMap == null) ? null : ((Name) propMap
                         .get(Name.NamePropName)).getValue();
                 if (nodeConnectorName != null) {
-                    Node node = nodeConnector.getNode();
-                    if (!node.equals(getNode((Long) id))) {
-                        log.debug("node not match {} {}", node,
-                                getNode((Long) id));
+                    Node nd = nodeConnector.getNode();
+                    if (!nd.equals(node)) {
+                        log.debug("node not match {} {}", nd, node);
                     }
                     Map<String, NodeConnector> map = nodeConnectorNames
                             .get(node);
@@ -1584,9 +1597,12 @@ public class SwitchManagerImpl implements ISwitchManager,
             ci.println("Please enter node id");
             return;
         }
-        Long id = Long.decode(st);
 
-        Node node = NodeCreator.createOFNode(id);
+        Node node = Node.fromString(st);
+        if (node == null) {
+            ci.println("Please enter node id");
+            return;
+        }
 
         st = ci.nextArgument();
         if (st == null) {
index ef42d286eb712c1c6f97a87157acf438557e512e..127a5a09dd596158ea8e31f1318913caacd711d1 100644 (file)
@@ -15,7 +15,6 @@
 
 <c:set var="title" value="OpenDaylight login error" scope="application"/>
 <%
-       if (session != null) session.invalidate();
     String filePath = "/WEB-INF/jsp/customerror.jsp"; 
        URL fileURL = pageContext.getServletContext().getResource(filePath);
        if(fileURL!=null) {
@@ -51,5 +50,6 @@
     </div>
   </div> 
   </form>
+  <% if (session != null) session.invalidate(); %>  
 </body>
 </html>
index ef42d286eb712c1c6f97a87157acf438557e512e..127a5a09dd596158ea8e31f1318913caacd711d1 100644 (file)
@@ -15,7 +15,6 @@
 
 <c:set var="title" value="OpenDaylight login error" scope="application"/>
 <%
-       if (session != null) session.invalidate();
     String filePath = "/WEB-INF/jsp/customerror.jsp"; 
        URL fileURL = pageContext.getServletContext().getResource(filePath);
        if(fileURL!=null) {
@@ -51,5 +50,6 @@
     </div>
   </div> 
   </form>
+  <% if (session != null) session.invalidate(); %>  
 </body>
 </html>
index ef42d286eb712c1c6f97a87157acf438557e512e..a2fa4287a5c06b346c29633cc360169982ec0384 100644 (file)
@@ -15,7 +15,6 @@
 
 <c:set var="title" value="OpenDaylight login error" scope="application"/>
 <%
-       if (session != null) session.invalidate();
     String filePath = "/WEB-INF/jsp/customerror.jsp"; 
        URL fileURL = pageContext.getServletContext().getResource(filePath);
        if(fileURL!=null) {
@@ -51,5 +50,6 @@
     </div>
   </div> 
   </form>
+  <% if (session != null) session.invalidate(); %>
 </body>
 </html>
index 0f4569fc19ded417398157a33cc529810e94ed14..b4695defdb4468d5e3a1324e723e6bab169513ae 100644 (file)
@@ -287,6 +287,8 @@ public class Topology implements IObjectReader, IConfigurationAware {
                                Map<String, String> data = (Map<String, String>) nodeEntry.get("data");
                        data.put("$desc", description);
                        nodeEntry.put("data", data);
+                       // clear adjacencies since this is now a single node
+                       nodeEntry.put("adjacencies", new LinkedList<Map<String, Object>>());
                stagedNodes.put(node.id(), nodeEntry);
             } else {
                newNodes.put(node.id(), node.out());
index ef42d286eb712c1c6f97a87157acf438557e512e..127a5a09dd596158ea8e31f1318913caacd711d1 100644 (file)
@@ -15,7 +15,6 @@
 
 <c:set var="title" value="OpenDaylight login error" scope="application"/>
 <%
-       if (session != null) session.invalidate();
     String filePath = "/WEB-INF/jsp/customerror.jsp"; 
        URL fileURL = pageContext.getServletContext().getResource(filePath);
        if(fileURL!=null) {
@@ -51,5 +50,6 @@
     </div>
   </div> 
   </form>
+  <% if (session != null) session.invalidate(); %>  
 </body>
 </html>
index ef42d286eb712c1c6f97a87157acf438557e512e..a2fa4287a5c06b346c29633cc360169982ec0384 100644 (file)
@@ -15,7 +15,6 @@
 
 <c:set var="title" value="OpenDaylight login error" scope="application"/>
 <%
-       if (session != null) session.invalidate();
     String filePath = "/WEB-INF/jsp/customerror.jsp"; 
        URL fileURL = pageContext.getServletContext().getResource(filePath);
        if(fileURL!=null) {
@@ -51,5 +50,6 @@
     </div>
   </div> 
   </form>
+  <% if (session != null) session.invalidate(); %>
 </body>
 </html>