Delete restconf 00/26600/1
authorTomas Cere <tcere@cisco.com>
Mon, 7 Sep 2015 10:44:42 +0000 (12:44 +0200)
committerTomas Cere <tcere@cisco.com>
Mon, 7 Sep 2015 10:45:15 +0000 (12:45 +0200)
Change-Id: I0cc4ea8375ec22b67ee93e1a02a9131f56f044c2
Signed-off-by: Tomas Cere <tcere@cisco.com>
399 files changed:
features/pom.xml
features/restconf/pom.xml [deleted file]
features/restconf/src/main/resources/features.xml [deleted file]
opendaylight/md-sal/pom.xml
opendaylight/md-sal/sal-rest-connector-config/pom.xml [deleted file]
opendaylight/md-sal/sal-rest-connector-config/src/main/resources/initial/10-rest-connector.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/pom.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModuleFactory.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/common/RestconfValidationUtils.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaExportContentYangBodyWriter.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaExportContentYinBodyWriter.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaExportContext.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaRetrievalService.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaRetrievalServiceImpl.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/Draft02.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestConnector.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfConstants.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfNormalizedNodeWriter.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfService.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/package-info.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/AbstractIdentifierAwareJaxRsProvider.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/DepthAwareNormalizedNodeWriter.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/JsonNormalizedNodeBodyReader.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/NormalizedNodeJsonBodyWriter.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/NormalizedNodeXmlBodyWriter.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestUtil.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfApplication.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfCompositeWrapper.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfDelegatingNormalizedNodeWriter.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfDocumentedExceptionMapper.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/UnsupportedFormatException.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/XmlNormalizedNodeBodyReader.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/package-info.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/IdentityValuesDTO.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/InstanceIdentifierContext.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/NormalizedDataPrunner.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/NormalizedNodeContext.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/QueryParametersParser.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestCodec.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfDocumentedException.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfError.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfImpl.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfProviderImpl.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/StatisticsRestconfServiceWrapper.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/WriterParameters.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/package-info.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/listeners/ListenerAdapter.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/listeners/Notificator.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/websockets/WebSocketServer.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/websockets/WebSocketServerHandler.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/websockets/WebSocketServerInitializer.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/resources/WEB-INF/web.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/yang/opendaylight-rest-connector.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/main/yang/sal-remote-augment.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/md/sal/rest/common/TestRestconfUtils.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/draft02/test/RestPostOperationTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/AbstractBodyReaderTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestJsonBodyReader.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestJsonBodyReaderMountPoint.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestJsonBodyWriter.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReader.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReaderMountPoint.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyWriter.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/cnsn/to/json/test/CnSnToJsonBasicDataTypesTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/cnsn/to/json/test/CnSnToJsonIdentityrefTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/cnsn/to/json/test/CnSnToJsonWithDataFromSeveralModulesTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/input/to/cnsn/test/RestPutListDataTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/json/to/nn/test/JsonIdentityrefToNnTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/json/to/nn/test/JsonLeafrefToNnTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/json/to/nn/test/JsonToNnTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/json/test/NnJsonChoiceCaseTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/json/test/NnToJsonLeafrefType.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/json/test/NnToJsonNotExistingLeafTypeTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/json/test/NnToJsonWithAugmentTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnInstanceIdentifierToXmlTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlNotExistingLeafTypeTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlWithChoiceTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlWithDataFromSeveralModulesTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/BrokerFacadeTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/Bug3595Test.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/CnSnToXmlAndJsonInstanceIdentifierTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/CodecsExceptionsCatchingTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/CutDataToCorrectDepthTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/DummyFuture.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/DummyRpcResult.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/DummyType.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/InvokeRpcMethodTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/MediaTypesTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/MultipleEqualNamesForDataNodesTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/NormalizeNodeTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestCodecExceptionsTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestDeleteOperationTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestGetAugmentedElementWhenEqualNamesTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestGetOperationTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestOperationUtils.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPostOperationTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPutConfigTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPutOperationTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfDocumentedExceptionMapperTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfErrorTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfImplTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/TestUtils.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/URIParametersParsing.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/URITest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/XmlAndJsonToCnSnInstanceIdentifierTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/XmlAndJsonToCnSnLeafRefTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/YangAndXmlAndDataSchemaLoader.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/websockets/client/IClientMessageCallback.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/websockets/client/WebSocketClient.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/websockets/client/WebSocketClientHandler.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/websockets/test/RestStream.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/xml/to/cnsn/test/XmlAugmentedElementToCnSnTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/xml/to/cnsn/test/XmlToCnSnTest.java [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/json/dataa.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/json/datab.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/xml/dataa.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/xml/datab.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/yang/augment-main-a.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/yang/augment-main-b.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/yang/main.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/datastore-and-scope-specification/opendaylight-inventory.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/datastore-and-scope-specification/sal-remote-augment.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/datastore-and-scope-specification/sal-remote@2014-01-14.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/decoding-exception/yang/number.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/equal-name-data-for-container.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/equal-name-data-for-container.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/equal-name-data-for-leaf.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/equal-name-data-for-leaf.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/yang/equal-data-node-names.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data-rpc-input.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data-rpc-input.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data2.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data3.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data4.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data5.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data6.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data7.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-module/test-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/testData.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/testData.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/ex-vlan.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/iana-if-type.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/ietf-interfaces@2013-07-04.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/ietf-yang-types@2013-05-16.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/sal-remote@2014-01-14.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/simple-nodes.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/toaster.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/json_augment_choice_container.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/json_augment_container.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/json_sub_container.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/jsondata.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/jsondata_leaf_list.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xml_augment_choice_container.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xml_augment_container.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xml_sub_container.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xmldata.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xmldata_leaf_list.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/yang/augment-augment-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/yang/augment-module-leaf-list.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/yang/augment-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/yang/instance-identifier-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/invoke-rpc-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/json/rpc-input.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/json/rpc-output.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/xml/rpc-input.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/xml/rpc-output.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/array-with-null.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/empty-data.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/empty-data1.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/identityref/identity-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/identityref/identityref-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/identityref/json/data.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/invalid-uri-character-in-value.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/leafref/augment-leafref-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/leafref/json/data.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/leafref/leafref-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/multiple-items-in-list.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/multiple-leaflist-items.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-container-yang/simple-container.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-container.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list-yang/1/simple-list1.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list-yang/2/simple-list2.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list-yang/3/multiple-items.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list-yang/4/array-with-null.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/unsupported-json-format.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/wrong-top-level1.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/wrong-top-level2.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/wrong-top-level3.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/leafref/json/jsondata.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/leafref/xml/xmldata.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/leafref/yang/leafref-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/leafref/yang/referenced-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/iana-if-type.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/ietf-inet-types.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/ietf-interfaces@2013-07-04.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/ietf-restconf@2013-10-19.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/ietf-yang-types.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/module1.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/module2.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/module3.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/iana-if-type.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/ietf-inet-types.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/ietf-interfaces@2013-07-04.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/ietf-restconf@2013-10-19.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/ietf-yang-types.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/module1-behind-mount-point.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/module2-behind-mount-point.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/nested-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/multiple-nodes/multiple-nodes.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/augment-container.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/augment-leaf.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/augment-leaflist.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/augment-list.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/xml/data.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/yang.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/choice.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_case_defined_without_case.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_container.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_leaflist.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_list.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_more_choices_same_level.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_more_choices_same_level_various_paths_err.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_no_first_case.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_random_level.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_three_choices_same_level.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_various_path_err.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/data-of-several-modules/yang/module1.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/data-of-several-modules/yang/module2.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/identityref/identity-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/identityref/identityref-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/invalid-top-level-element/invalid-top-level-element.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/cont-augment-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/main-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_absolut_ref_to_existing_leaf.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_from_leafref_to_leafref.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_ref_to_non_existing_leaf.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_ref_to_not_leaf.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_relativ_ref_from_leaflist_to_existing_leaf.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_relativ_ref_to_existing_leaf.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/list/list-types-module [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-data-types/simple-data-types.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-data-types/xml/bad-data.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-data-types/xml/data.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/simple-yang-types.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/xml/awaited_output_data.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/xml/awaited_output_empty_data.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/xml/data.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/xml/empty_data.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/choice/module-with-choice.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/data-of-several-modules/yang/module1.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/data-of-several-modules/yang/module2.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/instance_identifier/aug-referenced-elements-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/instance_identifier/eferenced-elements-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/instance_identifier/rinstance-identifier-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/yang/basic-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/yang/referenced-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/normalize-node/yang/normalize-node-module [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces2.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces_absolute_path.json [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces_absolute_path.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces_absolute_path2.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces_interface_absolute_path.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/test-mount-point/yang/test-interface.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/test-mount-point/yang/test-interface2.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/block-data.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/data2.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/test-interface.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/test-interface2.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/test-interface3.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/yang1/test-interface.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/yang2/test-interface2.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/varioustest/xmldata.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-container-yang/data-container.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-container.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-list-yang/data-container.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-list-yang/data-list.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-list.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-nmspc-in-attributes.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-of-several-modules/yang/module1.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-of-several-modules/yang/module2.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/empty-data.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/identity-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/identityref-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-default-nmspc-in-element.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-default-nmspc-in-parrent-element.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-nmspc-in-element.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-nmspc-in-parrent-element.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-no-nmspc-value-with-prefix.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-no-nmspc-value-without-prefix.xml [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/yang-augments/general-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/yang-augments/identity-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/yang-augments/identityref-module.yang [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/leafref/leafref-module [deleted file]
opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/leafref/xml/data.xml [deleted file]
opendaylight/md-sal/sal-rest-docgen-maven/pom.xml [deleted file]
opendaylight/md-sal/sal-rest-docgen-maven/src/main/java/org/opendaylight/controller/sal/rest/doc/maven/StaticDocGenerator.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/pom.xml [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/DocProvider.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/api/ApiDocService.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGenerator.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocServiceImpl.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/BaseYangSwaggerGenerator.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/ModelGenerator.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/jaxrs/ApiDocApplication.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/jaxrs/JaxbContextResolver.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/model/builder/OperationBuilder.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/mountpoints/MountPointSwagger.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/Api.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/ApiDeclaration.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/Operation.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/Parameter.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/Resource.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/ResourceList.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/ResponseMessage.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/util/RestDocgenUtil.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/README.txt [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/WEB-INF/web.xml [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/highlight.default.css [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/screen.css [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/animated-overlay.gif [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_222222_256x240.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_228ef1_256x240.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_ef8c08_256x240.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_ffd27a_256x240.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_ffffff_256x240.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/jquery-ui-1.10.4.custom.css [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/jquery-ui-1.10.4.custom.min.css [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/logo_small.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/pet_store_api.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/throbber.gif [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/wordnik_api.png [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/index.html [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/backbone-min.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/handlebars-1.0.0.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/highlight.7.3.pack.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery-1.8.0.min.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery-ui-1.11.0.min.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery.ba-bbq.min.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery.slideto.min.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery.wiggle.min.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/odl/list_mounts.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/odl/swagger.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/shred.bundle.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/shred/content.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/swagger.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/underscore-min.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/fonts.css [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/index.html [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/opendaylight.css [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/swagger-ui.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/swagger.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/swagger-ui.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/swagger-ui.min.js [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorTest.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/DocGenTestHelper.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ModelGeneratorTest.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/MountPointSwaggerTest.java [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/resources/sample-swagger-spec.json [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/resources/toaster.json [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/resources/topology-good.json [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/resources/topology-new.json [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/resources/topology.json [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/resources/wadl.xml [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/opflex.yang [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/toaster.yang [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/toaster_augmented.yang [deleted file]
opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/toaster_short.yang [deleted file]
opendaylight/md-sal/sal-restconf-broker/pom.xml [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/binding/impl/DataBrokerServiceImpl.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/SalRemoteServiceBroker.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/client/SalRemoteClient.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/client/SalRemoteClientDeployer.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/client/SalRemoteClientImpl.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/event/RemoteDataChangeEvent.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/DataBrokerServiceImpl.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/NotificationServiceImpl.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/RemoteServicesFactory.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/RpcConsumerRegistryImpl.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/RemoteDataChangeNotificationListener.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/RemoteNotificationListener.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/SalNotificationListener.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/tools/RemoteStreamTools.java [deleted file]
opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/transactions/RemoteDataModificationTransaction.java [deleted file]

index 4cc357b32e8885e860f88e147b4982a67336c634..c03e7cf9f7145d49cec45153c3f4c36fb82b1942 100644 (file)
@@ -17,7 +17,6 @@
     <module>mdsal</module>
     <module>protocol-framework</module>
     <module>akka</module>
-    <module>restconf</module>
     <module>extras</module>
   </modules>
 </project>
diff --git a/features/restconf/pom.xml b/features/restconf/pom.xml
deleted file mode 100644 (file)
index 5541406..0000000
+++ /dev/null
@@ -1,345 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Necessary TODO: Put your copyright here.
-
- 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
---><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>
-    <groupId>org.opendaylight.controller</groupId>
-    <artifactId>sal-parent</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
-    <relativePath>../../opendaylight/md-sal</relativePath>
-   </parent>
-   <!--
-    Necessary TODO: Hookup your parent pom here, else you will not get necessary versions,
-    maven repos etc.  If you run this archetype in a subdirectory of your project, it
-    will pick the pom.xml from the parent directory as the parent pom, which may or may
-    not be correct.
-  -->
-   <artifactId>features-restconf</artifactId>
-   <groupId>org.opendaylight.controller</groupId>
-   <!-- Optional TODO: Uncomment version if you are not using a parent pom.xml
-   <version>1.2.0-SNAPSHOT</version>
-   -->
-   <packaging>jar</packaging>
-   <properties>
-      <features.file>features.xml</features.file>
-   </properties>
-   <dependencies>
-    <!--
-      Necessary TODO: Put dependencies on any feature repos
-      you use in your features.xml file.
-
-      Note: they will need to be <type>xml</xml>
-      and <classifier>features</classifier>.
-      One other thing to watch for is to make sure they are
-      <scope>compile</compile>, which they should be by default,
-      but be cautious lest they be at a different scope in a parent pom.
-
-      Examples:
-        <dependency>
-          <groupId>org.opendaylight.yangtools</groupId>
-          <artifactId>features-yangtools</artifactId>
-          <version>0.8.0-SNAPSHOT</version>
-          <classifier>features</classifier>
-          <type>xml</type>
-        </dependency>
-        <dependency>
-          <groupId>org.opendaylight.controller</groupId>
-          <artifactId>features-mdsal</artifactId>
-          <version>1.3.0-SNAPSHOT</version>
-          <classifier>features</classifier>
-          <type>xml</type>
-        </dependency>
-        <dependency>
-          <groupId>org.opendaylight.openflowplugin</groupId>
-          <artifactId>features-openflowplugin</artifactId>
-          <version>0.2.0-SNAPSHOT</version>
-          <classifier>features</classifier>
-          <type>xml</type>
-        </dependency>
-    -->
-
-    <!--
-      Necessary TODO: Put dependencies for bundles directly referenced
-      in your features.xml file.  For every <bundle> reference in your
-      features.xml file, you need a corresponding dependency here.
-
-      Examples:
-      <dependency>
-        <groupId>org.opendaylight.controller</groupId>
-        <artifactId>controller-provider</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.opendaylight.controller</groupId>
-        <artifactId>controller-model</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-    -->
-
-    <!--
-      Necessary TODO: Put dependencies for configfiles directly referenced
-      in your features.xml file.  For every <configfile> reference in your
-      features.xml file, you need a corresponding dependency here.
-
-      Example (presuming here version is coming from the parent pom):
-      <dependency>
-        <groupId>org.opendaylight.controller</groupId>
-        <artifactId>controller-config</artifactId>
-        <version>${project.version}</version>
-        <type>xml</type>
-        <classifier>config</classifier>
-      </dependency>
-    -->
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>features-yangtools</artifactId>
-      <version>${yangtools.version}</version>
-      <classifier>features</classifier>
-      <type>xml</type>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>features-mdsal</artifactId>
-      <version>${mdsal.version}</version>
-      <classifier>features</classifier>
-      <type>xml</type>
-    </dependency>
-    <!-- dependency>
-      <groupId>org.opendaylight.aaa</groupId>
-      <artifactId>features-aaa</artifactId>
-      <version>${aaa.version}</version>
-      <classifier>features</classifier>
-      <type>xml</type>
-    </dependency -->
-
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-remote</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-rest-connector</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.google.code.gson</groupId>
-      <artifactId>gson</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.sun.jersey</groupId>
-      <artifactId>jersey-core</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.sun.jersey</groupId>
-      <artifactId>jersey-server</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.sun.jersey</groupId>
-      <artifactId>jersey-servlet</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-buffer</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-codec</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-codec-http</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-common</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-handler</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-transport</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-rest-connector-config</artifactId>
-      <version>${mdsal.version}</version>
-      <type>xml</type>
-      <classifier>config</classifier>
-    </dependency>
-
-        <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-annotations</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-core</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-databind</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.datatype</groupId>
-      <artifactId>jackson-datatype-json-org</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.module</groupId>
-      <artifactId>jackson-module-jaxb-annotations</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.jaxrs</groupId>
-      <artifactId>jackson-jaxrs-base</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.jaxrs</groupId>
-      <artifactId>jackson-jaxrs-json-provider</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.json</groupId>
-      <artifactId>json</artifactId>
-    </dependency>
-
-    <dependency>
-        <groupId>org.opendaylight.yangtools</groupId>
-        <artifactId>yang-data-codec-gson</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.opendaylight.controller.samples</groupId>
-      <artifactId>clustering-it-model</artifactId>
-      <version>${mdsal.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller.samples</groupId>
-      <artifactId>clustering-it-provider</artifactId>
-      <version>${mdsal.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller.samples</groupId>
-      <artifactId>clustering-it-config</artifactId>
-      <version>${mdsal.version}</version>
-      <type>xml</type>
-      <classifier>config</classifier>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller.samples</groupId>
-      <artifactId>clustering-it-config</artifactId>
-      <version>${mdsal.version}</version>
-      <type>xml</type>
-      <classifier>testmoduleshardconf</classifier>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller.samples</groupId>
-      <artifactId>clustering-it-config</artifactId>
-      <version>${mdsal.version}</version>
-      <type>xml</type>
-      <classifier>testmoduleconf</classifier>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-rest-docgen</artifactId>
-    </dependency>
-
-    <!--
-      Optional TODO: Remove TODO comments.
-    -->
-    <!-- test to validate features.xml -->
-    <dependency>
-      <groupId>org.opendaylight.odlparent</groupId>
-      <artifactId>features-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!-- dependency for opendaylight-karaf-empty for use by testing -->
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>opendaylight-karaf-empty</artifactId>
-      <version>${commons.opendaylight.version}</version>
-      <type>zip</type>
-    </dependency>
-    <!-- Uncomment this if you get an error : java.lang.NoSuchMethodError: org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple;
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-simple</artifactId>
-      <version>1.7.2</version>
-    </dependency>
-    -->
-
-   </dependencies>
-   <build>
-      <resources>
-         <resource>
-            <directory>src/main/resources</directory>
-            <filtering>true</filtering>
-         </resource>
-      </resources>
-      <plugins>
-         <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-resources-plugin</artifactId>
-            <executions>
-               <execution>
-                  <id>filter</id>
-                  <phase>generate-resources</phase>
-                  <goals>
-                     <goal>resources</goal>
-                  </goals>
-               </execution>
-            </executions>
-         </plugin>
-         <plugin>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>build-helper-maven-plugin</artifactId>
-            <executions>
-               <execution>
-                  <id>attach-artifacts</id>
-                  <phase>package</phase>
-                  <goals>
-                     <goal>attach-artifact</goal>
-                  </goals>
-                  <configuration>
-                     <artifacts>
-                        <artifact>
-                           <file>${project.build.directory}/classes/${features.file}</file>
-                           <type>xml</type>
-                           <classifier>features</classifier>
-                        </artifact>
-                     </artifacts>
-                  </configuration>
-               </execution>
-            </executions>
-         </plugin>
-         <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <version>${surefire.version}</version>
-            <configuration>
-              <systemPropertyVariables>
-                <karaf.distro.groupId>org.opendaylight.controller</karaf.distro.groupId>
-                <karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId>
-                <karaf.distro.version>${commons.opendaylight.version}</karaf.distro.version>
-              </systemPropertyVariables>
-              <dependenciesToScan>
-               <dependency>org.opendaylight.odlparent:features-test</dependency>
-              </dependenciesToScan>
-            </configuration>
-          </plugin>
-      </plugins>
-   </build>
-   <scm>
-      <connection>scm:git:http://git.opendaylight.org/gerrit/controller.git</connection>
-      <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
-      <tag>HEAD</tag>
-      <url>https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=summary</url>
-   </scm>
-</project>
diff --git a/features/restconf/src/main/resources/features.xml b/features/restconf/src/main/resources/features.xml
deleted file mode 100644 (file)
index 87cab84..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
- Copyright (c) 2014 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
--->
-<features name="odl-controller-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
-    <!--
-        Necessary TODO: Please read the features guidelines:
-        https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Feature_Best_Practices
-    -->
-    <!--
-    Necessary TODO: Add repo entries for the repositories of features you refer to
-        in this feature file but do not define here.
-        Examples:
-            <repository>mvn:org.opendaylight.yangtools/features-yangtools/0.8.0-SNAPSHOT/xml/features</repository>
-            <repository>mvn:org.opendaylight.controller/features-mdsal/1.3.0-SNAPSHOT/xml/features</repository>
-            <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/0.2.0-SNAPSHOT/xml/features</repository>
-    -->
-    <repository>mvn:org.opendaylight.controller/features-mdsal/${mdsal.version}/xml/features</repository>
-    <repository>mvn:org.opendaylight.yangtools/features-yangtools/${yangtools.version}/xml/features</repository>
-    <!-- repository>mvn:org.opendaylight.aaa/features-aaa/${aaa.version}/xml/features</repository -->
-    <feature name='odl-restconf-all' version='${project.version}' description='OpenDaylight :: Restconf :: All'>
-        <!--
-            Necessary TODO:
-            List all of the user consumable features you define in this feature file here.
-            Generally you would *not* list individual bundles here, but only features defined in *this* file.
-            It is useful to list them in the same order they occur in the file.
-
-            Examples:
-            <feature version='${project.version}'>odl-controller-provider</feature>
-            <feature version='${project.version}'>odl-controller-model</feature>
-        -->
-        <feature version='${project.version}'>odl-restconf</feature>
-        <feature version='${project.version}'>odl-mdsal-apidocs</feature>
-    </feature>
-    <!--
-        Necessary TODO: Define your features.  It is useful to list then in order of dependency.  So if A depends on B, list A first.
-        When naming your features please be mindful of the guidelines:
-            https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines
-        Particularly:
-            a) Prefixing names with 'odl-': https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Feature_Naming
-            b) Descriptions: https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Description
-            c) Avoid start-levels: https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Avoid_start-levels
-
-        It's also nice to list inside a feature, first the features it needs, then the bundles it needs, then the configfiles.
-        Examples:
-
-        * Basic MD-SAL Provider
-        <feature name='odl-controller-provider' version='${project.version}' description='OpenDaylight :: controller :: Provider '>
-            <feature version='1.3.0-SNAPSHOT'>odl-mdsal-broker</feature>
-            <feature version='${project.version}'>odl-controller-model</feature>
-            <bundle>mvn:org.opendaylight.controller/controller-provider/${project.version}</bundle>
-            ... whatever other bundles you need
-        </feature>
-
-        * Basic MD-SAL Model feature
-        <feature name='odl-controller-model' version='${project.version}' description='OpenDaylight :: controller :: Model'>
-            <feature version='0.8.0-SNAPSHOT'>odl-yangtools-binding</feature>
-            <feature version='0.8.0-SNAPSHOT'>odl-yangtools-models</feature>
-            <bundle>mvn:org.opendaylight.controller/controller-model/${project.version}</bundle>
-            ... whatever other bundles you need
-        </feature>
-
-        * Config Subsystem example - the config file is your config subsystem configuration
-        <feature name='odl-controller-provider' version='${project.version}' description='OpenDaylight :: controller :: Provider'>
-            <feature version='1.3.0-SNAPSHOT'>odl-mdsal-broker</feature>
-            <bundle>mvn:org.opendaylight.controller/controller-provider/${project.version}</bundle>
-            <configfile finalname="etc/opendaylight/karaf/80-controller.xml">mvn:org.opendaylight.controller/controller-config/${project.version}/xml/config</configfile>
-            ... whatever other bundles you need
-        </feature>
-
-        * Basic MD-SAL Provider that uses openflowplugin-flow-services (which brings along odl-mdsal-broker)
-        <feature name='odl-controller-provider' version='${project.version}' description='OpenDaylight :: controller :: Provider'>
-            <feature version='0.2.0-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
-            <bundle>mvn:org.opendaylight.controller/controller-provider/${project.version}</bundle>
-            ... whatever other bundles you need
-        </feature>
-
-    -->
-
-    <feature name='odl-restconf' version='${project.version}' description="OpenDaylight :: Restconf">
-        <!-- feature version='${aaa.version}'>odl-aaa-authn</feature -->
-        <feature version='${mdsal.version}'>odl-restconf-noauth</feature>
-    </feature>
-    <feature name='odl-restconf-noauth' version='${project.version}' description="OpenDaylight :: Restconf">
-        <feature version='${mdsal.version}'>odl-mdsal-broker</feature>
-        <feature>war</feature>
-        <!-- presently we need sal-remote to be listed BEFORE sal-rest-connector because sal-rest-connector
-             has a yang file which augments a yang file in sal-remote, and order seems to matter -->
-        <bundle>mvn:org.opendaylight.controller/sal-remote/${project.version}</bundle>
-        <bundle>mvn:org.opendaylight.controller/sal-rest-connector/${project.version}</bundle>
-        <bundle>mvn:com.google.code.gson/gson/${gson.version}</bundle>
-        <bundle>mvn:org.opendaylight.yangtools/yang-data-codec-gson/${yangtools.version}</bundle>
-        <bundle>mvn:org.opendaylight.yangtools/yang-model-export/${yangtools.version}</bundle>
-        <bundle>mvn:com.sun.jersey/jersey-core/${jersey.version}</bundle>
-        <bundle>mvn:com.sun.jersey/jersey-server/${jersey.version}</bundle>
-        <bundle>mvn:com.sun.jersey/jersey-servlet/${jersey.version}</bundle>
-        <bundle>mvn:io.netty/netty-buffer/${netty.version}</bundle>
-        <bundle>mvn:io.netty/netty-codec/${netty.version}</bundle>
-        <bundle>mvn:io.netty/netty-codec-http/${netty.version}</bundle>
-        <bundle>mvn:io.netty/netty-common/${netty.version}</bundle>
-        <bundle>mvn:io.netty/netty-handler/${netty.version}</bundle>
-        <bundle>mvn:io.netty/netty-transport/${netty.version}</bundle>
-        <configfile finalname="${config.configfile.directory}/${config.restconf.configfile}">mvn:org.opendaylight.controller/sal-rest-connector-config/${mdsal.version}/xml/config</configfile>
-    </feature>
-    <feature name ='odl-mdsal-apidocs' version='${project.version}' description="OpenDaylight :: MDSAL :: APIDOCS">
-        <feature version='${project.version}'>odl-restconf</feature>
-        <bundle>mvn:org.opendaylight.controller/sal-rest-docgen/${project.version}</bundle>
-        <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle>
-        <bundle>mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
-        <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
-        <bundle>mvn:com.fasterxml.jackson.datatype/jackson-datatype-json-org/${jackson.version}</bundle>
-        <bundle>mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${jackson.version}</bundle>
-        <bundle>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/${jackson.version}</bundle>
-        <bundle>mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${jackson.version}</bundle>
-        <bundle>mvn:com.sun.jersey/jersey-core/${jersey.version}</bundle>
-        <bundle>mvn:com.sun.jersey/jersey-server/${jersey.version}</bundle>
-        <bundle>mvn:com.sun.jersey/jersey-servlet/${jersey.version}</bundle>
-        <bundle>wrap:mvn:org.json/json/${org.json.version}</bundle>
-    </feature>
-
-    <feature name='odl-toaster-rest' version='${project.version}'>
-        <feature version='${project.version}'>odl-restconf</feature>
-        <feature version='${project.version}'>odl-toaster</feature>
-    </feature>
-
-    <feature name='odl-toaster-ui' version='${project.version}'>
-        <feature version='${project.version}'>odl-mdsal-apidocs</feature>
-        <feature version='${project.version}'>odl-mdsal-xsql</feature>
-        <feature version='${project.version}'>odl-toaster-rest</feature>
-    </feature>
-    <!-- Optional TODO: Remove TODO Comments -->
-
-</features>
index baa85ff78813f97c2443a64417cf478736442377..6df11856633f14393a67c248cd6f10f8725074c8 100644 (file)
 
     <!-- Base Models -->
     <module>sal-remote</module>
-    <module>sal-restconf-broker</module>
 
     <!-- Connectors -->
     <module>sal-connector-api</module>
-    <module>sal-rest-connector</module>
-    <module>sal-rest-connector-config</module>
-
-    <!-- Documentation -->
-    <module>sal-rest-docgen</module>
-    <module>sal-rest-docgen-maven</module>
 
     <module>sal-akka-raft</module>
     <module>sal-akka-raft-example</module>
diff --git a/opendaylight/md-sal/sal-rest-connector-config/pom.xml b/opendaylight/md-sal/sal-rest-connector-config/pom.xml
deleted file mode 100644 (file)
index 7be6cec..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright (c) 2014 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
--->
-<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>
-    <groupId>org.opendaylight.controller</groupId>
-    <artifactId>sal-parent</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
-  </parent>
-  <artifactId>sal-rest-connector-config</artifactId>
-  <description>Configuration files for sal-rest-connector</description>
-  <packaging>jar</packaging>
-    <build>
-    <plugins>
-        <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>attach-artifacts</id>
-            <goals>
-              <goal>attach-artifact</goal>
-            </goals>
-            <phase>package</phase>
-            <configuration>
-              <artifacts>
-                <artifact>
-                  <file>${project.build.directory}/classes/initial/10-rest-connector.xml</file>
-                  <type>xml</type>
-                  <classifier>config</classifier>
-                </artifact>
-              </artifacts>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/opendaylight/md-sal/sal-rest-connector-config/src/main/resources/initial/10-rest-connector.xml b/opendaylight/md-sal/sal-rest-connector-config/src/main/resources/initial/10-rest-connector.xml
deleted file mode 100644 (file)
index 3be423c..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Copyright (c) 2014 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
--->
-<snapshot>
-  <configuration>
-    <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-      <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
-        <!-- default OF-switch-connection-provider (port 6633) -->
-        <module>
-          <type xmlns:rest="urn:opendaylight:params:xml:ns:yang:controller:md:sal:rest:connector">rest:rest-connector-impl</type>
-          <name>rest-connector-default-impl</name>
-          <websocket-port>8185</websocket-port>
-          <dom-broker>
-            <type xmlns:dom="urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom">dom:dom-broker-osgi-registry</type>
-            <name>dom-broker</name>
-          </dom-broker>
-        </module>
-      </modules>
-
-      <services xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
-        <service>
-          <type xmlns:rest="urn:opendaylight:params:xml:ns:yang:controller:md:sal:rest:connector">rest:rest-connector</type>
-          <instance>
-            <name>rest-connector-default</name>
-            <provider>
-              /modules/module[type='rest-connector-impl'][name='rest-connector-default-impl']
-            </provider>
-          </instance>
-        </service>
-      </services>
-    </data>
-  </configuration>
-  <required-capabilities>
-      <capability>urn:opendaylight:params:xml:ns:yang:controller:md:sal:rest:connector?module=opendaylight-rest-connector&amp;revision=2014-07-24</capability>
-  </required-capabilities>
-</snapshot>
diff --git a/opendaylight/md-sal/sal-rest-connector/pom.xml b/opendaylight/md-sal/sal-rest-connector/pom.xml
deleted file mode 100644 (file)
index 49c654c..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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>
-    <groupId>org.opendaylight.controller</groupId>
-    <artifactId>sal-parent</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
-  </parent>
-  <artifactId>sal-rest-connector</artifactId>
-  <packaging>bundle</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>sal-connector-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>sal-core-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>sal-dom-config</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>config-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.google.code.gson</groupId>
-      <artifactId>gson</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-codec-http</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-common-util</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-common-impl</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-binding-broker-impl</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-remote</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>yang-data-impl</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>yang-model-util</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>yang-parser-impl</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools.model</groupId>
-      <artifactId>ietf-restconf</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools.model</groupId>
-      <artifactId>ietf-yang-types-20130715</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools.model</groupId>
-      <artifactId>ietf-inet-types</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.jboss.resteasy</groupId>
-      <artifactId>jaxrs-api</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-core-spi</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>yang-data-codec-gson</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>yang-model-export</artifactId>
-      <!-- FIXME: remove explicit version, once model export package is part of yangtools-artefacts -->
-      <version>0.8.0-SNAPSHOT</version>
-    </dependency>
-
-    <dependency>
-      <groupId>net.java.dev.stax-utils</groupId>
-      <artifactId>stax-utils</artifactId>
-      <version>20070216</version>
-    </dependency>
-
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-classic</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <!-- Testing Dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-      <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-all</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <extensions>true</extensions>
-        <configuration>
-          <instructions>
-            <Bundle-Name>MD SAL Restconf Connector</Bundle-Name>
-            <Private-Package>org.opendaylight.controller.sal.rest.*,
-              org.opendaylight.controller.sal.restconf.rpc.*,
-              org.opendaylight.controller.sal.restconf.impl,
-              org.opendaylight.controller.md.sal.rest.common.*,
-              org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.rest.connector.rev140724.*,
-            </Private-Package>
-            <Import-Package>*,
-            com.sun.jersey.spi.container.servlet, org.eclipse.jetty.servlets</Import-Package>
-            <Embed-Dependency>stax-utils</Embed-Dependency>
-            <Web-ContextPath>/restconf</Web-ContextPath>
-          </instructions>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.opendaylight.yangtools</groupId>
-        <artifactId>yang-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>config</id>
-            <goals>
-              <goal>generate-sources</goal>
-            </goals>
-            <configuration>
-              <codeGenerators>
-                <generator>
-                  <codeGeneratorClass>org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator</codeGeneratorClass>
-                  <outputBaseDir>${jmxGeneratorPath}</outputBaseDir>
-                  <additionalConfiguration>
-                    <namespaceToPackage1>urn:opendaylight:params:xml:ns:yang:controller==org.opendaylight.controller.config.yang</namespaceToPackage1>
-                  </additionalConfiguration>
-                </generator>
-                <generator>
-                  <codeGeneratorClass>org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl</codeGeneratorClass>
-                  <outputBaseDir>${salGeneratorPath}</outputBaseDir>
-                </generator>
-              </codeGenerators>
-              <inspectDependencies>true</inspectDependencies>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-  <scm>
-    <connection>scm:git:http://git.opendaylight.org/gerrit/controller.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
-    <tag>HEAD</tag>
-    <url>https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL</url>
-  </scm>
-</project>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModule.java
deleted file mode 100644 (file)
index fe20e3a..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.opendaylight.controller.config.yang.md.sal.rest.connector;
-
-import org.opendaylight.controller.sal.restconf.impl.RestconfProviderImpl;
-
-
-public class RestConnectorModule extends org.opendaylight.controller.config.yang.md.sal.rest.connector.AbstractRestConnectorModule {
-
-    private static RestConnectorRuntimeRegistration runtimeRegistration;
-
-    public RestConnectorModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
-        super(identifier, dependencyResolver);
-    }
-
-    public RestConnectorModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.md.sal.rest.connector.RestConnectorModule oldModule, java.lang.AutoCloseable oldInstance) {
-        super(identifier, dependencyResolver, oldModule, oldInstance);
-    }
-
-    @Override
-    public void customValidation() {
-        // add custom validation form module attributes here.
-    }
-
-    @Override
-    public java.lang.AutoCloseable createInstance() {
-        // Create an instance of our provider
-        RestconfProviderImpl instance = new RestconfProviderImpl();
-        // Set its port
-        instance.setWebsocketPort(getWebsocketPort());
-        // Register it with the Broker
-        getDomBrokerDependency().registerProvider(instance);
-
-        if(runtimeRegistration != null){
-            runtimeRegistration.close();
-        }
-
-        runtimeRegistration =
-            getRootRuntimeBeanRegistratorWrapper().register(instance);
-
-        return instance;
-    }
-}
-
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModuleFactory.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/config/yang/md/sal/rest/connector/RestConnectorModuleFactory.java
deleted file mode 100644 (file)
index 1964a17..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
-* Generated file
-*
-* Generated from: yang module name: opendaylight-rest-connector yang module local name: rest-connector-impl
-* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
-* Generated at: Fri Jul 25 04:33:31 CDT 2014
-*
-* Do not modify this file unless it is present under src/main directory
-*/
-package org.opendaylight.controller.config.yang.md.sal.rest.connector;
-
-public class RestConnectorModuleFactory extends org.opendaylight.controller.config.yang.md.sal.rest.connector.AbstractRestConnectorModuleFactory {
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/common/RestconfValidationUtils.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/common/RestconfValidationUtils.java
deleted file mode 100644 (file)
index 0d53c9c..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Copyright (c) 2015 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.md.sal.rest.common;
-
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType;
-
-/**
- * sal-rest-connector
- * org.opendaylight.controller.md.sal.rest.common
- *
- * Utility class is centralizing all needed validation functionality for a Restconf osgi module.
- * All methods have to throw {@link RestconfDocumentedException} only, which is a representation
- * for all error situation followed by restconf-netconf specification.
- * @see {@link https://tools.ietf.org/html/draft-bierman-netconf-restconf-02}
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
- * Created: Feb 24, 2015
- */
-public class RestconfValidationUtils {
-
-    private RestconfValidationUtils () {
-        throw new UnsupportedOperationException("Utility class");
-    }
-
-    /**
-     * Method returns {@link RestconfDocumentedException} for a false condition.
-     *
-     * @param condition - condition for rise {@link RestconfDocumentedException}
-     * @param type      - input {@link ErrorType} for create {@link RestconfDocumentedException}
-     * @param tag       - input {@link ErrorTag} for create {@link RestconfDocumentedException}
-     * @param message   - input error message for create {@link RestconfDocumentedException}
-     */
-    public static void checkDocumentedError(final boolean condition, final ErrorType type,
-            final ErrorTag tag, final String message) {
-        if(!condition) {
-            throw new RestconfDocumentedException(message, type, tag);
-        }
-    }
-
-    /**
-     * Method returns {@link RestconfDocumentedException} if value is NULL or same input value.
-     * {@link ErrorType} is relevant for server application layer
-     * {@link ErrorTag} is 404 data-missing
-     * @see {@link https://tools.ietf.org/html/draft-bierman-netconf-restconf-02}
-     *
-     * @param value         - some value from {@link org.opendaylight.yangtools.yang.model.api.Module}
-     * @param moduleName    - name of {@link org.opendaylight.yangtools.yang.model.api.Module}
-     * @return              - T value (same input value)
-     */
-    public static <T> T checkNotNullDocumented(final T value, final String moduleName) {
-        if(value == null) {
-            final String errMsg = "Module " + moduleName + "was not found.";
-            throw new RestconfDocumentedException(errMsg, ErrorType.APPLICATION, ErrorTag.DATA_MISSING);
-        }
-        return value;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaExportContentYangBodyWriter.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaExportContentYangBodyWriter.java
deleted file mode 100644 (file)
index 20300e2..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2014 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.md.sal.rest.schema;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
-
-@Provider
-@Produces(SchemaRetrievalService.YANG_MEDIA_TYPE)
-public class SchemaExportContentYangBodyWriter implements MessageBodyWriter<SchemaExportContext> {
-
-    @Override
-    public boolean isWriteable(final Class<?> type, final Type genericType, final Annotation[] annotations,
-            final MediaType mediaType) {
-        return type.equals(SchemaExportContext.class);
-    }
-
-    @Override
-    public long getSize(final SchemaExportContext t, final Class<?> type, final Type genericType,
-            final Annotation[] annotations, final MediaType mediaType) {
-        return -1;
-    }
-
-    @Override
-    public void writeTo(final SchemaExportContext t, final Class<?> type, final Type genericType,
-            final Annotation[] annotations, final MediaType mediaType,
-            final MultivaluedMap<String, Object> httpHeaders, final OutputStream entityStream) throws IOException,
-            WebApplicationException {
-        final PrintWriter writer = new PrintWriter(entityStream);
-        writer.write(t.getModule().getSource());
-
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaExportContentYinBodyWriter.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaExportContentYinBodyWriter.java
deleted file mode 100644 (file)
index 9773c0a..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2014 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.md.sal.rest.schema;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
-import javax.xml.stream.XMLStreamException;
-import org.opendaylight.yangtools.yang.model.export.YinExportUtils;
-
-@Provider
-@Produces(SchemaRetrievalService.YIN_MEDIA_TYPE)
-public class SchemaExportContentYinBodyWriter implements MessageBodyWriter<SchemaExportContext> {
-
-    @Override
-    public boolean isWriteable(final Class<?> type, final Type genericType, final Annotation[] annotations,
-            final MediaType mediaType) {
-        return type.equals(SchemaExportContext.class);
-    }
-
-    @Override
-    public long getSize(final SchemaExportContext t, final Class<?> type, final Type genericType,
-            final Annotation[] annotations, final MediaType mediaType) {
-        return -1;
-    }
-
-    @Override
-    public void writeTo(final SchemaExportContext t, final Class<?> type, final Type genericType,
-            final Annotation[] annotations, final MediaType mediaType,
-            final MultivaluedMap<String, Object> httpHeaders, final OutputStream entityStream) throws IOException,
-            WebApplicationException {
-        try {
-            YinExportUtils.writeModuleToOutputStream(t.getSchemaContext(), t.getModule(), entityStream);
-        } catch (final XMLStreamException e) {
-            throw new IllegalStateException(e);
-        }
-
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaExportContext.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaExportContext.java
deleted file mode 100644 (file)
index 4d3c95f..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2014 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.md.sal.rest.schema;
-
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class SchemaExportContext {
-
-    private final SchemaContext schemaContext;
-    private final Module module;
-
-    public SchemaExportContext(final SchemaContext ctx, final Module module) {
-        schemaContext = ctx;
-        this.module = module;
-    }
-
-    public SchemaContext getSchemaContext() {
-        return schemaContext;
-    }
-
-    public Module getModule() {
-        return module;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaRetrievalService.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaRetrievalService.java
deleted file mode 100644 (file)
index b268247..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2014 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.md.sal.rest.schema;
-
-import com.google.common.annotations.Beta;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-
-@Beta
-public interface SchemaRetrievalService {
-
-    public static final String YANG_MEDIA_TYPE = "application/yang";
-    public static final String YIN_MEDIA_TYPE = "application/yin+xml";
-
-    @GET
-    @Produces({YIN_MEDIA_TYPE,YANG_MEDIA_TYPE})
-    @Path("/modules/module/{identifier:.+}/schema")
-    SchemaExportContext getSchema(@PathParam("identifier") String mountAndModuleId);
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaRetrievalServiceImpl.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/md/sal/rest/schema/SchemaRetrievalServiceImpl.java
deleted file mode 100644 (file)
index 3d32427..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2014 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.md.sal.rest.schema;
-
-import com.google.common.base.Splitter;
-import com.google.common.collect.Iterables;
-import java.text.ParseException;
-import java.util.Date;
-import java.util.Iterator;
-import org.opendaylight.controller.md.sal.rest.common.RestconfValidationUtils;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class SchemaRetrievalServiceImpl implements SchemaRetrievalService {
-
-    private final ControllerContext salContext;
-
-    private static final Splitter SLASH_SPLITTER = Splitter.on("/");
-    private static final String MOUNT_ARG = ControllerContext.MOUNT;
-
-    public SchemaRetrievalServiceImpl(final ControllerContext controllerContext) {
-        salContext = controllerContext;
-    }
-
-
-    @Override
-    public SchemaExportContext getSchema(final String mountAndModule) {
-        final SchemaContext schemaContext;
-        final Iterable<String> pathComponents = SLASH_SPLITTER.split(mountAndModule);
-        final Iterator<String> componentIter = pathComponents.iterator();
-        if(!Iterables.contains(pathComponents, MOUNT_ARG)) {
-            schemaContext = salContext.getGlobalSchema();
-        } else {
-            final StringBuilder pathBuilder = new StringBuilder();
-            while(componentIter.hasNext()) {
-                final String current = componentIter.next();
-                // It is argument, not last element.
-                if(pathBuilder.length() != 0) {
-                        pathBuilder.append("/");
-                }
-                pathBuilder.append(current);
-                if(MOUNT_ARG.equals(current)) {
-                    // We stop right at mountpoint, last two arguments should
-                    // be module name and revision
-                    break;
-                }
-            }
-            schemaContext = getMountSchemaContext(pathBuilder.toString());
-
-        }
-
-        RestconfValidationUtils.checkDocumentedError(componentIter.hasNext(),
-                ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE, "Module name must be supplied.");
-        final String moduleName = componentIter.next();
-        RestconfValidationUtils.checkDocumentedError(componentIter.hasNext(),
-                ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE, "Revision date must be supplied.");
-        final String revisionString = componentIter.next();
-        return getExportUsingNameAndRevision(schemaContext, moduleName, revisionString);
-    }
-
-    private SchemaExportContext getExportUsingNameAndRevision(final SchemaContext schemaContext, final String moduleName,
-            final String revisionStr) {
-        try {
-            final Date revision = SimpleDateFormatUtil.getRevisionFormat().parse(revisionStr);
-            final Module module = schemaContext.findModuleByName(moduleName, revision);
-            return new SchemaExportContext(schemaContext, RestconfValidationUtils.checkNotNullDocumented(module, moduleName));
-        } catch (final ParseException e) {
-            throw new RestconfDocumentedException("Supplied revision is not in expected date format YYYY-mm-dd", e);
-        }
-    }
-
-    private SchemaContext getMountSchemaContext(final String identifier) {
-        final InstanceIdentifierContext<?> mountContext = salContext.toMountPointIdentifier(identifier);
-        return mountContext.getSchemaContext();
-    }
-
-
-
-}
-
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/Draft02.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/Draft02.java
deleted file mode 100644 (file)
index 51ac43b..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.api;
-
-import org.opendaylight.yangtools.yang.common.QName;
-
-public class Draft02 {
-    public static interface MediaTypes {
-        String API = "application/yang.api";
-        String DATASTORE = "application/yang.datastore";
-        String DATA = "application/yang.data";
-        String OPERATION = "application/yang.operation";
-        String PATCH = "application/yang.patch";
-        String PATCH_STATUS = "application/yang.patch-status";
-        String STREAM = "application/yang.stream";
-    }
-
-    public static interface RestConfModule {
-        String REVISION = "2013-10-19";
-
-        String NAME = "ietf-restconf";
-
-        String NAMESPACE = "urn:ietf:params:xml:ns:yang:ietf-restconf";
-
-        String RESTCONF_GROUPING_SCHEMA_NODE = "restconf";
-
-        String RESTCONF_CONTAINER_SCHEMA_NODE = "restconf";
-
-        String MODULES_CONTAINER_SCHEMA_NODE = "modules";
-
-        String MODULE_LIST_SCHEMA_NODE = "module";
-
-        String STREAMS_CONTAINER_SCHEMA_NODE = "streams";
-
-        String STREAM_LIST_SCHEMA_NODE = "stream";
-
-        String OPERATIONS_CONTAINER_SCHEMA_NODE = "operations";
-
-        String ERRORS_GROUPING_SCHEMA_NODE = "errors";
-
-        String ERRORS_CONTAINER_SCHEMA_NODE = "errors";
-
-        String ERROR_LIST_SCHEMA_NODE = "error";
-
-        QName IETF_RESTCONF_QNAME = QName.create(Draft02.RestConfModule.NAMESPACE, Draft02.RestConfModule.REVISION,
-                Draft02.RestConfModule.NAME);
-
-        QName ERRORS_CONTAINER_QNAME = QName.create(IETF_RESTCONF_QNAME, ERRORS_CONTAINER_SCHEMA_NODE);
-
-        QName ERROR_LIST_QNAME = QName.create(IETF_RESTCONF_QNAME, ERROR_LIST_SCHEMA_NODE);
-
-        QName ERROR_TYPE_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-type");
-
-        QName ERROR_TAG_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-tag");
-
-        QName ERROR_APP_TAG_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-app-tag");
-
-        QName ERROR_MESSAGE_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-message");
-
-        QName ERROR_INFO_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-info");
-    }
-
-    public static interface Paths {
-
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestConnector.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestConnector.java
deleted file mode 100644 (file)
index 73906d7..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2014, 2015 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.sal.rest.api;
-
-/*
- * This is a simple dummy interface to allow us to create instances of RestconfProvider
- * via the config subsystem.
- */
-public interface RestConnector {
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfConstants.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfConstants.java
deleted file mode 100644 (file)
index 206c2cd..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright (c) 2014, 2015 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.sal.rest.api;
-
-public interface RestconfConstants {
-
-
-    public static String IDENTIFIER = "identifier";
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfNormalizedNodeWriter.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfNormalizedNodeWriter.java
deleted file mode 100644 (file)
index 5fb0176..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2015 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.sal.rest.api;
-
-import java.io.Closeable;
-import java.io.Flushable;
-import java.io.IOException;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-
-public interface RestconfNormalizedNodeWriter extends Flushable, Closeable {
-
-    RestconfNormalizedNodeWriter write(final NormalizedNode<?, ?> node) throws IOException;
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfService.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfService.java
deleted file mode 100644 (file)
index e95d61c..0000000
+++ /dev/null
@@ -1,154 +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.sal.rest.api;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.DefaultValue;
-import javax.ws.rs.Encoded;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-
-/**
- * The URI hierarchy for the RESTCONF resources consists of an entry point container, 4 top-level resources, and 1
- * field.
- * <ul>
- * <li><b>/restconf</b> - {@link #getRoot()}
- * <ul>
- *      <li><b>/config</b> - {@link #readConfigurationData(String)}
- *                              {@link #updateConfigurationData(String, NormalizedNodeContext)}
- *                              {@link #createConfigurationData(NormalizedNodeContext)}
- *                              {@link #createConfigurationData(String, NormalizedNodeContext)}
- * {@link #deleteConfigurationData(String)}
- * <li><b>/operational</b> - {@link #readOperationalData(String)}
- * <li>/modules - {@link #getModules()}
- * <ul>
- * <li>/module
- * </ul>
- *      <li><b>/operations</b> - {@link #invokeRpc(String, NormalizedNodeContext)}
- *                               {@link #invokeRpc(String, NormalizedNodeContext)}
- * <li>/version (field)
- * </ul>
- * </ul>
- */
-@Path("/")
-public interface RestconfService {
-
-    public static final String XML = "+xml";
-    public static final String JSON = "+json";
-
-    @GET
-    public Object getRoot();
-
-    @GET
-    @Path("/modules")
-    @Produces({ Draft02.MediaTypes.API + JSON, Draft02.MediaTypes.API + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public NormalizedNodeContext getModules(@Context UriInfo uriInfo);
-
-    @GET
-    @Path("/modules/{identifier:.+}")
-    @Produces({ Draft02.MediaTypes.API + JSON, Draft02.MediaTypes.API + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public NormalizedNodeContext getModules(@PathParam("identifier") String identifier, @Context UriInfo uriInfo);
-
-    @GET
-    @Path("/modules/module/{identifier:.+}")
-    @Produces({ Draft02.MediaTypes.API + JSON, Draft02.MediaTypes.API + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public NormalizedNodeContext getModule(@PathParam("identifier") String identifier, @Context UriInfo uriInfo);
-
-    @GET
-    @Path("/operations")
-    @Produces({ Draft02.MediaTypes.API + JSON, Draft02.MediaTypes.API + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public NormalizedNodeContext getOperations(@Context UriInfo uriInfo);
-
-    @GET
-    @Path("/operations/{identifier:.+}")
-    @Produces({ Draft02.MediaTypes.API + JSON, Draft02.MediaTypes.API + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public NormalizedNodeContext getOperations(@PathParam("identifier") String identifier, @Context UriInfo uriInfo);
-
-    @POST
-    @Path("/operations/{identifier:.+}")
-    @Produces({ Draft02.MediaTypes.OPERATION + JSON, Draft02.MediaTypes.OPERATION + XML,
-            Draft02.MediaTypes.DATA + JSON, Draft02.MediaTypes.DATA + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    @Consumes({ Draft02.MediaTypes.OPERATION + JSON, Draft02.MediaTypes.OPERATION + XML,
-            Draft02.MediaTypes.DATA + JSON, Draft02.MediaTypes.DATA + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public NormalizedNodeContext invokeRpc(@Encoded @PathParam("identifier") String identifier, NormalizedNodeContext payload,
-            @Context UriInfo uriInfo);
-
-    @POST
-    @Path("/operations/{identifier:.+}")
-    @Produces({ Draft02.MediaTypes.OPERATION + JSON, Draft02.MediaTypes.OPERATION + XML,
-            Draft02.MediaTypes.DATA + JSON, Draft02.MediaTypes.DATA + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    @Deprecated // method isn't use anywhere
-    public NormalizedNodeContext invokeRpc(@Encoded @PathParam("identifier") String identifier,
-            @DefaultValue("") String noPayload, @Context UriInfo uriInfo);
-
-    @GET
-    @Path("/config/{identifier:.+}")
-    @Produces({ Draft02.MediaTypes.DATA + JSON, Draft02.MediaTypes.DATA + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public NormalizedNodeContext readConfigurationData(@Encoded @PathParam("identifier") String identifier,
-            @Context UriInfo uriInfo);
-
-    @GET
-    @Path("/operational/{identifier:.+}")
-    @Produces({ Draft02.MediaTypes.DATA + JSON, Draft02.MediaTypes.DATA + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public NormalizedNodeContext readOperationalData(@Encoded @PathParam("identifier") String identifier,
-            @Context UriInfo uriInfo);
-
-    @PUT
-    @Path("/config/{identifier:.+}")
-    @Consumes({ Draft02.MediaTypes.DATA + JSON, Draft02.MediaTypes.DATA + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public Response updateConfigurationData(@Encoded @PathParam("identifier") String identifier, NormalizedNodeContext payload);
-
-    @POST
-    @Path("/config/{identifier:.+}")
-    @Consumes({ Draft02.MediaTypes.DATA + JSON, Draft02.MediaTypes.DATA + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public Response createConfigurationData(@Encoded @PathParam("identifier") String identifier, NormalizedNodeContext payload,
-            @Context UriInfo uriInfo);
-
-    @POST
-    @Path("/config")
-    @Consumes({ Draft02.MediaTypes.DATA + JSON, Draft02.MediaTypes.DATA + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public Response createConfigurationData(NormalizedNodeContext payload, @Context UriInfo uriInfo);
-
-    @DELETE
-    @Path("/config/{identifier:.+}")
-    public Response deleteConfigurationData(@Encoded @PathParam("identifier") String identifier);
-
-    @GET
-    @Path("/streams/stream/{identifier:.+}")
-    public Response subscribeToStream(@Encoded @PathParam("identifier") String identifier, @Context UriInfo uriInfo);
-
-    @GET
-    @Path("/streams")
-    @Produces({ Draft02.MediaTypes.API + JSON, Draft02.MediaTypes.API + XML, MediaType.APPLICATION_JSON,
-            MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public NormalizedNodeContext getAvailableStreams(@Context UriInfo uriInfo);
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/package-info.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/package-info.java
deleted file mode 100644 (file)
index 49d8d66..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.api;
-
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/AbstractIdentifierAwareJaxRsProvider.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/AbstractIdentifierAwareJaxRsProvider.java
deleted file mode 100644 (file)
index bb41209..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2014, 2015 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.sal.rest.impl;
-
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.Request;
-import javax.ws.rs.core.UriInfo;
-import org.opendaylight.controller.sal.rest.api.RestconfConstants;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-
-public class AbstractIdentifierAwareJaxRsProvider {
-
-    private static final String POST = "POST";
-
-    @Context
-    private UriInfo uriInfo;
-
-    @Context
-    private Request request;
-
-    protected final String getIdentifier() {
-        return uriInfo.getPathParameters(false).getFirst(RestconfConstants.IDENTIFIER);
-    }
-
-    protected InstanceIdentifierContext<?> getInstanceIdentifierContext() {
-        return ControllerContext.getInstance().toInstanceIdentifier(getIdentifier());
-    }
-
-    protected UriInfo getUriInfo() {
-        return uriInfo;
-    }
-
-    protected boolean isPost() {
-        return POST.equals(request.getMethod());
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/DepthAwareNormalizedNodeWriter.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/DepthAwareNormalizedNodeWriter.java
deleted file mode 100644 (file)
index c439ee6..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * Copyright (c) 2015 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.sal.rest.impl;
-
-import static org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter.UNKNOWN_SIZE;
-import com.google.common.annotations.Beta;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-import org.opendaylight.controller.sal.rest.api.RestconfNormalizedNodeWriter;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.AnyXmlNode;
-import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
-import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode;
-import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamAttributeWriter;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This is an experimental iterator over a {@link NormalizedNode}. This is essentially
- * the opposite of a {@link XMLStreamReader} -- unlike instantiating an iterator over
- * the backing data, this encapsulates a {@link NormalizedNodeStreamWriter} and allows
- * us to write multiple nodes.
- */
-@Beta
-public class DepthAwareNormalizedNodeWriter implements RestconfNormalizedNodeWriter {
-    private final NormalizedNodeStreamWriter writer;
-    protected int currentDepth = 0;
-    protected final int maxDepth;
-
-    private DepthAwareNormalizedNodeWriter(final NormalizedNodeStreamWriter writer, final int maxDepth) {
-        this.writer = Preconditions.checkNotNull(writer);
-        this.maxDepth = maxDepth;
-    }
-
-    protected final NormalizedNodeStreamWriter getWriter() {
-        return writer;
-    }
-
-    /**
-     * Create a new writer backed by a {@link NormalizedNodeStreamWriter}.
-     *
-     * @param writer Back-end writer
-     * @return A new instance.
-     */
-    public static DepthAwareNormalizedNodeWriter forStreamWriter(final NormalizedNodeStreamWriter writer, final int maxDepth) {
-        return forStreamWriter(writer, true,  maxDepth);
-    }
-
-    /**
-     * Create a new writer backed by a {@link NormalizedNodeStreamWriter}. Unlike the simple {@link #forStreamWriter(NormalizedNodeStreamWriter)}
-     * method, this allows the caller to switch off RFC6020 XML compliance, providing better
-     * throughput. The reason is that the XML mapping rules in RFC6020 require the encoding
-     * to emit leaf nodes which participate in a list's key first and in the order in which
-     * they are defined in the key. For JSON, this requirement is completely relaxed and leaves
-     * can be ordered in any way we see fit. The former requires a bit of work: first a lookup
-     * for each key and then for each emitted node we need to check whether it was already
-     * emitted.
-     *
-     * @param writer Back-end writer
-     * @param orderKeyLeaves whether the returned instance should be RFC6020 XML compliant.
-     * @return A new instance.
-     */
-    public static DepthAwareNormalizedNodeWriter forStreamWriter(final NormalizedNodeStreamWriter writer, final boolean
-            orderKeyLeaves, final int maxDepth) {
-        if (orderKeyLeaves) {
-            return new OrderedDepthAwareNormalizedNodeWriter(writer, maxDepth);
-        } else {
-            return new DepthAwareNormalizedNodeWriter(writer, maxDepth);
-        }
-    }
-
-    /**
-     * Iterate over the provided {@link NormalizedNode} and emit write
-     * events to the encapsulated {@link NormalizedNodeStreamWriter}.
-     *
-     * @param node Node
-     * @return
-     * @throws IOException when thrown from the backing writer.
-     */
-    public final DepthAwareNormalizedNodeWriter write(final NormalizedNode<?, ?> node) throws IOException {
-        if (wasProcessedAsCompositeNode(node)) {
-            return this;
-        }
-
-        if (wasProcessAsSimpleNode(node)) {
-            return this;
-        }
-
-        throw new IllegalStateException("It wasn't possible to serialize node " + node);
-    }
-
-    @Override
-    public void flush() throws IOException {
-        writer.flush();
-    }
-
-    @Override
-    public void close() throws IOException {
-        writer.flush();
-        writer.close();
-    }
-
-    /**
-     * Emit a best guess of a hint for a particular set of children. It evaluates the
-     * iterable to see if the size can be easily gotten to. If it is, we hint at the
-     * real number of child nodes. Otherwise we emit UNKNOWN_SIZE.
-     *
-     * @param children Child nodes
-     * @return Best estimate of the collection size required to hold all the children.
-     */
-    static final int childSizeHint(final Iterable<?> children) {
-        return (children instanceof Collection) ? ((Collection<?>) children).size() : UNKNOWN_SIZE;
-    }
-
-    private boolean wasProcessAsSimpleNode(final NormalizedNode<?, ?> node) throws IOException {
-        if (node instanceof LeafSetEntryNode) {
-            if (currentDepth < maxDepth) {
-                final LeafSetEntryNode<?> nodeAsLeafList = (LeafSetEntryNode<?>) node;
-                if (writer instanceof NormalizedNodeStreamAttributeWriter) {
-                    ((NormalizedNodeStreamAttributeWriter) writer).leafSetEntryNode(nodeAsLeafList.getValue(), nodeAsLeafList.getAttributes());
-                } else {
-                    writer.leafSetEntryNode(nodeAsLeafList.getValue());
-                }
-            }
-            return true;
-        } else if (node instanceof LeafNode) {
-            final LeafNode<?> nodeAsLeaf = (LeafNode<?>)node;
-            if(writer instanceof NormalizedNodeStreamAttributeWriter) {
-                ((NormalizedNodeStreamAttributeWriter) writer).leafNode(nodeAsLeaf.getIdentifier(), nodeAsLeaf.getValue(), nodeAsLeaf.getAttributes());
-            } else {
-                writer.leafNode(nodeAsLeaf.getIdentifier(), nodeAsLeaf.getValue());
-            }
-            return true;
-        } else if (node instanceof AnyXmlNode) {
-            final AnyXmlNode anyXmlNode = (AnyXmlNode)node;
-            writer.anyxmlNode(anyXmlNode.getIdentifier(), anyXmlNode.getValue());
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Emit events for all children and then emit an endNode() event.
-     *
-     * @param children Child iterable
-     * @return True
-     * @throws IOException when the writer reports it
-     */
-    protected final boolean writeChildren(final Iterable<? extends NormalizedNode<?, ?>> children) throws IOException {
-        if (currentDepth < maxDepth) {
-            for (NormalizedNode<?, ?> child : children) {
-                write(child);
-            }
-        }
-        writer.endNode();
-        return true;
-    }
-
-    protected boolean writeMapEntryChildren(final MapEntryNode mapEntryNode) throws IOException {
-        if (currentDepth < maxDepth) {
-            writeChildren(mapEntryNode.getValue());
-        } else if (currentDepth == maxDepth) {
-            writeOnlyKeys(mapEntryNode.getIdentifier().getKeyValues());
-        }
-        return true;
-    }
-
-    private void writeOnlyKeys(Map<QName, Object> keyValues) throws IllegalArgumentException, IOException {
-        for (Map.Entry<QName, Object> entry : keyValues.entrySet()) {
-            writer.leafNode(new NodeIdentifier(entry.getKey()), entry.getValue());
-        }
-        writer.endNode();
-
-    }
-
-    protected boolean writeMapEntryNode(final MapEntryNode node) throws IOException {
-        if(writer instanceof NormalizedNodeStreamAttributeWriter) {
-            ((NormalizedNodeStreamAttributeWriter) writer)
-                    .startMapEntryNode(node.getIdentifier(), childSizeHint(node.getValue()), node.getAttributes());
-        } else {
-            writer.startMapEntryNode(node.getIdentifier(), childSizeHint(node.getValue()));
-        }
-        currentDepth++;
-        writeMapEntryChildren(node);
-        currentDepth--;
-        return true;
-    }
-
-    private boolean wasProcessedAsCompositeNode(final NormalizedNode<?, ?> node) throws IOException {
-        boolean processedAsCompositeNode = false;
-        if (node instanceof ContainerNode) {
-            final ContainerNode n = (ContainerNode) node;
-            if(writer instanceof NormalizedNodeStreamAttributeWriter) {
-                ((NormalizedNodeStreamAttributeWriter) writer).startContainerNode(n.getIdentifier(), childSizeHint(n.getValue()), n.getAttributes());
-            } else {
-                writer.startContainerNode(n.getIdentifier(), childSizeHint(n.getValue()));
-            }
-            currentDepth++;
-            processedAsCompositeNode = writeChildren(n.getValue());
-            currentDepth--;
-        }
-        else if (node instanceof MapEntryNode) {
-            processedAsCompositeNode =  writeMapEntryNode((MapEntryNode) node);
-        }
-        else if (node instanceof UnkeyedListEntryNode) {
-            final UnkeyedListEntryNode n = (UnkeyedListEntryNode) node;
-            writer.startUnkeyedListItem(n.getIdentifier(), childSizeHint(n.getValue()));
-            currentDepth++;
-            processedAsCompositeNode = writeChildren(n.getValue());
-            currentDepth--;
-        }
-        else if (node instanceof ChoiceNode) {
-            final ChoiceNode n = (ChoiceNode) node;
-            writer.startChoiceNode(n.getIdentifier(), childSizeHint(n.getValue()));
-            processedAsCompositeNode = writeChildren(n.getValue());
-        }
-        else if (node instanceof AugmentationNode) {
-            final AugmentationNode n = (AugmentationNode) node;
-            writer.startAugmentationNode(n.getIdentifier());
-            processedAsCompositeNode = writeChildren(n.getValue());
-        }
-        else if (node instanceof UnkeyedListNode) {
-            final UnkeyedListNode n = (UnkeyedListNode) node;
-            writer.startUnkeyedList(n.getIdentifier(), childSizeHint(n.getValue()));
-            processedAsCompositeNode = writeChildren(n.getValue());
-        }
-        else if (node instanceof OrderedMapNode) {
-            final OrderedMapNode n = (OrderedMapNode) node;
-            writer.startOrderedMapNode(n.getIdentifier(), childSizeHint(n.getValue()));
-            processedAsCompositeNode = writeChildren(n.getValue());
-        }
-        else if (node instanceof MapNode) {
-            final MapNode n = (MapNode) node;
-            writer.startMapNode(n.getIdentifier(), childSizeHint(n.getValue()));
-            processedAsCompositeNode = writeChildren(n.getValue());
-        }
-        else if (node instanceof LeafSetNode) {
-            //covers also OrderedLeafSetNode for which doesn't exist start* method
-            final LeafSetNode<?> n = (LeafSetNode<?>) node;
-            writer.startLeafSet(n.getIdentifier(), childSizeHint(n.getValue()));
-            currentDepth++;
-            processedAsCompositeNode = writeChildren(n.getValue());
-            currentDepth--;
-        }
-
-        return processedAsCompositeNode;
-    }
-
-    private static final class OrderedDepthAwareNormalizedNodeWriter extends DepthAwareNormalizedNodeWriter {
-        private static final Logger LOG = LoggerFactory.getLogger(OrderedDepthAwareNormalizedNodeWriter.class);
-
-        OrderedDepthAwareNormalizedNodeWriter(final NormalizedNodeStreamWriter writer, final int maxDepth) {
-            super(writer, maxDepth);
-        }
-
-        @Override
-        protected boolean writeMapEntryNode(final MapEntryNode node) throws IOException {
-            final NormalizedNodeStreamWriter writer = getWriter();
-            if(writer instanceof NormalizedNodeStreamAttributeWriter) {
-                ((NormalizedNodeStreamAttributeWriter) writer).startMapEntryNode(node.getIdentifier(), childSizeHint(node.getValue()), node.getAttributes());
-            } else {
-                writer.startMapEntryNode(node.getIdentifier(), childSizeHint(node.getValue()));
-            }
-
-            final Set<QName> qnames = node.getIdentifier().getKeyValues().keySet();
-            // Write out all the key children
-            for (QName qname : qnames) {
-                final Optional<? extends NormalizedNode<?, ?>> child = node.getChild(new NodeIdentifier(qname));
-                if (child.isPresent()) {
-                    write(child.get());
-                } else {
-                    LOG.info("No child for key element {} found", qname);
-                }
-            }
-
-            // Write all the rest
-            currentDepth++;
-            boolean result = writeChildren(Iterables.filter(node.getValue(), new Predicate<NormalizedNode<?, ?>>() {
-                @Override
-                public boolean apply(final NormalizedNode<?, ?> input) {
-                    if (input instanceof AugmentationNode) {
-                        return true;
-                    }
-                    if (!qnames.contains(input.getNodeType())) {
-                        return true;
-                    }
-
-                    LOG.debug("Skipping key child {}", input);
-                    return false;
-                }
-            }));
-            currentDepth--;
-            return result;
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/JsonNormalizedNodeBodyReader.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/JsonNormalizedNodeBodyReader.java
deleted file mode 100644 (file)
index 42024ca..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.impl;
-
-import com.google.common.collect.Iterables;
-import com.google.gson.stream.JsonReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.List;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyReader;
-import javax.ws.rs.ext.Provider;
-import org.opendaylight.controller.sal.rest.api.Draft02;
-import org.opendaylight.controller.sal.rest.api.RestconfService;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
-import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
-import org.opendaylight.yangtools.yang.data.impl.schema.ResultAlreadySetException;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Provider
-@Consumes({ Draft02.MediaTypes.DATA + RestconfService.JSON, Draft02.MediaTypes.OPERATION + RestconfService.JSON,
-        MediaType.APPLICATION_JSON })
-public class JsonNormalizedNodeBodyReader extends AbstractIdentifierAwareJaxRsProvider implements MessageBodyReader<NormalizedNodeContext> {
-
-    private final static Logger LOG = LoggerFactory.getLogger(JsonNormalizedNodeBodyReader.class);
-
-    @Override
-    public boolean isReadable(final Class<?> type, final Type genericType, final Annotation[] annotations,
-            final MediaType mediaType) {
-        return true;
-    }
-
-    @Override
-    public NormalizedNodeContext readFrom(final Class<NormalizedNodeContext> type, final Type genericType,
-            final Annotation[] annotations, final MediaType mediaType,
-            final MultivaluedMap<String, String> httpHeaders, final InputStream entityStream) throws IOException,
-            WebApplicationException {
-        try {
-            final InstanceIdentifierContext<?> path = getInstanceIdentifierContext();
-            if (entityStream.available() < 1) {
-                return new NormalizedNodeContext(path, null);
-            }
-            final NormalizedNodeResult resultHolder = new NormalizedNodeResult();
-            final NormalizedNodeStreamWriter writer = ImmutableNormalizedNodeStreamWriter.from(resultHolder);
-
-            final SchemaNode parentSchema;
-            if(isPost()) {
-                // FIXME: We need dispatch for RPC.
-                parentSchema = path.getSchemaNode();
-            } else if(path.getSchemaNode() instanceof SchemaContext) {
-                parentSchema = path.getSchemaContext();
-            } else {
-                if (SchemaPath.ROOT.equals(path.getSchemaNode().getPath().getParent())) {
-                    parentSchema = path.getSchemaContext();
-                } else {
-                    parentSchema = SchemaContextUtil.findDataSchemaNode(path.getSchemaContext(), path.getSchemaNode().getPath().getParent());
-                }
-            }
-
-            final JsonParserStream jsonParser = JsonParserStream.create(writer, path.getSchemaContext(), parentSchema);
-            final JsonReader reader = new JsonReader(new InputStreamReader(entityStream));
-            jsonParser.parse(reader);
-
-            NormalizedNode<?, ?> result = resultHolder.getResult();
-            final List<YangInstanceIdentifier.PathArgument> iiToDataList = new ArrayList<>();
-            InstanceIdentifierContext<? extends SchemaNode> newIIContext;
-
-            while (result instanceof AugmentationNode || result instanceof ChoiceNode) {
-                final Object childNode = ((DataContainerNode) result).getValue().iterator().next();
-                if (isPost()) {
-                    iiToDataList.add(result.getIdentifier());
-                }
-                result = (NormalizedNode<?, ?>) childNode;
-            }
-
-            if (isPost()) {
-                if (result instanceof MapEntryNode) {
-                    iiToDataList.add(new YangInstanceIdentifier.NodeIdentifier(result.getNodeType()));
-                    iiToDataList.add(result.getIdentifier());
-                } else {
-                    iiToDataList.add(result.getIdentifier());
-                }
-            } else {
-                if (result instanceof MapNode) {
-                    result = Iterables.getOnlyElement(((MapNode) result).getValue());
-                }
-            }
-
-            final YangInstanceIdentifier fullIIToData = YangInstanceIdentifier.create(Iterables.concat(
-                            path.getInstanceIdentifier().getPathArguments(), iiToDataList));
-
-            newIIContext = new InstanceIdentifierContext<>(fullIIToData, path.getSchemaNode(), path.getMountPoint(),
-                    path.getSchemaContext());
-
-            return new NormalizedNodeContext(newIIContext, result);
-        } catch (final RestconfDocumentedException e) {
-            throw e;
-        } catch (final ResultAlreadySetException e) {
-            LOG.debug("Error parsing json input:", e);
-
-            throw new RestconfDocumentedException("Error parsing json input: Failed to create new parse result data. " +
-                    "Are you creating multiple resources/subresources in POST request?");
-        } catch (final Exception e) {
-            LOG.debug("Error parsing json input", e);
-
-            throw new RestconfDocumentedException("Error parsing input: " + e.getMessage(), ErrorType.PROTOCOL,
-                    ErrorTag.MALFORMED_MESSAGE);
-        }
-    }
-}
-
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/NormalizedNodeJsonBodyWriter.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/NormalizedNodeJsonBodyWriter.java
deleted file mode 100644 (file)
index 2cdded2..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.impl;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Optional;
-import com.google.gson.stream.JsonWriter;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.net.URI;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
-import org.opendaylight.controller.sal.rest.api.Draft02;
-import org.opendaylight.controller.sal.rest.api.RestconfNormalizedNodeWriter;
-import org.opendaylight.controller.sal.rest.api.RestconfService;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactory;
-import org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.codec.gson.JsonWriterFactory;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-
-@Provider
-@Produces({ Draft02.MediaTypes.API + RestconfService.JSON, Draft02.MediaTypes.DATA + RestconfService.JSON,
-    Draft02.MediaTypes.OPERATION + RestconfService.JSON, MediaType.APPLICATION_JSON })
-public class NormalizedNodeJsonBodyWriter implements MessageBodyWriter<NormalizedNodeContext> {
-
-    private static final int DEFAULT_INDENT_SPACES_NUM = 2;
-
-    @Override
-    public boolean isWriteable(final Class<?> type, final Type genericType, final Annotation[] annotations, final MediaType mediaType) {
-        return type.equals(NormalizedNodeContext.class);
-    }
-
-    @Override
-    public long getSize(final NormalizedNodeContext t, final Class<?> type, final Type genericType, final Annotation[] annotations, final MediaType mediaType) {
-        return -1;
-    }
-
-    @Override
-    public void writeTo(final NormalizedNodeContext t, final Class<?> type, final Type genericType, final Annotation[] annotations,
-            final MediaType mediaType, final MultivaluedMap<String, Object> httpHeaders, final OutputStream entityStream)
-                    throws IOException, WebApplicationException {
-        NormalizedNode<?, ?> data = t.getData();
-        if (data == null) {
-            return;
-        }
-
-        @SuppressWarnings("unchecked")
-        final InstanceIdentifierContext<SchemaNode> context = (InstanceIdentifierContext<SchemaNode>) t.getInstanceIdentifierContext();
-
-        SchemaPath path = context.getSchemaNode().getPath();
-        final JsonWriter jsonWriter = createJsonWriter(entityStream, t.getWriterParameters().isPrettyPrint());
-        jsonWriter.beginObject();
-        writeNormalizedNode(jsonWriter,path,context,data, t.getWriterParameters().getDepth());
-        jsonWriter.endObject();
-        jsonWriter.flush();
-    }
-
-    private void writeNormalizedNode(JsonWriter jsonWriter, SchemaPath path,
-            InstanceIdentifierContext<SchemaNode> context, NormalizedNode<?, ?> data, Optional<Integer> depth) throws
-            IOException {
-        final RestconfNormalizedNodeWriter nnWriter;
-        if (SchemaPath.ROOT.equals(path)) {
-            /*
-             *  Creates writer without initialNs and we write children of root data container
-             *  which is not visible in restconf
-             */
-            nnWriter = createNormalizedNodeWriter(context,path,jsonWriter, depth);
-            writeChildren(nnWriter,(ContainerNode) data);
-        } else if (context.getSchemaNode() instanceof RpcDefinition) {
-            /*
-             *  RpcDefinition is not supported as initial codec in JSONStreamWriter,
-             *  so we need to emit initial output declaratation..
-             */
-            path = ((RpcDefinition) context.getSchemaNode()).getOutput().getPath();
-            nnWriter = createNormalizedNodeWriter(context,path,jsonWriter, depth);
-            jsonWriter.name("output");
-            jsonWriter.beginObject();
-            writeChildren(nnWriter, (ContainerNode) data);
-            jsonWriter.endObject();
-        } else {
-            path = path.getParent();
-
-            if(data instanceof MapEntryNode) {
-                data = ImmutableNodes.mapNodeBuilder(data.getNodeType()).withChild(((MapEntryNode) data)).build();
-            }
-            nnWriter = createNormalizedNodeWriter(context,path,jsonWriter, depth);
-            nnWriter.write(data);
-        }
-        nnWriter.flush();
-    }
-
-    private void writeChildren(final RestconfNormalizedNodeWriter nnWriter, final ContainerNode data) throws IOException {
-        for(final DataContainerChild<? extends PathArgument, ?> child : data.getValue()) {
-            nnWriter.write(child);
-        }
-    }
-
-    private RestconfNormalizedNodeWriter createNormalizedNodeWriter(final InstanceIdentifierContext<SchemaNode> context,
-            final SchemaPath path, final JsonWriter jsonWriter, Optional<Integer> depth) {
-
-        final SchemaNode schema = context.getSchemaNode();
-        final JSONCodecFactory codecs = getCodecFactory(context);
-
-        final URI initialNs;
-        if ((schema instanceof DataSchemaNode)
-                && !((DataSchemaNode)schema).isAugmenting()
-                && !(schema instanceof SchemaContext)) {
-            initialNs = schema.getQName().getNamespace();
-        } else if (schema instanceof RpcDefinition) {
-            initialNs = schema.getQName().getNamespace();
-        } else {
-            initialNs = null;
-        }
-        final NormalizedNodeStreamWriter streamWriter = JSONNormalizedNodeStreamWriter.createNestedWriter(codecs,path,initialNs,jsonWriter);
-        if (depth.isPresent()) {
-            return DepthAwareNormalizedNodeWriter.forStreamWriter(streamWriter, depth.get());
-        } else {
-            return RestconfDelegatingNormalizedNodeWriter.forStreamWriter(streamWriter);
-        }
-    }
-
-    private JsonWriter createJsonWriter(final OutputStream entityStream, boolean prettyPrint) {
-        if (prettyPrint) {
-            return JsonWriterFactory.createJsonWriter(new OutputStreamWriter(entityStream, Charsets.UTF_8),
-                    DEFAULT_INDENT_SPACES_NUM);
-        } else {
-            return JsonWriterFactory.createJsonWriter(new OutputStreamWriter(entityStream, Charsets.UTF_8));
-        }
-    }
-
-    private JSONCodecFactory getCodecFactory(final InstanceIdentifierContext<?> context) {
-        // TODO: Performance: Cache JSON Codec factory and schema context
-        return JSONCodecFactory.create(context.getSchemaContext());
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/NormalizedNodeXmlBodyWriter.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/NormalizedNodeXmlBodyWriter.java
deleted file mode 100644 (file)
index 6d04baf..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.impl;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Throwables;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import javanet.staxutils.IndentingXMLStreamWriter;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
-import javax.xml.XMLConstants;
-import javax.xml.stream.FactoryConfigurationError;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-import org.opendaylight.controller.sal.rest.api.Draft02;
-import org.opendaylight.controller.sal.rest.api.RestconfNormalizedNodeWriter;
-import org.opendaylight.controller.sal.rest.api.RestconfService;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.codec.xml.XMLStreamNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-
-@Provider
-@Produces({ Draft02.MediaTypes.API + RestconfService.XML, Draft02.MediaTypes.DATA + RestconfService.XML,
-        Draft02.MediaTypes.OPERATION + RestconfService.XML, MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-public class NormalizedNodeXmlBodyWriter implements MessageBodyWriter<NormalizedNodeContext> {
-
-    private static final XMLOutputFactory XML_FACTORY;
-
-    static {
-        XML_FACTORY = XMLOutputFactory.newFactory();
-        XML_FACTORY.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
-    }
-
-    @Override
-    public boolean isWriteable(final Class<?> type, final Type genericType, final Annotation[] annotations,
-            final MediaType mediaType) {
-        return type.equals(NormalizedNodeContext.class);
-    }
-
-    @Override
-    public long getSize(final NormalizedNodeContext t, final Class<?> type, final Type genericType,
-            final Annotation[] annotations, final MediaType mediaType) {
-        return -1;
-    }
-
-    @Override
-    public void writeTo(final NormalizedNodeContext t, final Class<?> type, final Type genericType,
-            final Annotation[] annotations, final MediaType mediaType,
-            final MultivaluedMap<String, Object> httpHeaders, final OutputStream entityStream) throws IOException,
-            WebApplicationException {
-        final InstanceIdentifierContext<?> pathContext = t.getInstanceIdentifierContext();
-        if (t.getData() == null) {
-            return;
-        }
-
-        XMLStreamWriter xmlWriter;
-        try {
-            xmlWriter = XML_FACTORY.createXMLStreamWriter(entityStream);
-            if (t.getWriterParameters().isPrettyPrint()) {
-                xmlWriter = new IndentingXMLStreamWriter(xmlWriter);
-            }
-        } catch (final XMLStreamException e) {
-            throw new IllegalStateException(e);
-        } catch (final FactoryConfigurationError e) {
-            throw new IllegalStateException(e);
-        }
-        NormalizedNode<?, ?> data = t.getData();
-        SchemaPath schemaPath = pathContext.getSchemaNode().getPath();
-
-
-
-        writeNormalizedNode(xmlWriter, schemaPath, pathContext, data, t.getWriterParameters().getDepth());
-
-    }
-
-    private void writeNormalizedNode(XMLStreamWriter xmlWriter, SchemaPath schemaPath, InstanceIdentifierContext<?>
-            pathContext, NormalizedNode<?, ?> data, Optional<Integer> depth) throws IOException {
-        final RestconfNormalizedNodeWriter nnWriter;
-        final SchemaContext schemaCtx = pathContext.getSchemaContext();
-        if (SchemaPath.ROOT.equals(schemaPath)) {
-            nnWriter = createNormalizedNodeWriter(xmlWriter, schemaCtx, schemaPath, depth);
-            writeElements(xmlWriter, nnWriter, (ContainerNode) data);
-        }  else if (pathContext.getSchemaNode() instanceof RpcDefinition) {
-            nnWriter = createNormalizedNodeWriter(xmlWriter, schemaCtx,
-                    ((RpcDefinition) pathContext.getSchemaNode()).getOutput().getPath(), depth);
-            writeElements(xmlWriter, nnWriter, (ContainerNode) data);
-        } else {
-            nnWriter = createNormalizedNodeWriter(xmlWriter, schemaCtx, schemaPath.getParent(), depth);
-            if (data instanceof MapEntryNode) {
-                // Restconf allows returning one list item. We need to wrap it
-                // in map node in order to serialize it properly
-                data = ImmutableNodes.mapNodeBuilder(data.getNodeType()).addChild((MapEntryNode) data).build();
-            }
-            nnWriter.write(data);
-        }
-        nnWriter.flush();
-    }
-
-    private RestconfNormalizedNodeWriter createNormalizedNodeWriter(XMLStreamWriter xmlWriter,
-                                                                        SchemaContext schemaContext, SchemaPath schemaPath, Optional<Integer> depth) {
-        NormalizedNodeStreamWriter xmlStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, schemaContext, schemaPath);
-        if (depth.isPresent()) {
-            return DepthAwareNormalizedNodeWriter.forStreamWriter(xmlStreamWriter, depth.get());
-        } else {
-            return RestconfDelegatingNormalizedNodeWriter.forStreamWriter(xmlStreamWriter);
-        }
-    }
-
-    private void writeElements(final XMLStreamWriter xmlWriter, final RestconfNormalizedNodeWriter nnWriter,
-                               final ContainerNode data)
-            throws IOException {
-        try {
-            final QName name = data.getNodeType();
-            xmlWriter.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX, name.getLocalName(), name.getNamespace().toString());
-            xmlWriter.writeDefaultNamespace(name.getNamespace().toString());
-            for(NormalizedNode<?,?> child : data.getValue()) {
-                nnWriter.write(child);
-            }
-            nnWriter.flush();
-            xmlWriter.writeEndElement();
-            xmlWriter.flush();
-        } catch (final XMLStreamException e) {
-            Throwables.propagate(e);
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestUtil.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestUtil.java
deleted file mode 100644 (file)
index b5a2b42..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.xml.stream.events.StartElement;
-import org.opendaylight.controller.sal.restconf.impl.IdentityValuesDTO;
-import org.opendaylight.controller.sal.restconf.impl.IdentityValuesDTO.IdentityValue;
-import org.opendaylight.controller.sal.restconf.impl.IdentityValuesDTO.Predicate;
-import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-
-public final class RestUtil {
-
-    // FIXME: BUG-1275: this is code duplicates data.impl.codec
-
-    public static final String SQUOTE = "'";
-    public static final String DQUOTE = "\"";
-    private static final Pattern PREDICATE_PATTERN = Pattern.compile("\\[(.*?)\\]");
-
-    public final static TypeDefinition<?> resolveBaseTypeFrom(final TypeDefinition<?> type) {
-        TypeDefinition<?> superType = type;
-        while (superType.getBaseType() != null) {
-            superType = superType.getBaseType();
-        }
-        return superType;
-    }
-
-    public static IdentityValuesDTO asInstanceIdentifier(final String value, final PrefixesMaping prefixMap) {
-        final String valueTrimmed = value.trim();
-        if (!valueTrimmed.startsWith("/")) {
-            return null;
-        }
-        final String[] xPathParts = valueTrimmed.split("/");
-        if (xPathParts.length < 2) { // must be at least "/pr:node"
-            return null;
-        }
-        final IdentityValuesDTO identityValuesDTO = new IdentityValuesDTO(value);
-        for (int i = 1; i < xPathParts.length; i++) {
-            final String xPathPartTrimmed = xPathParts[i].trim();
-
-            final String xPathPartStr = getIdAndPrefixAsStr(xPathPartTrimmed);
-            final IdentityValue identityValue = toIdentity(xPathPartStr, prefixMap);
-            if (identityValue == null) {
-                return null;
-            }
-
-            final List<Predicate> predicates = toPredicates(xPathPartTrimmed, prefixMap);
-            if (predicates == null) {
-                return null;
-            }
-            identityValue.setPredicates(predicates);
-
-            identityValuesDTO.add(identityValue);
-        }
-        return identityValuesDTO.getValuesWithNamespaces().isEmpty() ? null : identityValuesDTO;
-    }
-
-    private static String getIdAndPrefixAsStr(final String pathPart) {
-        final int predicateStartIndex = pathPart.indexOf("[");
-        return predicateStartIndex == -1 ? pathPart : pathPart.substring(0, predicateStartIndex);
-    }
-
-    private static IdentityValue toIdentity(final String xPathPart, final PrefixesMaping prefixMap) {
-        final String xPathPartTrimmed = xPathPart.trim();
-        if (xPathPartTrimmed.isEmpty()) {
-            return null;
-        }
-        final String[] prefixAndIdentifier = xPathPartTrimmed.split(":");
-        // it is not "prefix:value"
-        if (prefixAndIdentifier.length != 2) {
-            return null;
-        }
-        final String prefix = prefixAndIdentifier[0].trim();
-        final String identifier = prefixAndIdentifier[1].trim();
-        if (prefix.isEmpty() || identifier.isEmpty()) {
-            return null;
-        }
-        final String namespace = prefixMap.getNamespace(prefix);
-        return new IdentityValue(namespace, identifier);
-    }
-
-    private static List<Predicate> toPredicates(final String predicatesStr, final PrefixesMaping prefixMap) {
-        final List<Predicate> result = new ArrayList<>();
-        final List<String> predicates = new ArrayList<>();
-        final Matcher matcher = PREDICATE_PATTERN.matcher(predicatesStr);
-        while (matcher.find()) {
-            predicates.add(matcher.group(1).trim());
-        }
-        for (final String predicate : predicates) {
-            final int indexOfEqualityMark = predicate.indexOf("=");
-            if (indexOfEqualityMark != -1) {
-                final String predicateValue = toPredicateValue(predicate.substring(indexOfEqualityMark + 1));
-                if (predicate.startsWith(".")) { // it is leaf-list
-                    if (predicateValue == null) {
-                        return null;
-                    }
-                    result.add(new Predicate(null, predicateValue));
-                } else {
-                    final IdentityValue identityValue = toIdentity(predicate.substring(0, indexOfEqualityMark), prefixMap);
-                    if (identityValue == null || predicateValue == null) {
-                        return null;
-                    }
-                    result.add(new Predicate(identityValue, predicateValue));
-                }
-            }
-        }
-        return result;
-    }
-
-    private static String toPredicateValue(final String predicatedValue) {
-        final String predicatedValueTrimmed = predicatedValue.trim();
-        if ((predicatedValueTrimmed.startsWith(DQUOTE) || predicatedValueTrimmed.startsWith(SQUOTE))
-                && (predicatedValueTrimmed.endsWith(DQUOTE) || predicatedValueTrimmed.endsWith(SQUOTE))) {
-            return predicatedValueTrimmed.substring(1, predicatedValueTrimmed.length() - 1);
-        }
-        return null;
-    }
-
-    public interface PrefixesMaping {
-        public String getNamespace(String prefix);
-    }
-
-    public static class PrefixMapingFromXml implements PrefixesMaping {
-        StartElement startElement = null;
-
-        public PrefixMapingFromXml(final StartElement startElement) {
-            this.startElement = startElement;
-        }
-
-        @Override
-        public String getNamespace(final String prefix) {
-            return startElement.getNamespaceContext().getNamespaceURI(prefix);
-        }
-    }
-
-    public static class PrefixMapingFromJson implements PrefixesMaping {
-
-        @Override
-        public String getNamespace(final String prefix) {
-            return prefix;
-        }
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfApplication.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfApplication.java
deleted file mode 100644 (file)
index 52cd96b..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.impl;
-
-import com.google.common.collect.ImmutableSet;
-import java.util.HashSet;
-import java.util.Set;
-import javax.ws.rs.core.Application;
-import org.opendaylight.controller.md.sal.rest.schema.SchemaExportContentYangBodyWriter;
-import org.opendaylight.controller.md.sal.rest.schema.SchemaExportContentYinBodyWriter;
-import org.opendaylight.controller.md.sal.rest.schema.SchemaRetrievalServiceImpl;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.controller.sal.restconf.impl.StatisticsRestconfServiceWrapper;
-
-public class RestconfApplication extends Application {
-
-    @Override
-    public Set<Class<?>> getClasses() {
-        return ImmutableSet.<Class<?>> builder()
-                .add(RestconfDocumentedExceptionMapper.class)
-                .add(XmlNormalizedNodeBodyReader.class)
-                .add(JsonNormalizedNodeBodyReader.class)
-                .add(NormalizedNodeJsonBodyWriter.class)
-                .add(NormalizedNodeXmlBodyWriter.class)
-                .add(SchemaExportContentYinBodyWriter.class)
-                .add(SchemaExportContentYangBodyWriter.class)
-                .build();
-    }
-
-    @Override
-    public Set<Object> getSingletons() {
-        final Set<Object> singletons = new HashSet<>();
-        final ControllerContext controllerContext = ControllerContext.getInstance();
-        final BrokerFacade brokerFacade = BrokerFacade.getInstance();
-        final RestconfImpl restconfImpl = RestconfImpl.getInstance();
-        final SchemaRetrievalServiceImpl schemaRetrieval = new SchemaRetrievalServiceImpl(controllerContext);
-        restconfImpl.setBroker(brokerFacade);
-        restconfImpl.setControllerContext(controllerContext);
-        singletons.add(controllerContext);
-        singletons.add(brokerFacade);
-        singletons.add(schemaRetrieval);
-        singletons.add(new RestconfCompositeWrapper(StatisticsRestconfServiceWrapper.getInstance(), schemaRetrieval));
-//        singletons.add(StructuredDataToXmlProvider.INSTANCE);
-//        singletons.add(StructuredDataToJsonProvider.INSTANCE);
-//        singletons.add(JsonToCompositeNodeProvider.INSTANCE);
-//        singletons.add(XmlToCompositeNodeProvider.INSTANCE);
-        return singletons;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfCompositeWrapper.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfCompositeWrapper.java
deleted file mode 100644 (file)
index 1339d7a..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2015 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.sal.rest.impl;
-
-import com.google.common.base.Preconditions;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-import org.opendaylight.controller.md.sal.rest.schema.SchemaExportContext;
-import org.opendaylight.controller.md.sal.rest.schema.SchemaRetrievalService;
-import org.opendaylight.controller.sal.rest.api.RestconfService;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-
-public class RestconfCompositeWrapper implements RestconfService, SchemaRetrievalService {
-
-    private final RestconfService restconf;
-    private final SchemaRetrievalService schema;
-
-    public RestconfCompositeWrapper(final RestconfService restconf, final SchemaRetrievalService schema) {
-        this.restconf = Preconditions.checkNotNull(restconf);
-        this.schema = Preconditions.checkNotNull(schema);
-    }
-
-    @Override
-    public Object getRoot() {
-        return restconf.getRoot();
-    }
-
-    @Override
-    public NormalizedNodeContext getModules(final UriInfo uriInfo) {
-        return restconf.getModules(uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext getModules(final String identifier, final UriInfo uriInfo) {
-        return restconf.getModules(identifier, uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext getModule(final String identifier, final UriInfo uriInfo) {
-        return restconf.getModule(identifier, uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext getOperations(final UriInfo uriInfo) {
-        return restconf.getOperations(uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext getOperations(final String identifier, final UriInfo uriInfo) {
-        return restconf.getOperations(identifier, uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext invokeRpc(final String identifier, final NormalizedNodeContext payload, final UriInfo uriInfo) {
-        return restconf.invokeRpc(identifier, payload, uriInfo);
-    }
-
-    @Override
-    @Deprecated
-    public NormalizedNodeContext invokeRpc(final String identifier, final String noPayload, final UriInfo uriInfo) {
-        return restconf.invokeRpc(identifier, noPayload, uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext readConfigurationData(final String identifier, final UriInfo uriInfo) {
-        return restconf.readConfigurationData(identifier, uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext readOperationalData(final String identifier, final UriInfo uriInfo) {
-        return restconf.readOperationalData(identifier, uriInfo);
-    }
-
-    @Override
-    public Response updateConfigurationData(final String identifier, final NormalizedNodeContext payload) {
-        return restconf.updateConfigurationData(identifier, payload);
-    }
-
-    @Override
-    public Response createConfigurationData(final String identifier, final NormalizedNodeContext payload, final UriInfo uriInfo) {
-        return restconf.createConfigurationData(identifier, payload, uriInfo);
-    }
-
-    @Override
-    public Response createConfigurationData(final NormalizedNodeContext payload, final UriInfo uriInfo) {
-        return restconf.createConfigurationData(payload, uriInfo);
-    }
-
-    @Override
-    public Response deleteConfigurationData(final String identifier) {
-        return restconf.deleteConfigurationData(identifier);
-    }
-
-    @Override
-    public Response subscribeToStream(final String identifier, final UriInfo uriInfo) {
-        return restconf.subscribeToStream(identifier, uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext getAvailableStreams(final UriInfo uriInfo) {
-        return restconf.getAvailableStreams(uriInfo);
-    }
-
-    @Override
-    public SchemaExportContext getSchema(final String mountId) {
-        return schema.getSchema(mountId);
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfDelegatingNormalizedNodeWriter.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfDelegatingNormalizedNodeWriter.java
deleted file mode 100644 (file)
index d916a7c..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2015 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.sal.rest.impl;
-
-import java.io.IOException;
-import org.opendaylight.controller.sal.rest.api.RestconfNormalizedNodeWriter;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
-
-/**
- * This class just delegates all of the functionality to Yangtools normalized node writer
- */
-public class RestconfDelegatingNormalizedNodeWriter implements RestconfNormalizedNodeWriter {
-    private NormalizedNodeWriter delegNNWriter;
-
-    private RestconfDelegatingNormalizedNodeWriter(NormalizedNodeStreamWriter streamWriter, final boolean
-            orderKeyLeaves) {
-        this.delegNNWriter = NormalizedNodeWriter.forStreamWriter(streamWriter, orderKeyLeaves);
-    }
-
-    public static RestconfDelegatingNormalizedNodeWriter forStreamWriter(final NormalizedNodeStreamWriter writer) {
-        return forStreamWriter(writer, true);
-    }
-
-    public static RestconfDelegatingNormalizedNodeWriter forStreamWriter(final NormalizedNodeStreamWriter writer, final boolean
-            orderKeyLeaves) {
-        return new RestconfDelegatingNormalizedNodeWriter(writer, orderKeyLeaves);
-    }
-
-    public RestconfDelegatingNormalizedNodeWriter write(final NormalizedNode<?, ?> node) throws IOException {
-        delegNNWriter.write(node);
-        return this;
-    }
-
-    @Override
-    public void flush() throws IOException {
-        delegNNWriter.flush();
-    }
-
-    @Override
-    public void close() throws IOException {
-        delegNNWriter.close();
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfDocumentedExceptionMapper.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfDocumentedExceptionMapper.java
deleted file mode 100644 (file)
index 2e4e00d..0000000
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * Copyright (c) 2014 Brocade Communications 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.sal.rest.impl;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Throwables;
-import com.google.common.collect.Iterables;
-import com.google.gson.stream.JsonWriter;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.net.URI;
-import java.util.Iterator;
-import java.util.List;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.ext.ExceptionMapper;
-import javax.ws.rs.ext.Provider;
-import javax.xml.XMLConstants;
-import javax.xml.stream.FactoryConfigurationError;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-import org.opendaylight.controller.sal.rest.api.Draft02;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
-import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactory;
-import org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.codec.gson.JsonWriterFactory;
-import org.opendaylight.yangtools.yang.data.impl.codec.xml.XMLStreamNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This class defines an ExceptionMapper that handles RestconfDocumentedExceptions thrown by resource implementations
- * and translates appropriately to restconf error response as defined in the RESTCONF RFC draft.
- *
- * @author Thomas Pantelis
- */
-@Provider
-public class RestconfDocumentedExceptionMapper implements ExceptionMapper<RestconfDocumentedException> {
-
-    private final static Logger LOG = LoggerFactory.getLogger(RestconfDocumentedExceptionMapper.class);
-
-    private static final XMLOutputFactory XML_FACTORY;
-
-    static {
-        XML_FACTORY = XMLOutputFactory.newFactory();
-        XML_FACTORY.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
-    }
-
-    @Context
-    private HttpHeaders headers;
-
-    @Override
-    public Response toResponse(final RestconfDocumentedException exception) {
-
-        LOG.debug("In toResponse: {}", exception.getMessage());
-
-        final List<MediaType> accepts = headers.getAcceptableMediaTypes();
-        accepts.remove(MediaType.WILDCARD_TYPE);
-
-        LOG.debug("Accept headers: {}", accepts);
-
-        final MediaType mediaType;
-        if (accepts != null && accepts.size() > 0) {
-            mediaType = accepts.get(0); // just pick the first one
-        } else {
-            // Default to the content type if there's no Accept header
-            mediaType = MediaType.APPLICATION_JSON_TYPE;
-        }
-
-        LOG.debug("Using MediaType: {}", mediaType);
-
-        final List<RestconfError> errors = exception.getErrors();
-        if (errors.isEmpty()) {
-            // We don't actually want to send any content but, if we don't set any content here,
-            // the tomcat front-end will send back an html error report. To prevent that, set a
-            // single space char in the entity.
-
-            return Response.status(exception.getStatus()).type(MediaType.TEXT_PLAIN_TYPE).entity(" ").build();
-        }
-
-        final int status = errors.iterator().next().getErrorTag().getStatusCode();
-
-        final ControllerContext context = ControllerContext.getInstance();
-        final DataNodeContainer errorsSchemaNode = (DataNodeContainer) context.getRestconfModuleErrorsSchemaNode();
-
-        if (errorsSchemaNode == null) {
-            return Response.status(status).type(MediaType.TEXT_PLAIN_TYPE).entity(exception.getMessage()).build();
-        }
-
-        Preconditions.checkState(errorsSchemaNode instanceof ContainerSchemaNode,
-                "Found Errors SchemaNode isn't ContainerNode");
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> errContBuild =
-                Builders.containerBuilder((ContainerSchemaNode) errorsSchemaNode);
-
-        final List<DataSchemaNode> schemaList = ControllerContext.findInstanceDataChildrenByName(errorsSchemaNode,
-                Draft02.RestConfModule.ERROR_LIST_SCHEMA_NODE);
-        final DataSchemaNode errListSchemaNode = Iterables.getFirst(schemaList, null);
-        Preconditions.checkState(errListSchemaNode instanceof ListSchemaNode, "Found Error SchemaNode isn't ListSchemaNode");
-        final CollectionNodeBuilder<MapEntryNode, MapNode> listErorsBuilder = Builders
-                .mapBuilder((ListSchemaNode) errListSchemaNode);
-
-
-        for (final RestconfError error : errors) {
-            listErorsBuilder.withChild(toErrorEntryNode(error, errListSchemaNode));
-        }
-        errContBuild.withChild(listErorsBuilder.build());
-
-        final NormalizedNodeContext errContext =  new NormalizedNodeContext(new InstanceIdentifierContext<>(null,
-                (DataSchemaNode) errorsSchemaNode, null, context.getGlobalSchema()), errContBuild.build());
-
-        Object responseBody;
-        if (mediaType.getSubtype().endsWith("json")) {
-            responseBody = toJsonResponseBody(errContext, errorsSchemaNode);
-        } else {
-            responseBody = toXMLResponseBody(errContext, errorsSchemaNode);
-        }
-
-        return Response.status(status).type(mediaType).entity(responseBody).build();
-    }
-
-    private MapEntryNode toErrorEntryNode(final RestconfError error, final DataSchemaNode errListSchemaNode) {
-        Preconditions.checkArgument(errListSchemaNode instanceof ListSchemaNode,
-                "errListSchemaNode has to be of type ListSchemaNode");
-        final ListSchemaNode listStreamSchemaNode = (ListSchemaNode) errListSchemaNode;
-        final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> errNodeValues = Builders
-                .mapEntryBuilder(listStreamSchemaNode);
-
-        List<DataSchemaNode> lsChildDataSchemaNode = ControllerContext.findInstanceDataChildrenByName(
-                (listStreamSchemaNode), "error-type");
-        final DataSchemaNode errTypSchemaNode = Iterables.getFirst(lsChildDataSchemaNode, null);
-        Preconditions.checkState(errTypSchemaNode instanceof LeafSchemaNode);
-        errNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) errTypSchemaNode)
-                .withValue(error.getErrorType().getErrorTypeTag()).build());
-
-        lsChildDataSchemaNode = ControllerContext.findInstanceDataChildrenByName(
-                (listStreamSchemaNode), "error-tag");
-        final DataSchemaNode errTagSchemaNode = Iterables.getFirst(lsChildDataSchemaNode, null);
-        Preconditions.checkState(errTagSchemaNode instanceof LeafSchemaNode);
-        errNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) errTagSchemaNode)
-                .withValue(error.getErrorTag().getTagValue()).build());
-
-        if (error.getErrorAppTag() != null) {
-            lsChildDataSchemaNode = ControllerContext.findInstanceDataChildrenByName(
-                    (listStreamSchemaNode), "error-app-tag");
-            final DataSchemaNode errAppTagSchemaNode = Iterables.getFirst(lsChildDataSchemaNode, null);
-            Preconditions.checkState(errAppTagSchemaNode instanceof LeafSchemaNode);
-            errNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) errAppTagSchemaNode)
-                    .withValue(error.getErrorAppTag()).build());
-        }
-
-        lsChildDataSchemaNode = ControllerContext.findInstanceDataChildrenByName(
-                (listStreamSchemaNode), "error-message");
-        final DataSchemaNode errMsgSchemaNode = Iterables.getFirst(lsChildDataSchemaNode, null);
-        Preconditions.checkState(errMsgSchemaNode instanceof LeafSchemaNode);
-        errNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) errMsgSchemaNode)
-                .withValue(error.getErrorMessage()).build());
-
-        if(error.getErrorInfo() != null) {
-            // Oddly, error-info is defined as an empty container in the restconf yang. Apparently the
-            // intention is for implementors to define their own data content so we'll just treat it as a leaf
-            // with string data.
-            errNodeValues.withChild(ImmutableNodes.leafNode(Draft02.RestConfModule.ERROR_INFO_QNAME,
-                    error.getErrorInfo()));
-        }
-
-        // TODO : find how could we add possible "error-path"
-
-        return errNodeValues.build();
-    }
-
-    private Object toJsonResponseBody(final NormalizedNodeContext errorsNode, final DataNodeContainer errorsSchemaNode) {
-
-        final ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-        NormalizedNode<?, ?> data = errorsNode.getData();
-        final InstanceIdentifierContext<?> context = errorsNode.getInstanceIdentifierContext();
-        final DataSchemaNode schema = (DataSchemaNode) context.getSchemaNode();
-
-        SchemaPath path = context.getSchemaNode().getPath();
-        final OutputStreamWriter outputWriter = new OutputStreamWriter(outStream, Charsets.UTF_8);
-        if (data == null) {
-            throw new RestconfDocumentedException(Response.Status.NOT_FOUND);
-        }
-
-        boolean isDataRoot = false;
-        URI initialNs = null;
-        if (SchemaPath.ROOT.equals(path)) {
-            isDataRoot = true;
-        } else {
-            path = path.getParent();
-            // FIXME: Add proper handling of reading root.
-        }
-        if(!schema.isAugmenting() && !(schema instanceof SchemaContext)) {
-            initialNs = schema.getQName().getNamespace();
-        }
-
-        final JsonWriter jsonWriter = JsonWriterFactory.createJsonWriter(outputWriter);
-        final NormalizedNodeStreamWriter jsonStreamWriter = JSONNormalizedNodeStreamWriter.createExclusiveWriter(
-                JSONCodecFactory.create(context.getSchemaContext()), path, initialNs, jsonWriter);
-
-        // We create a delegating writer to special-case error-info as error-info is defined as an empty
-        // container in the restconf yang schema but we create a leaf node so we can output it. The delegate
-        // stream writer validates the node type against the schema and thus will expect a LeafSchemaNode but
-        // the schema has a ContainerSchemaNode so, to avoid an error, we override the leafNode behavior
-        // for error-info.
-        final NormalizedNodeStreamWriter streamWriter = new DelegatingNormalizedNodeStreamWriter(jsonStreamWriter) {
-            @Override
-            public void leafNode(final NodeIdentifier name, final Object value) throws IOException {
-                if(name.getNodeType().equals(Draft02.RestConfModule.ERROR_INFO_QNAME)) {
-                    jsonWriter.name(Draft02.RestConfModule.ERROR_INFO_QNAME.getLocalName());
-                    jsonWriter.value(value.toString());
-                } else {
-                    super.leafNode(name, value);
-                }
-            }
-        };
-
-        final NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(streamWriter);
-        try {
-            if(isDataRoot) {
-                writeDataRoot(outputWriter,nnWriter,(ContainerNode) data);
-            } else {
-                if(data instanceof MapEntryNode) {
-                    data = ImmutableNodes.mapNodeBuilder(data.getNodeType()).withChild(((MapEntryNode) data)).build();
-                }
-                nnWriter.write(data);
-            }
-            nnWriter.flush();
-            outputWriter.flush();
-        }
-        catch (final IOException e) {
-            LOG.warn("Error writing error response body", e);
-        }
-
-        return outStream.toString();
-
-    }
-
-    private Object toXMLResponseBody(final NormalizedNodeContext errorsNode, final DataNodeContainer errorsSchemaNode) {
-
-        final InstanceIdentifierContext<?> pathContext = errorsNode.getInstanceIdentifierContext();
-        final ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-
-        final XMLStreamWriter xmlWriter;
-        try {
-            xmlWriter = XML_FACTORY.createXMLStreamWriter(outStream, "UTF-8");
-        } catch (final XMLStreamException e) {
-            throw new IllegalStateException(e);
-        } catch (final FactoryConfigurationError e) {
-            throw new IllegalStateException(e);
-        }
-        NormalizedNode<?, ?> data = errorsNode.getData();
-        SchemaPath schemaPath = pathContext.getSchemaNode().getPath();
-
-        boolean isDataRoot = false;
-        if (SchemaPath.ROOT.equals(schemaPath)) {
-            isDataRoot = true;
-        } else {
-            schemaPath = schemaPath.getParent();
-        }
-
-        final NormalizedNodeStreamWriter xmlStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlWriter,
-                pathContext.getSchemaContext(), schemaPath);
-
-        // We create a delegating writer to special-case error-info as error-info is defined as an empty
-        // container in the restconf yang schema but we create a leaf node so we can output it. The delegate
-        // stream writer validates the node type against the schema and thus will expect a LeafSchemaNode but
-        // the schema has a ContainerSchemaNode so, to avoid an error, we override the leafNode behavior
-        // for error-info.
-        final NormalizedNodeStreamWriter streamWriter = new DelegatingNormalizedNodeStreamWriter(xmlStreamWriter) {
-            @Override
-            public void leafNode(final NodeIdentifier name, final Object value) throws IOException {
-                if(name.getNodeType().equals(Draft02.RestConfModule.ERROR_INFO_QNAME)) {
-                    String ns = Draft02.RestConfModule.ERROR_INFO_QNAME.getNamespace().toString();
-                    try {
-                        xmlWriter.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX,
-                                Draft02.RestConfModule.ERROR_INFO_QNAME.getLocalName(), ns);
-                        xmlWriter.writeCharacters(value.toString());
-                        xmlWriter.writeEndElement();
-                    } catch (XMLStreamException e) {
-                        throw new IOException("Error writing error-info", e);
-                    }
-                } else {
-                    super.leafNode(name, value);
-                }
-            }
-        };
-
-        final NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(streamWriter);
-        try {
-            if (isDataRoot) {
-                writeRootElement(xmlWriter, nnWriter, (ContainerNode) data);
-            } else {
-                if (data instanceof MapEntryNode) {
-                    // Restconf allows returning one list item. We need to wrap it
-                    // in map node in order to serialize it properly
-                    data = ImmutableNodes.mapNodeBuilder(data.getNodeType()).addChild((MapEntryNode) data).build();
-                }
-                nnWriter.write(data);
-                nnWriter.flush();
-            }
-        }
-        catch (final IOException e) {
-            LOG.warn("Error writing error response body.", e);
-        }
-
-        return outStream.toString();
-    }
-
-    private void writeRootElement(final XMLStreamWriter xmlWriter, final NormalizedNodeWriter nnWriter, final ContainerNode data)
-            throws IOException {
-        try {
-            final QName name = SchemaContext.NAME;
-            xmlWriter.writeStartElement(name.getNamespace().toString(), name.getLocalName());
-            for (final DataContainerChild<? extends PathArgument, ?> child : data.getValue()) {
-                nnWriter.write(child);
-            }
-            nnWriter.flush();
-            xmlWriter.writeEndElement();
-            xmlWriter.flush();
-        } catch (final XMLStreamException e) {
-            Throwables.propagate(e);
-        }
-    }
-
-    private void writeDataRoot(final OutputStreamWriter outputWriter, final NormalizedNodeWriter nnWriter, final ContainerNode data) throws IOException {
-        final Iterator<DataContainerChild<? extends PathArgument, ?>> iterator = data.getValue().iterator();
-        while(iterator.hasNext()) {
-            final DataContainerChild<? extends PathArgument, ?> child = iterator.next();
-            nnWriter.write(child);
-            nnWriter.flush();
-        }
-    }
-
-    private static class DelegatingNormalizedNodeStreamWriter implements NormalizedNodeStreamWriter {
-        private final NormalizedNodeStreamWriter delegate;
-
-        DelegatingNormalizedNodeStreamWriter(NormalizedNodeStreamWriter delegate) {
-            this.delegate = delegate;
-        }
-
-        @Override
-        public void leafNode(NodeIdentifier name, Object value) throws IOException, IllegalArgumentException {
-            delegate.leafNode(name, value);
-        }
-
-        @Override
-        public void startLeafSet(NodeIdentifier name, int childSizeHint) throws IOException, IllegalArgumentException {
-            delegate.startLeafSet(name, childSizeHint);
-        }
-
-        @Override
-        public void leafSetEntryNode(Object value) throws IOException, IllegalArgumentException {
-            delegate.leafSetEntryNode(value);
-        }
-
-        @Override
-        public void startContainerNode(NodeIdentifier name, int childSizeHint) throws IOException,
-                IllegalArgumentException {
-            delegate.startContainerNode(name, childSizeHint);
-        }
-
-        @Override
-        public void startUnkeyedList(NodeIdentifier name, int childSizeHint) throws IOException,
-                IllegalArgumentException {
-            delegate.startUnkeyedList(name, childSizeHint);
-        }
-
-        @Override
-        public void startUnkeyedListItem(NodeIdentifier name, int childSizeHint) throws IOException,
-                IllegalStateException {
-            delegate.startUnkeyedListItem(name, childSizeHint);
-        }
-
-        @Override
-        public void startMapNode(NodeIdentifier name, int childSizeHint) throws IOException, IllegalArgumentException {
-            delegate.startMapNode(name, childSizeHint);
-        }
-
-        @Override
-        public void startMapEntryNode(NodeIdentifierWithPredicates identifier, int childSizeHint) throws IOException,
-                IllegalArgumentException {
-            delegate.startMapEntryNode(identifier, childSizeHint);
-        }
-
-        @Override
-        public void startOrderedMapNode(NodeIdentifier name, int childSizeHint) throws IOException,
-                IllegalArgumentException {
-            delegate.startOrderedMapNode(name, childSizeHint);
-        }
-
-        @Override
-        public void startChoiceNode(NodeIdentifier name, int childSizeHint) throws IOException,
-                IllegalArgumentException {
-            delegate.startChoiceNode(name, childSizeHint);
-        }
-
-        @Override
-        public void startAugmentationNode(AugmentationIdentifier identifier) throws IOException,
-                IllegalArgumentException {
-            delegate.startAugmentationNode(identifier);
-        }
-
-        @Override
-        public void anyxmlNode(NodeIdentifier name, Object value) throws IOException, IllegalArgumentException {
-            delegate.anyxmlNode(name, value);
-        }
-
-        @Override
-        public void endNode() throws IOException, IllegalStateException {
-            delegate.endNode();
-        }
-
-        @Override
-        public void close() throws IOException {
-            delegate.close();
-        }
-
-        @Override
-        public void flush() throws IOException {
-            delegate.flush();
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/UnsupportedFormatException.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/UnsupportedFormatException.java
deleted file mode 100644 (file)
index aad5a0f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.impl;
-
-public class UnsupportedFormatException extends Exception {
-
-    private static final long serialVersionUID = -1741388894406313402L;
-
-    public UnsupportedFormatException() {
-        super();
-    }
-
-    public UnsupportedFormatException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    public UnsupportedFormatException(String message) {
-        super(message);
-    }
-
-    public UnsupportedFormatException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/XmlNormalizedNodeBodyReader.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/XmlNormalizedNodeBodyReader.java
deleted file mode 100644 (file)
index 294e56a..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.impl;
-
-import com.google.common.collect.Iterables;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Deque;
-import java.util.List;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyReader;
-import javax.ws.rs.ext.Provider;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import org.opendaylight.controller.sal.rest.api.Draft02;
-import org.opendaylight.controller.sal.rest.api.RestconfService;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlUtils;
-import org.opendaylight.yangtools.yang.data.impl.schema.SchemaUtils;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser.DomToNormalizedNodeParserFactory;
-import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
-import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
-import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
-import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-@Provider
-@Consumes({ Draft02.MediaTypes.DATA + RestconfService.XML, Draft02.MediaTypes.OPERATION + RestconfService.XML,
-    MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-public class XmlNormalizedNodeBodyReader extends AbstractIdentifierAwareJaxRsProvider implements MessageBodyReader<NormalizedNodeContext> {
-
-    private final static Logger LOG = LoggerFactory.getLogger(XmlNormalizedNodeBodyReader.class);
-    private static final DocumentBuilderFactory BUILDERFACTORY;
-
-    static {
-        final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        try {
-            factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
-            factory.setFeature("http://xml.org/sax/features/external-general-entities", false);
-            factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
-            factory.setXIncludeAware(false);
-            factory.setExpandEntityReferences(false);
-        } catch (final ParserConfigurationException e) {
-            throw new ExceptionInInitializerError(e);
-        }
-        factory.setNamespaceAware(true);
-        factory.setCoalescing(true);
-        factory.setIgnoringElementContentWhitespace(true);
-        factory.setIgnoringComments(true);
-        BUILDERFACTORY = factory;
-    }
-
-    @Override
-    public boolean isReadable(final Class<?> type, final Type genericType, final Annotation[] annotations,
-            final MediaType mediaType) {
-        return true;
-    }
-
-    @Override
-    public NormalizedNodeContext readFrom(final Class<NormalizedNodeContext> type, final Type genericType,
-            final Annotation[] annotations, final MediaType mediaType,
-            final MultivaluedMap<String, String> httpHeaders, final InputStream entityStream) throws IOException,
-            WebApplicationException {
-        try {
-            final InstanceIdentifierContext<?> path = getInstanceIdentifierContext();
-
-            if (entityStream.available() < 1) {
-                // represent empty nopayload input
-                return new NormalizedNodeContext(path, null);
-            }
-
-            final DocumentBuilder dBuilder;
-            try {
-                dBuilder = BUILDERFACTORY.newDocumentBuilder();
-            } catch (final ParserConfigurationException e) {
-                throw new RuntimeException("Failed to parse XML document", e);
-            }
-            final Document doc = dBuilder.parse(entityStream);
-
-            return parse(path,doc);
-        } catch (final RestconfDocumentedException e){
-            throw e;
-        } catch (final Exception e) {
-            LOG.debug("Error parsing xml input", e);
-
-            throw new RestconfDocumentedException("Error parsing input: " + e.getMessage(), ErrorType.PROTOCOL,
-                    ErrorTag.MALFORMED_MESSAGE);
-        }
-    }
-
-    private NormalizedNodeContext parse(final InstanceIdentifierContext<?> pathContext,final Document doc) {
-
-        final List<Element> elements = Collections.singletonList(doc.getDocumentElement());
-        final SchemaNode schemaNodeContext = pathContext.getSchemaNode();
-        DataSchemaNode schemaNode;
-        boolean isRpc = false;
-        if (schemaNodeContext instanceof RpcDefinition) {
-            schemaNode = ((RpcDefinition) schemaNodeContext).getInput();
-            isRpc = true;
-        } else if (schemaNodeContext instanceof DataSchemaNode) {
-            schemaNode = (DataSchemaNode) schemaNodeContext;
-        } else {
-            throw new IllegalStateException("Unknow SchemaNode");
-        }
-
-        final String docRootElm = doc.getDocumentElement().getLocalName();
-        final List<YangInstanceIdentifier.PathArgument> iiToDataList = new ArrayList<>();
-        InstanceIdentifierContext<? extends SchemaNode> outIIContext;
-
-
-        // FIXME the factory instance should be cached if the schema context is the same
-        final DomToNormalizedNodeParserFactory parserFactory =
-                DomToNormalizedNodeParserFactory.getInstance(XmlUtils.DEFAULT_XML_CODEC_PROVIDER, pathContext.getSchemaContext());
-
-        if (isPost() && !isRpc) {
-            final Deque<Object> foundSchemaNodes = findPathToSchemaNodeByName(schemaNode, docRootElm);
-            if (foundSchemaNodes.isEmpty()) {
-                throw new IllegalStateException(String.format("Child \"%s\" was not found in parent schema node \"%s\"",
-                        docRootElm, schemaNode.getQName()));
-            }
-            while (!foundSchemaNodes.isEmpty()) {
-                final Object child = foundSchemaNodes.pop();
-                if (child instanceof AugmentationSchema) {
-                    final AugmentationSchema augmentSchemaNode = (AugmentationSchema) child;
-                    iiToDataList.add(SchemaUtils.getNodeIdentifierForAugmentation(augmentSchemaNode));
-                } else if (child instanceof DataSchemaNode) {
-                    schemaNode = (DataSchemaNode) child;
-                    iiToDataList.add(new YangInstanceIdentifier.NodeIdentifier(schemaNode.getQName()));
-                }
-            }
-        }
-
-        NormalizedNode<?, ?> parsed = null;
-
-        if(schemaNode instanceof ContainerSchemaNode) {
-            parsed = parserFactory.getContainerNodeParser().parse(Collections.singletonList(doc.getDocumentElement()), (ContainerSchemaNode) schemaNode);
-        } else if(schemaNode instanceof ListSchemaNode) {
-            final ListSchemaNode casted = (ListSchemaNode) schemaNode;
-            parsed = parserFactory.getMapEntryNodeParser().parse(elements, casted);
-            if (isPost()) {
-                iiToDataList.add(parsed.getIdentifier());
-            }
-        }
-        // FIXME : add another DataSchemaNode extensions e.g. LeafSchemaNode
-
-        final YangInstanceIdentifier fullIIToData = YangInstanceIdentifier.create(Iterables.concat(
-                pathContext.getInstanceIdentifier().getPathArguments(), iiToDataList));
-
-        outIIContext = new InstanceIdentifierContext<>(fullIIToData, pathContext.getSchemaNode(), pathContext.getMountPoint(),
-                pathContext.getSchemaContext());
-
-        return new NormalizedNodeContext(outIIContext, parsed);
-    }
-
-    private static Deque<Object> findPathToSchemaNodeByName(final DataSchemaNode schemaNode, final String elementName) {
-        final Deque<Object> result = new ArrayDeque<>();
-        final ArrayList<ChoiceSchemaNode> choiceSchemaNodes = new ArrayList<>();
-        final Collection<DataSchemaNode> children = ((DataNodeContainer) schemaNode).getChildNodes();
-        for (final DataSchemaNode child : children) {
-            if (child instanceof ChoiceSchemaNode) {
-                choiceSchemaNodes.add((ChoiceSchemaNode) child);
-            } else if (child.getQName().getLocalName().equalsIgnoreCase(elementName)) {
-                result.push(child);
-                if (child.isAugmenting()) {
-                    final AugmentationSchema augment = findCorrespondingAugment(schemaNode, child);
-                    if (augment != null) {
-                        result.push(augment);
-                    }
-                }
-                return result;
-            }
-        }
-
-        for (final ChoiceSchemaNode choiceNode : choiceSchemaNodes) {
-            for (final ChoiceCaseNode caseNode : choiceNode.getCases()) {
-                final Deque<Object> resultFromRecursion = findPathToSchemaNodeByName(caseNode, elementName);
-                if (!resultFromRecursion.isEmpty()) {
-                    resultFromRecursion.push(choiceNode);
-                    if (choiceNode.isAugmenting()) {
-                        final AugmentationSchema augment = findCorrespondingAugment(schemaNode, choiceNode);
-                        if (augment != null) {
-                            resultFromRecursion.push(augment);
-                        }
-                    }
-                    return resultFromRecursion;
-                }
-            }
-        }
-        return result;
-    }
-
-    private static AugmentationSchema findCorrespondingAugment(final DataSchemaNode parent, final DataSchemaNode child) {
-        if (parent instanceof AugmentationTarget && !(parent instanceof ChoiceSchemaNode)) {
-            for (final AugmentationSchema augmentation : ((AugmentationTarget) parent).getAvailableAugmentations()) {
-                final DataSchemaNode childInAugmentation = augmentation.getDataChildByName(child.getQName());
-                if (childInAugmentation != null) {
-                    return augmentation;
-                }
-            }
-        }
-        return null;
-    }
-}
-
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/package-info.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/package-info.java
deleted file mode 100644 (file)
index 9560333..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.impl;
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java
deleted file mode 100644 (file)
index b8d9561..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-/**
- * Copyright (c) 2014 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.sal.restconf.impl;
-
-import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION;
-import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-import javax.ws.rs.core.Response.Status;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataReadTransaction;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcException;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
-import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType;
-import org.opendaylight.controller.sal.streams.listeners.ListenerAdapter;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BrokerFacade {
-    private final static Logger LOG = LoggerFactory.getLogger(BrokerFacade.class);
-
-    private final static BrokerFacade INSTANCE = new BrokerFacade();
-    private volatile DOMRpcService rpcService;
-    private volatile ConsumerSession context;
-    private DOMDataBroker domDataBroker;
-
-    private BrokerFacade() {
-    }
-
-    public void setRpcService(final DOMRpcService router) {
-        rpcService = router;
-    }
-
-    public void setContext(final ConsumerSession context) {
-        this.context = context;
-    }
-
-    public static BrokerFacade getInstance() {
-        return BrokerFacade.INSTANCE;
-    }
-
-    private void checkPreconditions() {
-        if (context == null || domDataBroker == null) {
-            throw new RestconfDocumentedException(Status.SERVICE_UNAVAILABLE);
-        }
-    }
-
-    // READ configuration
-    public NormalizedNode<?, ?> readConfigurationData(final YangInstanceIdentifier path) {
-        checkPreconditions();
-        return readDataViaTransaction(domDataBroker.newReadOnlyTransaction(), CONFIGURATION, path);
-    }
-
-    public NormalizedNode<?, ?> readConfigurationData(final DOMMountPoint mountPoint, final YangInstanceIdentifier path) {
-        final Optional<DOMDataBroker> domDataBrokerService = mountPoint.getService(DOMDataBroker.class);
-        if (domDataBrokerService.isPresent()) {
-            return readDataViaTransaction(domDataBrokerService.get().newReadOnlyTransaction(), CONFIGURATION, path);
-        }
-        final String errMsg = "DOM data broker service isn't available for mount point " + path;
-        LOG.warn(errMsg);
-        throw new RestconfDocumentedException(errMsg);
-    }
-
-    // READ operational
-    public NormalizedNode<?, ?> readOperationalData(final YangInstanceIdentifier path) {
-        checkPreconditions();
-        return readDataViaTransaction(domDataBroker.newReadOnlyTransaction(), OPERATIONAL, path);
-    }
-
-    public NormalizedNode<?, ?> readOperationalData(final DOMMountPoint mountPoint, final YangInstanceIdentifier path) {
-        final Optional<DOMDataBroker> domDataBrokerService = mountPoint.getService(DOMDataBroker.class);
-        if (domDataBrokerService.isPresent()) {
-            return readDataViaTransaction(domDataBrokerService.get().newReadOnlyTransaction(), OPERATIONAL, path);
-        }
-        final String errMsg = "DOM data broker service isn't available for mount point " + path;
-        LOG.warn(errMsg);
-        throw new RestconfDocumentedException(errMsg);
-    }
-
-    // PUT configuration
-    public CheckedFuture<Void, TransactionCommitFailedException> commitConfigurationDataPut(
-            final SchemaContext globalSchema, final YangInstanceIdentifier path, final NormalizedNode<?, ?> payload) {
-        checkPreconditions();
-        return putDataViaTransaction(domDataBroker.newReadWriteTransaction(), CONFIGURATION, path, payload, globalSchema);
-    }
-
-    public CheckedFuture<Void, TransactionCommitFailedException> commitConfigurationDataPut(
-            final DOMMountPoint mountPoint, final YangInstanceIdentifier path, final NormalizedNode<?, ?> payload) {
-        final Optional<DOMDataBroker> domDataBrokerService = mountPoint.getService(DOMDataBroker.class);
-        if (domDataBrokerService.isPresent()) {
-            return putDataViaTransaction(domDataBrokerService.get().newReadWriteTransaction(), CONFIGURATION, path,
-                    payload, mountPoint.getSchemaContext());
-        }
-        final String errMsg = "DOM data broker service isn't available for mount point " + path;
-        LOG.warn(errMsg);
-        throw new RestconfDocumentedException(errMsg);
-    }
-
-    // POST configuration
-    public CheckedFuture<Void, TransactionCommitFailedException> commitConfigurationDataPost(
-            final SchemaContext globalSchema, final YangInstanceIdentifier path, final NormalizedNode<?, ?> payload) {
-        checkPreconditions();
-        return postDataViaTransaction(domDataBroker.newReadWriteTransaction(), CONFIGURATION, path, payload, globalSchema);
-    }
-
-    public CheckedFuture<Void, TransactionCommitFailedException> commitConfigurationDataPost(
-            final DOMMountPoint mountPoint, final YangInstanceIdentifier path, final NormalizedNode<?, ?> payload) {
-        final Optional<DOMDataBroker> domDataBrokerService = mountPoint.getService(DOMDataBroker.class);
-        if (domDataBrokerService.isPresent()) {
-            return postDataViaTransaction(domDataBrokerService.get().newReadWriteTransaction(), CONFIGURATION, path,
-                    payload, mountPoint.getSchemaContext());
-        }
-        final String errMsg = "DOM data broker service isn't available for mount point " + path;
-        LOG.warn(errMsg);
-        throw new RestconfDocumentedException(errMsg);
-    }
-
-    // DELETE configuration
-    public CheckedFuture<Void, TransactionCommitFailedException> commitConfigurationDataDelete(
-            final YangInstanceIdentifier path) {
-        checkPreconditions();
-        return deleteDataViaTransaction(domDataBroker.newWriteOnlyTransaction(), CONFIGURATION, path);
-    }
-
-    public CheckedFuture<Void, TransactionCommitFailedException> commitConfigurationDataDelete(
-            final DOMMountPoint mountPoint, final YangInstanceIdentifier path) {
-        final Optional<DOMDataBroker> domDataBrokerService = mountPoint.getService(DOMDataBroker.class);
-        if (domDataBrokerService.isPresent()) {
-            return deleteDataViaTransaction(domDataBrokerService.get().newWriteOnlyTransaction(), CONFIGURATION, path);
-        }
-        final String errMsg = "DOM data broker service isn't available for mount point " + path;
-        LOG.warn(errMsg);
-        throw new RestconfDocumentedException(errMsg);
-    }
-
-    // RPC
-    public CheckedFuture<DOMRpcResult, DOMRpcException> invokeRpc(final SchemaPath type, final NormalizedNode<?, ?> input) {
-        checkPreconditions();
-        if (rpcService == null) {
-            throw new RestconfDocumentedException(Status.SERVICE_UNAVAILABLE);
-        }
-        return rpcService.invokeRpc(type, input);
-    }
-
-    public void registerToListenDataChanges(final LogicalDatastoreType datastore, final DataChangeScope scope,
-            final ListenerAdapter listener) {
-        checkPreconditions();
-
-        if (listener.isListening()) {
-            return;
-        }
-
-        final YangInstanceIdentifier path = listener.getPath();
-        final ListenerRegistration<DOMDataChangeListener> registration = domDataBroker.registerDataChangeListener(
-                datastore, path, listener, scope);
-
-        listener.setRegistration(registration);
-    }
-
-    private NormalizedNode<?, ?> readDataViaTransaction(final DOMDataReadTransaction transaction,
-            final LogicalDatastoreType datastore, final YangInstanceIdentifier path) {
-        LOG.trace("Read " + datastore.name() + " via Restconf: {}", path);
-        final ListenableFuture<Optional<NormalizedNode<?, ?>>> listenableFuture = transaction.read(datastore, path);
-        if (listenableFuture != null) {
-            Optional<NormalizedNode<?, ?>> optional;
-            try {
-                LOG.debug("Reading result data from transaction.");
-                optional = listenableFuture.get();
-            } catch (InterruptedException | ExecutionException e) {
-                LOG.warn("Exception by reading " + datastore.name() + " via Restconf: {}", path, e);
-                throw new RestconfDocumentedException("Problem to get data from transaction.", e.getCause());
-
-            }
-            if (optional != null) {
-                if (optional.isPresent()) {
-                    return optional.get();
-                }
-            }
-        }
-        return null;
-    }
-
-    private CheckedFuture<Void, TransactionCommitFailedException> postDataViaTransaction(
-            final DOMDataReadWriteTransaction rWTransaction, final LogicalDatastoreType datastore,
-            final YangInstanceIdentifier path, final NormalizedNode<?, ?> payload, final SchemaContext schemaContext) {
-        // FIXME: This is doing correct post for container and list children
-        //        not sure if this will work for choice case
-        if(payload instanceof MapNode) {
-            final NormalizedNode<?, ?> emptySubtree = ImmutableNodes.fromInstanceId(schemaContext, path);
-            rWTransaction.merge(datastore, YangInstanceIdentifier.create(emptySubtree.getIdentifier()), emptySubtree);
-            ensureParentsByMerge(datastore, path, rWTransaction, schemaContext);
-            for(final MapEntryNode child : ((MapNode) payload).getValue()) {
-                final YangInstanceIdentifier childPath = path.node(child.getIdentifier());
-                checkItemDoesNotExists(rWTransaction, datastore, childPath);
-                rWTransaction.put(datastore, childPath, child);
-            }
-        } else {
-            checkItemDoesNotExists(rWTransaction,datastore, path);
-            ensureParentsByMerge(datastore, path, rWTransaction, schemaContext);
-            rWTransaction.put(datastore, path, payload);
-        }
-        return rWTransaction.submit();
-    }
-
-    private void checkItemDoesNotExists(final DOMDataReadWriteTransaction rWTransaction,final LogicalDatastoreType store, final YangInstanceIdentifier path) {
-        final ListenableFuture<Boolean> futureDatastoreData = rWTransaction.exists(store, path);
-        try {
-            if (futureDatastoreData.get()) {
-                final String errMsg = "Post Configuration via Restconf was not executed because data already exists";
-                LOG.trace(errMsg + ":{}", path);
-                rWTransaction.cancel();
-                throw new RestconfDocumentedException("Data already exists for path: " + path, ErrorType.PROTOCOL,
-                        ErrorTag.DATA_EXISTS);
-            }
-        } catch (InterruptedException | ExecutionException e) {
-            LOG.warn("It wasn't possible to get data loaded from datastore at path " + path, e);
-        }
-
-    }
-
-    private CheckedFuture<Void, TransactionCommitFailedException> putDataViaTransaction(
-            final DOMDataReadWriteTransaction writeTransaction, final LogicalDatastoreType datastore,
-            final YangInstanceIdentifier path, final NormalizedNode<?, ?> payload, final SchemaContext schemaContext) {
-        LOG.trace("Put " + datastore.name() + " via Restconf: {}", path);
-        ensureParentsByMerge(datastore, path, writeTransaction, schemaContext);
-        writeTransaction.put(datastore, path, payload);
-        return writeTransaction.submit();
-    }
-
-    private CheckedFuture<Void, TransactionCommitFailedException> deleteDataViaTransaction(
-            final DOMDataWriteTransaction writeTransaction, final LogicalDatastoreType datastore,
-            final YangInstanceIdentifier path) {
-        LOG.trace("Delete " + datastore.name() + " via Restconf: {}", path);
-        writeTransaction.delete(datastore, path);
-        return writeTransaction.submit();
-    }
-
-    public void setDomDataBroker(final DOMDataBroker domDataBroker) {
-        this.domDataBroker = domDataBroker;
-    }
-
-    private void ensureParentsByMerge(final LogicalDatastoreType store,
-                                      final YangInstanceIdentifier normalizedPath, final DOMDataReadWriteTransaction rwTx, final SchemaContext schemaContext) {
-        final List<PathArgument> normalizedPathWithoutChildArgs = new ArrayList<>();
-        YangInstanceIdentifier rootNormalizedPath = null;
-
-        final Iterator<PathArgument> it = normalizedPath.getPathArguments().iterator();
-
-        while(it.hasNext()) {
-            final PathArgument pathArgument = it.next();
-            if(rootNormalizedPath == null) {
-                rootNormalizedPath = YangInstanceIdentifier.create(pathArgument);
-            }
-
-            // Skip last element, its not a parent
-            if(it.hasNext()) {
-                normalizedPathWithoutChildArgs.add(pathArgument);
-            }
-        }
-
-        // No parent structure involved, no need to ensure parents
-        if(normalizedPathWithoutChildArgs.isEmpty()) {
-            return;
-        }
-
-        Preconditions.checkArgument(rootNormalizedPath != null, "Empty path received");
-
-        final NormalizedNode<?, ?> parentStructure =
-                ImmutableNodes.fromInstanceId(schemaContext, YangInstanceIdentifier.create(normalizedPathWithoutChildArgs));
-        rwTx.merge(store, rootNormalizedPath, parentStructure);
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.java
deleted file mode 100644 (file)
index b33d79e..0000000
+++ /dev/null
@@ -1,979 +0,0 @@
-/**
- * Copyright (c) 2014 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.sal.restconf.impl;
-
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
-import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicReference;
-import javax.ws.rs.core.Response.Status;
-import org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationException;
-import org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationOperation;
-import org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizer;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.sal.rest.api.Draft02;
-import org.opendaylight.controller.sal.rest.impl.RestUtil;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType;
-import org.opendaylight.yangtools.concepts.Codec;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.InstanceIdentifierBuilder;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
-import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
-import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
-import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ControllerContext implements SchemaContextListener {
-    private final static Logger LOG = LoggerFactory.getLogger(ControllerContext.class);
-
-    private final static ControllerContext INSTANCE = new ControllerContext();
-
-    private final static String NULL_VALUE = "null";
-
-    private final static String MOUNT_MODULE = "yang-ext";
-
-    private final static String MOUNT_NODE = "mount";
-
-    public final static String MOUNT = "yang-ext:mount";
-
-    private final static String URI_ENCODING_CHAR_SET = "ISO-8859-1";
-
-    private static final Splitter SLASH_SPLITTER = Splitter.on('/');
-
-    private static final YangInstanceIdentifier ROOT = YangInstanceIdentifier.builder().build();
-
-    private final AtomicReference<Map<QName, RpcDefinition>> qnameToRpc =
-            new AtomicReference<>(Collections.<QName, RpcDefinition>emptyMap());
-
-    private volatile SchemaContext globalSchema;
-    private volatile DOMMountPointService mountService;
-
-    private DataNormalizer dataNormalizer;
-
-    public void setGlobalSchema(final SchemaContext globalSchema) {
-        this.globalSchema = globalSchema;
-        dataNormalizer = new DataNormalizer(globalSchema);
-    }
-
-    public void setMountService(final DOMMountPointService mountService) {
-        this.mountService = mountService;
-    }
-
-    private ControllerContext() {
-    }
-
-    public static ControllerContext getInstance() {
-        return ControllerContext.INSTANCE;
-    }
-
-    private void checkPreconditions() {
-        if (globalSchema == null) {
-            throw new RestconfDocumentedException(Status.SERVICE_UNAVAILABLE);
-        }
-    }
-
-    public void setSchemas(final SchemaContext schemas) {
-        onGlobalContextUpdated(schemas);
-    }
-
-    public InstanceIdentifierContext<?> toInstanceIdentifier(final String restconfInstance) {
-        return toIdentifier(restconfInstance, false);
-    }
-
-    public SchemaContext getGlobalSchema() {
-        return globalSchema;
-    }
-
-    public InstanceIdentifierContext<?> toMountPointIdentifier(final String restconfInstance) {
-        return toIdentifier(restconfInstance, true);
-    }
-
-    private InstanceIdentifierContext<?> toIdentifier(final String restconfInstance, final boolean toMountPointIdentifier) {
-        checkPreconditions();
-
-        if(restconfInstance == null) {
-            return new InstanceIdentifierContext<>(ROOT, globalSchema, null, globalSchema);
-        }
-
-        final List<String> pathArgs = urlPathArgsDecode(SLASH_SPLITTER.split(restconfInstance));
-        omitFirstAndLastEmptyString(pathArgs);
-        if (pathArgs.isEmpty()) {
-            return null;
-        }
-
-        final String first = pathArgs.iterator().next();
-        final String startModule = ControllerContext.toModuleName(first);
-        if (startModule == null) {
-            throw new RestconfDocumentedException("First node in URI has to be in format \"moduleName:nodeName\"",
-                    ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-
-        final InstanceIdentifierBuilder builder = YangInstanceIdentifier.builder();
-        final Module latestModule = globalSchema.findModuleByName(startModule, null);
-
-        if (latestModule == null) {
-            throw new RestconfDocumentedException("The module named '" + startModule + "' does not exist.", ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT);
-        }
-
-        final InstanceIdentifierContext<?> iiWithSchemaNode = collectPathArguments(builder, pathArgs, latestModule, null,
-                toMountPointIdentifier);
-
-        if (iiWithSchemaNode == null) {
-            throw new RestconfDocumentedException("URI has bad format", ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-
-        return iiWithSchemaNode;
-    }
-
-    private static List<String> omitFirstAndLastEmptyString(final List<String> list) {
-        if (list.isEmpty()) {
-            return list;
-        }
-
-        final String head = list.iterator().next();
-        if (head.isEmpty()) {
-            list.remove(0);
-        }
-
-        if (list.isEmpty()) {
-            return list;
-        }
-
-        final String last = list.get(list.size() - 1);
-        if (last.isEmpty()) {
-            list.remove(list.size() - 1);
-        }
-
-        return list;
-    }
-    public Module findModuleByName(final String moduleName) {
-        checkPreconditions();
-        Preconditions.checkArgument(moduleName != null && !moduleName.isEmpty());
-        return globalSchema.findModuleByName(moduleName, null);
-    }
-
-    public Module findModuleByName(final DOMMountPoint mountPoint, final String moduleName) {
-        Preconditions.checkArgument(moduleName != null && mountPoint != null);
-
-        final SchemaContext mountPointSchema = mountPoint.getSchemaContext();
-        if (mountPointSchema == null) {
-            return null;
-        }
-
-        return mountPointSchema.findModuleByName(moduleName, null);
-    }
-
-    public Module findModuleByNamespace(final URI namespace) {
-        checkPreconditions();
-        Preconditions.checkArgument(namespace != null);
-        return globalSchema.findModuleByNamespaceAndRevision(namespace, null);
-    }
-
-    public Module findModuleByNamespace(final DOMMountPoint mountPoint, final URI namespace) {
-        Preconditions.checkArgument(namespace != null && mountPoint != null);
-
-        final SchemaContext mountPointSchema = mountPoint.getSchemaContext();
-        if (mountPointSchema == null) {
-            return null;
-        }
-
-        return mountPointSchema.findModuleByNamespaceAndRevision(namespace, null);
-    }
-
-    public Module findModuleByNameAndRevision(final QName module) {
-        checkPreconditions();
-        Preconditions.checkArgument(module != null && module.getLocalName() != null && module.getRevision() != null);
-
-        return globalSchema.findModuleByName(module.getLocalName(), module.getRevision());
-    }
-
-    public Module findModuleByNameAndRevision(final DOMMountPoint mountPoint, final QName module) {
-        checkPreconditions();
-        Preconditions.checkArgument(module != null && module.getLocalName() != null && module.getRevision() != null
-                && mountPoint != null);
-
-        final SchemaContext schemaContext = mountPoint.getSchemaContext();
-        return schemaContext == null ? null : schemaContext.findModuleByName(module.getLocalName(),
-                module.getRevision());
-    }
-
-    public DataNodeContainer getDataNodeContainerFor(final YangInstanceIdentifier path) {
-        checkPreconditions();
-
-        final Iterable<PathArgument> elements = path.getPathArguments();
-        final PathArgument head = elements.iterator().next();
-        final QName startQName = head.getNodeType();
-        final Module initialModule = globalSchema.findModuleByNamespaceAndRevision(startQName.getNamespace(),
-                startQName.getRevision());
-        DataNodeContainer node = initialModule;
-        for (final PathArgument element : elements) {
-            final QName _nodeType = element.getNodeType();
-            final DataSchemaNode potentialNode = ControllerContext.childByQName(node, _nodeType);
-            if (potentialNode == null || !ControllerContext.isListOrContainer(potentialNode)) {
-                return null;
-            }
-            node = (DataNodeContainer) potentialNode;
-        }
-
-        return node;
-    }
-
-    public String toFullRestconfIdentifier(final YangInstanceIdentifier path, final DOMMountPoint mount) {
-        checkPreconditions();
-
-        final Iterable<PathArgument> elements = path.getPathArguments();
-        final StringBuilder builder = new StringBuilder();
-        final PathArgument head = elements.iterator().next();
-        final QName startQName = head.getNodeType();
-        final SchemaContext schemaContext;
-        if (mount != null) {
-            schemaContext = mount.getSchemaContext();
-        } else {
-            schemaContext = globalSchema;
-        }
-        final Module initialModule = schemaContext.findModuleByNamespaceAndRevision(startQName.getNamespace(),
-                startQName.getRevision());
-        DataNodeContainer node = initialModule;
-        for (final PathArgument element : elements) {
-            if (!(element instanceof AugmentationIdentifier)) {
-                final QName _nodeType = element.getNodeType();
-                final DataSchemaNode potentialNode = ControllerContext.childByQName(node, _nodeType);
-                if (!(element instanceof NodeIdentifier && potentialNode instanceof ListSchemaNode) &&
-                        !(potentialNode instanceof ChoiceSchemaNode)) {
-                    builder.append(convertToRestconfIdentifier(element, potentialNode, mount));
-                    if (potentialNode instanceof DataNodeContainer) {
-                        node = (DataNodeContainer) potentialNode;
-                    }
-                }
-            }
-        }
-
-        return builder.toString();
-    }
-
-    public String findModuleNameByNamespace(final URI namespace) {
-        checkPreconditions();
-
-        final Module module = this.findModuleByNamespace(namespace);
-        return module == null ? null : module.getName();
-    }
-
-    public String findModuleNameByNamespace(final DOMMountPoint mountPoint, final URI namespace) {
-        final Module module = this.findModuleByNamespace(mountPoint, namespace);
-        return module == null ? null : module.getName();
-    }
-
-    public URI findNamespaceByModuleName(final String moduleName) {
-        final Module module = this.findModuleByName(moduleName);
-        return module == null ? null : module.getNamespace();
-    }
-
-    public URI findNamespaceByModuleName(final DOMMountPoint mountPoint, final String moduleName) {
-        final Module module = this.findModuleByName(mountPoint, moduleName);
-        return module == null ? null : module.getNamespace();
-    }
-
-    public Set<Module> getAllModules(final DOMMountPoint mountPoint) {
-        checkPreconditions();
-
-        final SchemaContext schemaContext = mountPoint == null ? null : mountPoint.getSchemaContext();
-        return schemaContext == null ? null : schemaContext.getModules();
-    }
-
-    public Set<Module> getAllModules() {
-        checkPreconditions();
-        return globalSchema.getModules();
-    }
-
-    private static final CharSequence toRestconfIdentifier(final SchemaContext context, final QName qname) {
-        final Module schema = context.findModuleByNamespaceAndRevision(qname.getNamespace(), qname.getRevision());
-        return schema == null ? null : schema.getName() + ':' + qname.getLocalName();
-    }
-
-    public CharSequence toRestconfIdentifier(final QName qname, final DOMMountPoint mount) {
-        final SchemaContext schema;
-        if (mount != null) {
-            schema = mount.getSchemaContext();
-        } else {
-            checkPreconditions();
-            schema = globalSchema;
-        }
-
-        return toRestconfIdentifier(schema, qname);
-    }
-
-    public CharSequence toRestconfIdentifier(final QName qname) {
-        checkPreconditions();
-
-        return toRestconfIdentifier(globalSchema, qname);
-    }
-
-    public CharSequence toRestconfIdentifier(final DOMMountPoint mountPoint, final QName qname) {
-        if (mountPoint == null) {
-            return null;
-        }
-
-        return toRestconfIdentifier(mountPoint.getSchemaContext(), qname);
-    }
-
-    public Module getRestconfModule() {
-        return findModuleByNameAndRevision(Draft02.RestConfModule.IETF_RESTCONF_QNAME);
-    }
-
-    private static final Predicate<GroupingDefinition> ERRORS_GROUPING_FILTER = new Predicate<GroupingDefinition>() {
-        @Override
-        public boolean apply(final GroupingDefinition g) {
-            return Draft02.RestConfModule.ERRORS_GROUPING_SCHEMA_NODE.equals(g.getQName().getLocalName());
-        }
-    };
-
-    public DataSchemaNode getRestconfModuleErrorsSchemaNode() {
-        final Module restconfModule = getRestconfModule();
-        if (restconfModule == null) {
-            return null;
-        }
-
-        final Set<GroupingDefinition> groupings = restconfModule.getGroupings();
-
-        final Iterable<GroupingDefinition> filteredGroups = Iterables.filter(groupings, ERRORS_GROUPING_FILTER);
-
-        final GroupingDefinition restconfGrouping = Iterables.getFirst(filteredGroups, null);
-
-        final List<DataSchemaNode> instanceDataChildrenByName = findInstanceDataChildrenByName(restconfGrouping,
-                Draft02.RestConfModule.ERRORS_CONTAINER_SCHEMA_NODE);
-        return Iterables.getFirst(instanceDataChildrenByName, null);
-    }
-
-    private static final Predicate<GroupingDefinition> GROUPING_FILTER = new Predicate<GroupingDefinition>() {
-        @Override
-        public boolean apply(final GroupingDefinition g) {
-            return Draft02.RestConfModule.RESTCONF_GROUPING_SCHEMA_NODE.equals(g.getQName().getLocalName());
-        }
-    };
-
-    public DataSchemaNode getRestconfModuleRestConfSchemaNode(final Module inRestconfModule, final String schemaNodeName) {
-        Module restconfModule = inRestconfModule;
-        if (restconfModule == null) {
-            restconfModule = getRestconfModule();
-        }
-
-        if (restconfModule == null) {
-            return null;
-        }
-
-        final Set<GroupingDefinition> groupings = restconfModule.getGroupings();
-        final Iterable<GroupingDefinition> filteredGroups = Iterables.filter(groupings, GROUPING_FILTER);
-        final GroupingDefinition restconfGrouping = Iterables.getFirst(filteredGroups, null);
-
-        final List<DataSchemaNode> instanceDataChildrenByName = findInstanceDataChildrenByName(restconfGrouping,
-                Draft02.RestConfModule.RESTCONF_CONTAINER_SCHEMA_NODE);
-        final DataSchemaNode restconfContainer = Iterables.getFirst(instanceDataChildrenByName, null);
-
-        if (Objects.equal(schemaNodeName, Draft02.RestConfModule.OPERATIONS_CONTAINER_SCHEMA_NODE)) {
-            final List<DataSchemaNode> instances = findInstanceDataChildrenByName(
-                    ((DataNodeContainer) restconfContainer), Draft02.RestConfModule.OPERATIONS_CONTAINER_SCHEMA_NODE);
-            return Iterables.getFirst(instances, null);
-        } else if (Objects.equal(schemaNodeName, Draft02.RestConfModule.STREAMS_CONTAINER_SCHEMA_NODE)) {
-            final List<DataSchemaNode> instances = findInstanceDataChildrenByName(
-                    ((DataNodeContainer) restconfContainer), Draft02.RestConfModule.STREAMS_CONTAINER_SCHEMA_NODE);
-            return Iterables.getFirst(instances, null);
-        } else if (Objects.equal(schemaNodeName, Draft02.RestConfModule.STREAM_LIST_SCHEMA_NODE)) {
-            List<DataSchemaNode> instances = findInstanceDataChildrenByName(
-                    ((DataNodeContainer) restconfContainer), Draft02.RestConfModule.STREAMS_CONTAINER_SCHEMA_NODE);
-            final DataSchemaNode modules = Iterables.getFirst(instances, null);
-            instances = findInstanceDataChildrenByName(((DataNodeContainer) modules),
-                    Draft02.RestConfModule.STREAM_LIST_SCHEMA_NODE);
-            return Iterables.getFirst(instances, null);
-        } else if (Objects.equal(schemaNodeName, Draft02.RestConfModule.MODULES_CONTAINER_SCHEMA_NODE)) {
-            final List<DataSchemaNode> instances = findInstanceDataChildrenByName(
-                    ((DataNodeContainer) restconfContainer), Draft02.RestConfModule.MODULES_CONTAINER_SCHEMA_NODE);
-            return Iterables.getFirst(instances, null);
-        } else if (Objects.equal(schemaNodeName, Draft02.RestConfModule.MODULE_LIST_SCHEMA_NODE)) {
-            List<DataSchemaNode> instances = findInstanceDataChildrenByName(
-                    ((DataNodeContainer) restconfContainer), Draft02.RestConfModule.MODULES_CONTAINER_SCHEMA_NODE);
-            final DataSchemaNode modules = Iterables.getFirst(instances, null);
-            instances = findInstanceDataChildrenByName(((DataNodeContainer) modules),
-                    Draft02.RestConfModule.MODULE_LIST_SCHEMA_NODE);
-            return Iterables.getFirst(instances, null);
-        } else if (Objects.equal(schemaNodeName, Draft02.RestConfModule.STREAMS_CONTAINER_SCHEMA_NODE)) {
-            final List<DataSchemaNode> instances = findInstanceDataChildrenByName(
-                    ((DataNodeContainer) restconfContainer), Draft02.RestConfModule.STREAMS_CONTAINER_SCHEMA_NODE);
-            return Iterables.getFirst(instances, null);
-        }
-
-        return null;
-    }
-
-    private static DataSchemaNode childByQName(final ChoiceSchemaNode container, final QName name) {
-        for (final ChoiceCaseNode caze : container.getCases()) {
-            final DataSchemaNode ret = ControllerContext.childByQName(caze, name);
-            if (ret != null) {
-                return ret;
-            }
-        }
-
-        return null;
-    }
-
-    private static DataSchemaNode childByQName(final ChoiceCaseNode container, final QName name) {
-        return container.getDataChildByName(name);
-    }
-
-    private static DataSchemaNode childByQName(final ContainerSchemaNode container, final QName name) {
-        return ControllerContext.dataNodeChildByQName(container, name);
-    }
-
-    private static DataSchemaNode childByQName(final ListSchemaNode container, final QName name) {
-        return ControllerContext.dataNodeChildByQName(container, name);
-    }
-
-    private static DataSchemaNode childByQName(final Module container, final QName name) {
-        return ControllerContext.dataNodeChildByQName(container, name);
-    }
-
-    private static DataSchemaNode childByQName(final DataSchemaNode container, final QName name) {
-        return null;
-    }
-
-    private static DataSchemaNode dataNodeChildByQName(final DataNodeContainer container, final QName name) {
-        final DataSchemaNode ret = container.getDataChildByName(name);
-        if (ret == null) {
-            for (final DataSchemaNode node : container.getChildNodes()) {
-                if ((node instanceof ChoiceSchemaNode)) {
-                    final ChoiceSchemaNode choiceNode = ((ChoiceSchemaNode) node);
-                    final DataSchemaNode childByQName = ControllerContext.childByQName(choiceNode, name);
-                    if (childByQName != null) {
-                        return childByQName;
-                    }
-                }
-            }
-        }
-        return ret;
-    }
-
-    private String toUriString(final Object object, final LeafSchemaNode leafNode, final DOMMountPoint mount) throws UnsupportedEncodingException {
-        final Codec<Object, Object> codec = RestCodec.from(leafNode.getType(), mount);
-        return object == null ? "" : URLEncoder.encode(codec.serialize(object).toString(), ControllerContext.URI_ENCODING_CHAR_SET);
-    }
-
-    private InstanceIdentifierContext<?> collectPathArguments(final InstanceIdentifierBuilder builder,
-            final List<String> strings, final DataNodeContainer parentNode, final DOMMountPoint mountPoint,
-            final boolean returnJustMountPoint) {
-        Preconditions.<List<String>> checkNotNull(strings);
-
-        if (parentNode == null) {
-            return null;
-        }
-
-        if (strings.isEmpty()) {
-            return createContext(builder.toInstance(), ((DataSchemaNode) parentNode), mountPoint,mountPoint != null ? mountPoint.getSchemaContext() : globalSchema);
-        }
-
-        final String head = strings.iterator().next();
-        final String nodeName = toNodeName(head);
-        final String moduleName = ControllerContext.toModuleName(head);
-
-        DataSchemaNode targetNode = null;
-        if (!Strings.isNullOrEmpty(moduleName)) {
-            if (Objects.equal(moduleName, ControllerContext.MOUNT_MODULE)
-                    && Objects.equal(nodeName, ControllerContext.MOUNT_NODE)) {
-                if (mountPoint != null) {
-                    throw new RestconfDocumentedException("Restconf supports just one mount point in URI.",
-                            ErrorType.APPLICATION, ErrorTag.OPERATION_NOT_SUPPORTED);
-                }
-
-                if (mountService == null) {
-                    throw new RestconfDocumentedException(
-                            "MountService was not found. Finding behind mount points does not work.",
-                            ErrorType.APPLICATION, ErrorTag.OPERATION_NOT_SUPPORTED);
-                }
-
-                final YangInstanceIdentifier partialPath = dataNormalizer.toNormalized(builder.build());
-                final Optional<DOMMountPoint> mountOpt = mountService.getMountPoint(partialPath);
-                if (!mountOpt.isPresent()) {
-                    LOG.debug("Instance identifier to missing mount point: {}", partialPath);
-                    throw new RestconfDocumentedException("Mount point does not exist.", ErrorType.PROTOCOL,
-                            ErrorTag.DATA_MISSING);
-                }
-                final DOMMountPoint mount = mountOpt.get();
-
-                final SchemaContext mountPointSchema = mount.getSchemaContext();
-                if (mountPointSchema == null) {
-                    throw new RestconfDocumentedException("Mount point does not contain any schema with modules.",
-                            ErrorType.APPLICATION, ErrorTag.UNKNOWN_ELEMENT);
-                }
-
-                if (returnJustMountPoint || strings.size() == 1) {
-                    final YangInstanceIdentifier instance = YangInstanceIdentifier.builder().toInstance();
-                    return new InstanceIdentifierContext<>(instance, mountPointSchema, mount,mountPointSchema);
-                }
-
-                final String moduleNameBehindMountPoint = toModuleName(strings.get(1));
-                if (moduleNameBehindMountPoint == null) {
-                    throw new RestconfDocumentedException(
-                            "First node after mount point in URI has to be in format \"moduleName:nodeName\"",
-                            ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-                }
-
-                final Module moduleBehindMountPoint = mountPointSchema.findModuleByName(moduleNameBehindMountPoint, null);
-                if (moduleBehindMountPoint == null) {
-                    throw new RestconfDocumentedException("\"" + moduleName
-                            + "\" module does not exist in mount point.", ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT);
-                }
-
-                final List<String> subList = strings.subList(1, strings.size());
-                return collectPathArguments(YangInstanceIdentifier.builder(), subList, moduleBehindMountPoint, mount,
-                        returnJustMountPoint);
-            }
-
-            Module module = null;
-            if (mountPoint == null) {
-                checkPreconditions();
-                module = globalSchema.findModuleByName(moduleName, null);
-                if (module == null) {
-                    throw new RestconfDocumentedException("\"" + moduleName + "\" module does not exist.",
-                            ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT);
-                }
-            } else {
-                final SchemaContext schemaContext = mountPoint.getSchemaContext();
-                if (schemaContext != null) {
-                    module = schemaContext.findModuleByName(moduleName, null);
-                } else {
-                    module = null;
-                }
-                if (module == null) {
-                    throw new RestconfDocumentedException("\"" + moduleName
-                            + "\" module does not exist in mount point.", ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT);
-                }
-            }
-
-            targetNode = findInstanceDataChildByNameAndNamespace(parentNode, nodeName, module.getNamespace());
-
-            if (targetNode == null && parentNode instanceof Module) {
-                final RpcDefinition rpc = ControllerContext.getInstance().getRpcDefinition(head);
-                if (rpc != null) {
-                    return new InstanceIdentifierContext<RpcDefinition>(builder.build(), rpc, mountPoint,
-                            mountPoint != null ? mountPoint.getSchemaContext() : globalSchema);
-                }
-            }
-
-            if (targetNode == null) {
-                throw new RestconfDocumentedException("URI has bad format. Possible reasons:\n" + " 1. \"" + head
-                        + "\" was not found in parent data node.\n" + " 2. \"" + head
-                        + "\" is behind mount point. Then it should be in format \"/" + MOUNT + "/" + head + "\".",
-                        ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-            }
-        } else {
-            final List<DataSchemaNode> potentialSchemaNodes = findInstanceDataChildrenByName(parentNode, nodeName);
-            if (potentialSchemaNodes.size() > 1) {
-                final StringBuilder strBuilder = new StringBuilder();
-                for (final DataSchemaNode potentialNodeSchema : potentialSchemaNodes) {
-                    strBuilder.append("   ").append(potentialNodeSchema.getQName().getNamespace()).append("\n");
-                }
-
-                throw new RestconfDocumentedException(
-                        "URI has bad format. Node \""
-                                + nodeName
-                                + "\" is added as augment from more than one module. "
-                                + "Therefore the node must have module name and it has to be in format \"moduleName:nodeName\"."
-                                + "\nThe node is added as augment from modules with namespaces:\n"
-                                + strBuilder.toString(), ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-            }
-
-            if (potentialSchemaNodes.isEmpty()) {
-                throw new RestconfDocumentedException("\"" + nodeName + "\" in URI was not found in parent data node",
-                        ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT);
-            }
-
-            targetNode = potentialSchemaNodes.iterator().next();
-        }
-
-        if (!ControllerContext.isListOrContainer(targetNode)) {
-            throw new RestconfDocumentedException("URI has bad format. Node \"" + head
-                    + "\" must be Container or List yang type.", ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-
-        int consumed = 1;
-        if ((targetNode instanceof ListSchemaNode)) {
-            final ListSchemaNode listNode = ((ListSchemaNode) targetNode);
-            final int keysSize = listNode.getKeyDefinition().size();
-            if ((strings.size() - consumed) < keysSize) {
-                throw new RestconfDocumentedException("Missing key for list \"" + listNode.getQName().getLocalName()
-                        + "\".", ErrorType.PROTOCOL, ErrorTag.DATA_MISSING);
-            }
-
-            final List<String> uriKeyValues = strings.subList(consumed, consumed + keysSize);
-            final HashMap<QName, Object> keyValues = new HashMap<QName, Object>();
-            int i = 0;
-            for (final QName key : listNode.getKeyDefinition()) {
-                {
-                    final String uriKeyValue = uriKeyValues.get(i);
-                    if (uriKeyValue.equals(NULL_VALUE)) {
-                        throw new RestconfDocumentedException("URI has bad format. List \""
-                                + listNode.getQName().getLocalName() + "\" cannot contain \"null\" value as a key.",
-                                ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-                    }
-
-                    addKeyValue(keyValues, listNode.getDataChildByName(key), uriKeyValue, mountPoint);
-                    i++;
-                }
-            }
-
-            consumed = consumed + i;
-            builder.nodeWithKey(targetNode.getQName(), keyValues);
-        } else {
-            builder.node(targetNode.getQName());
-        }
-
-        if ((targetNode instanceof DataNodeContainer)) {
-            final List<String> remaining = strings.subList(consumed, strings.size());
-            return collectPathArguments(builder, remaining, ((DataNodeContainer) targetNode), mountPoint,
-                    returnJustMountPoint);
-        }
-
-        return createContext(builder.build(), targetNode, mountPoint,mountPoint != null ? mountPoint.getSchemaContext() : globalSchema);
-    }
-
-    private InstanceIdentifierContext<?> createContext(final YangInstanceIdentifier instance, final DataSchemaNode dataSchemaNode,
-            final DOMMountPoint mountPoint, final SchemaContext schemaContext) {
-
-        final YangInstanceIdentifier instanceIdentifier = new DataNormalizer(schemaContext).toNormalized(instance);
-        return new InstanceIdentifierContext<>(instanceIdentifier, dataSchemaNode, mountPoint,schemaContext);
-    }
-
-    public static DataSchemaNode findInstanceDataChildByNameAndNamespace(final DataNodeContainer container, final String name,
-            final URI namespace) {
-        Preconditions.<URI> checkNotNull(namespace);
-
-        final List<DataSchemaNode> potentialSchemaNodes = findInstanceDataChildrenByName(container, name);
-
-        final Predicate<DataSchemaNode> filter = new Predicate<DataSchemaNode>() {
-            @Override
-            public boolean apply(final DataSchemaNode node) {
-                return Objects.equal(node.getQName().getNamespace(), namespace);
-            }
-        };
-
-        final Iterable<DataSchemaNode> result = Iterables.filter(potentialSchemaNodes, filter);
-        return Iterables.getFirst(result, null);
-    }
-
-    public static List<DataSchemaNode> findInstanceDataChildrenByName(final DataNodeContainer container, final String name) {
-        Preconditions.<DataNodeContainer> checkNotNull(container);
-        Preconditions.<String> checkNotNull(name);
-
-        final List<DataSchemaNode> instantiatedDataNodeContainers = new ArrayList<DataSchemaNode>();
-        collectInstanceDataNodeContainers(instantiatedDataNodeContainers, container, name);
-        return instantiatedDataNodeContainers;
-    }
-
-    private static final Function<ChoiceSchemaNode, Set<ChoiceCaseNode>> CHOICE_FUNCTION = new Function<ChoiceSchemaNode, Set<ChoiceCaseNode>>() {
-        @Override
-        public Set<ChoiceCaseNode> apply(final ChoiceSchemaNode node) {
-            return node.getCases();
-        }
-    };
-
-    private static void collectInstanceDataNodeContainers(final List<DataSchemaNode> potentialSchemaNodes,
-            final DataNodeContainer container, final String name) {
-
-        final Predicate<DataSchemaNode> filter = new Predicate<DataSchemaNode>() {
-            @Override
-            public boolean apply(final DataSchemaNode node) {
-                return Objects.equal(node.getQName().getLocalName(), name);
-            }
-        };
-
-        final Iterable<DataSchemaNode> nodes = Iterables.filter(container.getChildNodes(), filter);
-
-        // Can't combine this loop with the filter above because the filter is
-        // lazily-applied by Iterables.filter.
-        for (final DataSchemaNode potentialNode : nodes) {
-            if (isInstantiatedDataSchema(potentialNode)) {
-                potentialSchemaNodes.add(potentialNode);
-            }
-        }
-
-        final Iterable<ChoiceSchemaNode> choiceNodes = Iterables.filter(container.getChildNodes(), ChoiceSchemaNode.class);
-        final Iterable<Set<ChoiceCaseNode>> map = Iterables.transform(choiceNodes, CHOICE_FUNCTION);
-
-        final Iterable<ChoiceCaseNode> allCases = Iterables.<ChoiceCaseNode> concat(map);
-        for (final ChoiceCaseNode caze : allCases) {
-            collectInstanceDataNodeContainers(potentialSchemaNodes, caze, name);
-        }
-    }
-
-    public static boolean isInstantiatedDataSchema(final DataSchemaNode node) {
-        return node instanceof LeafSchemaNode || node instanceof LeafListSchemaNode
-                || node instanceof ContainerSchemaNode || node instanceof ListSchemaNode
-                || node instanceof AnyXmlSchemaNode;
-    }
-
-    private void addKeyValue(final HashMap<QName, Object> map, final DataSchemaNode node, final String uriValue,
-            final DOMMountPoint mountPoint) {
-        Preconditions.checkNotNull(uriValue);
-        Preconditions.checkArgument((node instanceof LeafSchemaNode));
-
-        final String urlDecoded = urlPathArgDecode(uriValue);
-        TypeDefinition<?> typedef = ((LeafSchemaNode) node).getType();
-        final TypeDefinition<?> baseType = RestUtil.resolveBaseTypeFrom(typedef);
-        if (baseType instanceof LeafrefTypeDefinition) {
-            typedef = SchemaContextUtil.getBaseTypeForLeafRef((LeafrefTypeDefinition) baseType, globalSchema, node);
-        }
-        Codec<Object, Object> codec = RestCodec.from(typedef, mountPoint);
-        Object decoded = codec.deserialize(urlDecoded);
-        String additionalInfo = "";
-        if (decoded == null) {
-            if ((baseType instanceof IdentityrefTypeDefinition)) {
-                decoded = toQName(urlDecoded);
-                additionalInfo = "For key which is of type identityref it should be in format module_name:identity_name.";
-            }
-        }
-
-        if (decoded == null) {
-            throw new RestconfDocumentedException(uriValue + " from URI can't be resolved. " + additionalInfo,
-                    ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-
-        map.put(node.getQName(), decoded);
-    }
-
-    private static String toModuleName(final String str) {
-        final int idx = str.indexOf(':');
-        if (idx == -1) {
-            return null;
-        }
-
-        // Make sure there is only one occurrence
-        if (str.indexOf(':', idx + 1) != -1) {
-            return null;
-        }
-
-        return str.substring(0, idx);
-    }
-
-    private static String toNodeName(final String str) {
-        final int idx = str.indexOf(':');
-        if (idx == -1) {
-            return str;
-        }
-
-        // Make sure there is only one occurrence
-        if (str.indexOf(':', idx + 1) != -1) {
-            return str;
-        }
-
-        return str.substring(idx + 1);
-    }
-
-    private QName toQName(final String name) {
-        checkPreconditions();
-        final String module = toModuleName(name);
-        final String node = toNodeName(name);
-        final Module m = globalSchema.findModuleByName(module, null);
-        return m == null ? null : QName.create(m.getQNameModule(), node);
-    }
-
-    private static boolean isListOrContainer(final DataSchemaNode node) {
-        return node instanceof ListSchemaNode || node instanceof ContainerSchemaNode;
-    }
-
-    public RpcDefinition getRpcDefinition(final String name) {
-        final QName validName = toQName(name);
-        return validName == null ? null : qnameToRpc.get().get(validName);
-    }
-
-    @Override
-    public void onGlobalContextUpdated(final SchemaContext context) {
-        if (context != null) {
-            final Collection<RpcDefinition> defs = context.getOperations();
-            final Map<QName, RpcDefinition> newMap = new HashMap<>(defs.size());
-
-            for (final RpcDefinition operation : defs) {
-                newMap.put(operation.getQName(), operation);
-            }
-
-            // FIXME: still not completely atomic
-            qnameToRpc.set(ImmutableMap.copyOf(newMap));
-            setGlobalSchema(context);
-        }
-    }
-
-    public static List<String> urlPathArgsDecode(final Iterable<String> strings) {
-        try {
-            final List<String> decodedPathArgs = new ArrayList<String>();
-            for (final String pathArg : strings) {
-                final String _decode = URLDecoder.decode(pathArg, URI_ENCODING_CHAR_SET);
-                decodedPathArgs.add(_decode);
-            }
-            return decodedPathArgs;
-        } catch (final UnsupportedEncodingException e) {
-            throw new RestconfDocumentedException("Invalid URL path '" + strings + "': " + e.getMessage(),
-                    ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-    }
-
-    public String urlPathArgDecode(final String pathArg) {
-        if (pathArg != null) {
-            try {
-                return URLDecoder.decode(pathArg, URI_ENCODING_CHAR_SET);
-            } catch (final UnsupportedEncodingException e) {
-                throw new RestconfDocumentedException("Invalid URL path arg '" + pathArg + "': " + e.getMessage(),
-                        ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-            }
-        }
-
-        return null;
-    }
-
-    private CharSequence convertToRestconfIdentifier(final PathArgument argument, final DataSchemaNode node, final DOMMountPoint mount) {
-        if (argument instanceof NodeIdentifier) {
-            return convertToRestconfIdentifier((NodeIdentifier) argument, mount);
-        } else if (argument instanceof NodeIdentifierWithPredicates && node instanceof ListSchemaNode) {
-            return convertToRestconfIdentifierWithPredicates((NodeIdentifierWithPredicates) argument, (ListSchemaNode) node, mount);
-        } else if (argument != null && node != null) {
-            throw new IllegalArgumentException("Conversion of generic path argument is not supported");
-        } else {
-            throw new IllegalArgumentException("Unhandled parameter types: "
-                    + Arrays.<Object> asList(argument, node).toString());
-        }
-    }
-
-    private CharSequence convertToRestconfIdentifier(final NodeIdentifier argument, final DOMMountPoint node) {
-        return "/" + this.toRestconfIdentifier(argument.getNodeType(),node);
-    }
-
-    private CharSequence convertToRestconfIdentifierWithPredicates(final NodeIdentifierWithPredicates argument,
-            final ListSchemaNode node, final DOMMountPoint mount) {
-        final QName nodeType = argument.getNodeType();
-        final CharSequence nodeIdentifier = this.toRestconfIdentifier(nodeType, mount);
-        final Map<QName, Object> keyValues = argument.getKeyValues();
-
-        final StringBuilder builder = new StringBuilder();
-        builder.append('/');
-        builder.append(nodeIdentifier);
-        builder.append('/');
-
-        final List<QName> keyDefinition = node.getKeyDefinition();
-        boolean hasElements = false;
-        for (final QName key : keyDefinition) {
-            for (final DataSchemaNode listChild : node.getChildNodes()) {
-                if (listChild.getQName().equals(key)) {
-                    if (!hasElements) {
-                        hasElements = true;
-                    } else {
-                        builder.append('/');
-                    }
-
-                    try {
-                        Preconditions.checkState(listChild instanceof LeafSchemaNode, "List key has to consist of leaves");
-                        builder.append(toUriString(keyValues.get(key), (LeafSchemaNode)listChild, mount));
-                    } catch (final UnsupportedEncodingException e) {
-                        LOG.error("Error parsing URI: {}", keyValues.get(key), e);
-                        return null;
-                    }
-                    break;
-                }
-            }
-        }
-
-        return builder.toString();
-    }
-
-    private static DataSchemaNode childByQName(final Object container, final QName name) {
-        if (container instanceof ChoiceCaseNode) {
-            return childByQName((ChoiceCaseNode) container, name);
-        } else if (container instanceof ChoiceSchemaNode) {
-            return childByQName((ChoiceSchemaNode) container, name);
-        } else if (container instanceof ContainerSchemaNode) {
-            return childByQName((ContainerSchemaNode) container, name);
-        } else if (container instanceof ListSchemaNode) {
-            return childByQName((ListSchemaNode) container, name);
-        } else if (container instanceof DataSchemaNode) {
-            return childByQName((DataSchemaNode) container, name);
-        } else if (container instanceof Module) {
-            return childByQName((Module) container, name);
-        } else {
-            throw new IllegalArgumentException("Unhandled parameter types: "
-                    + Arrays.<Object> asList(container, name).toString());
-        }
-    }
-
-    public YangInstanceIdentifier toNormalized(final YangInstanceIdentifier legacy) {
-        try {
-            return dataNormalizer.toNormalized(legacy);
-        } catch (final NullPointerException e) {
-            throw new RestconfDocumentedException("Data normalizer isn't set. Normalization isn't possible", e);
-        }
-    }
-
-    public YangInstanceIdentifier toXpathRepresentation(final YangInstanceIdentifier instanceIdentifier) {
-        try {
-            return dataNormalizer.toLegacy(instanceIdentifier);
-        } catch (final NullPointerException e) {
-            throw new RestconfDocumentedException("Data normalizer isn't set. Normalization isn't possible", e);
-        } catch (final DataNormalizationException e) {
-            throw new RestconfDocumentedException("Data normalizer failed. Normalization isn't possible", e);
-        }
-    }
-
-    public boolean isNodeMixin(final YangInstanceIdentifier path) {
-        final DataNormalizationOperation<?> operation;
-        try {
-            operation = dataNormalizer.getOperation(path);
-        } catch (final DataNormalizationException e) {
-            throw new RestconfDocumentedException("Data normalizer failed. Normalization isn't possible", e);
-        }
-        return operation.isMixin();
-    }
-
-    public DataNormalizationOperation<?> getRootOperation() {
-        return dataNormalizer.getRootOperation();
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/IdentityValuesDTO.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/IdentityValuesDTO.java
deleted file mode 100644 (file)
index 2488308..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-public final class IdentityValuesDTO {
-
-    private final List<IdentityValue> elementData = new ArrayList<>();
-    private final String originValue;
-
-    public IdentityValuesDTO(final String namespace, final String value, final String prefix, final String originValue) {
-        elementData.add(new IdentityValue(namespace, value));
-        this.originValue = originValue;
-    }
-
-    public IdentityValuesDTO(final String originValue) {
-        this.originValue = originValue;
-    }
-
-    public IdentityValuesDTO() {
-        originValue = null;
-    }
-
-    public void add(final String namespace, final String value, final String prefix) {
-        elementData.add(new IdentityValue(namespace, value));
-    }
-
-    public void add(final IdentityValue identityValue) {
-        elementData.add(identityValue);
-    }
-
-    public List<IdentityValue> getValuesWithNamespaces() {
-        return Collections.unmodifiableList(elementData);
-    }
-
-    @Override
-    public String toString() {
-        return elementData.toString();
-    }
-
-    public String getOriginValue() {
-        return originValue;
-    }
-
-    public static final class IdentityValue {
-
-        private final String namespace;
-        private final String value;
-        private List<Predicate> predicates;
-
-        public IdentityValue(final String namespace, final String value) {
-            this.namespace = namespace;
-            this.value = value;
-        }
-
-        public String getNamespace() {
-            return namespace;
-        }
-
-        public String getValue() {
-            return value;
-        }
-
-
-        public List<Predicate> getPredicates() {
-            if (predicates == null) {
-                return Collections.emptyList();
-            }
-            return Collections.unmodifiableList(predicates);
-        }
-
-        public void setPredicates(final List<Predicate> predicates) {
-            this.predicates = predicates;
-        }
-
-        @Override
-        public String toString() {
-            final StringBuilder sb = new StringBuilder();
-            if (namespace != null) {
-                sb.append(namespace);
-            }
-            if (value != null) {
-                sb.append(" - ").append(value);
-            }
-            if (predicates != null && !predicates.isEmpty()) {
-                for (final Predicate predicate : predicates) {
-                    sb.append("[");
-                    predicate.toString();
-                    sb.append("]");
-                }
-            }
-            return sb.toString();
-        }
-
-    }
-
-    public static final class Predicate {
-
-        private final IdentityValue name;
-        private final String value;
-
-        public Predicate(final IdentityValue name, final String value) {
-            super();
-            this.name = name;
-            this.value = value;
-        }
-
-        public IdentityValue getName() {
-            return name;
-        }
-
-        public String getValue() {
-            return value;
-        }
-
-        @Override
-        public String toString() {
-            final StringBuilder sb = new StringBuilder();
-            if (name != null) {
-                sb.append(name.toString());
-            }
-            if (value != null) {
-                sb.append("=").append(value);
-            }
-            return sb.toString();
-        }
-
-        public boolean isLeafList() {
-            return name == null ? true : false;
-        }
-
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/InstanceIdentifierContext.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/InstanceIdentifierContext.java
deleted file mode 100644 (file)
index c7e5a2a..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl;
-
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-
-public class InstanceIdentifierContext <T extends SchemaNode> {
-
-    private final YangInstanceIdentifier instanceIdentifier;
-    private final T schemaNode;
-    private final DOMMountPoint mountPoint;
-    private final SchemaContext schemaContext;
-
-    public InstanceIdentifierContext(final YangInstanceIdentifier instanceIdentifier, final T schemaNode,
-            final DOMMountPoint mountPoint,final SchemaContext context) {
-        this.instanceIdentifier = instanceIdentifier;
-        this.schemaNode = schemaNode;
-        this.mountPoint = mountPoint;
-        this.schemaContext = context;
-    }
-
-    public YangInstanceIdentifier getInstanceIdentifier() {
-        return instanceIdentifier;
-    }
-
-    public T getSchemaNode() {
-        return schemaNode;
-    }
-
-    public DOMMountPoint getMountPoint() {
-        return mountPoint;
-    }
-
-    public SchemaContext getSchemaContext() {
-        return schemaContext;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/NormalizedDataPrunner.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/NormalizedDataPrunner.java
deleted file mode 100644 (file)
index 5d0185b..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl;
-
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.AnyXmlNode;
-import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
-import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MixinNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.OrderedLeafSetNode;
-import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode;
-import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
-
-class NormalizedDataPrunner {
-
-    public DataContainerChild<?, ?> pruneDataAtDepth(final DataContainerChild<?, ?> node, final Integer depth) {
-        if (depth == null) {
-            return node;
-        }
-
-        if (node instanceof LeafNode || node instanceof LeafSetNode || node instanceof AnyXmlNode
-                || node instanceof OrderedLeafSetNode) {
-            return node;
-        } else if (node instanceof MixinNode) {
-            return processMixinNode(node, depth);
-        } else if (node instanceof DataContainerNode) {
-            return processContainerNode(node, depth);
-        }
-        throw new IllegalStateException("Unexpected Mixin node occured why pruning data to requested depth");
-    }
-
-    private DataContainerChild<?, ?> processMixinNode(final NormalizedNode<?, ?> node, final Integer depth) {
-        if (node instanceof AugmentationNode) {
-            return processAugmentationNode(node, depth);
-        } else if (node instanceof ChoiceNode) {
-            return processChoiceNode(node, depth);
-        } else if (node instanceof OrderedMapNode) {
-            return processOrderedMapNode(node, depth);
-        } else if (node instanceof MapNode) {
-            return processMapNode(node, depth);
-        } else if (node instanceof UnkeyedListNode) {
-            return processUnkeyedListNode(node, depth);
-        }
-        throw new IllegalStateException("Unexpected Mixin node occured why pruning data to requested depth");
-    }
-
-    private DataContainerChild<?, ?> processContainerNode(final NormalizedNode<?, ?> node, final Integer depth) {
-        final ContainerNode containerNode = (ContainerNode) node;
-        DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> newContainerBuilder = Builders.containerBuilder()
-                .withNodeIdentifier(containerNode.getIdentifier());
-        if (depth > 1) {
-            processDataContainerChild((DataContainerNode<?>) node, depth, newContainerBuilder);
-        }
-        return newContainerBuilder.build();
-    }
-
-    private DataContainerChild<?, ?> processChoiceNode(final NormalizedNode<?, ?> node, final Integer depth) {
-        final ChoiceNode choiceNode = (ChoiceNode) node;
-        DataContainerNodeBuilder<NodeIdentifier, ChoiceNode> newChoiceBuilder = Builders.choiceBuilder()
-                .withNodeIdentifier(choiceNode.getIdentifier());
-
-        processDataContainerChild((DataContainerNode<?>) node, depth, newChoiceBuilder);
-
-        return newChoiceBuilder.build();
-    }
-
-    private DataContainerChild<?, ?> processAugmentationNode(final NormalizedNode<?, ?> node, final Integer depth) {
-        final AugmentationNode augmentationNode = (AugmentationNode) node;
-        DataContainerNodeBuilder<AugmentationIdentifier, ? extends DataContainerChild<?, ?>> newAugmentationBuilder = Builders
-                .augmentationBuilder().withNodeIdentifier(augmentationNode.getIdentifier());
-
-        processDataContainerChild((DataContainerNode<?>) node, depth, newAugmentationBuilder);
-
-        return newAugmentationBuilder.build();
-    }
-
-    private void processDataContainerChild(
-            final DataContainerNode<?> node,
-            final Integer depth,
-            final DataContainerNodeBuilder<? extends YangInstanceIdentifier.PathArgument, ? extends DataContainerNode<?>> newBuilder) {
-
-        for (DataContainerChild<? extends PathArgument, ?> nodeValue : node.getValue()) {
-            newBuilder.withChild(pruneDataAtDepth(nodeValue, depth - 1));
-        }
-
-    }
-
-    private DataContainerChild<?, ?> processUnkeyedListNode(final NormalizedNode<?, ?> node, final Integer depth) {
-        CollectionNodeBuilder<UnkeyedListEntryNode, UnkeyedListNode> newUnkeyedListBuilder = Builders
-                .unkeyedListBuilder();
-        if (depth > 1) {
-            for (UnkeyedListEntryNode oldUnkeyedListEntry : ((UnkeyedListNode) node).getValue()) {
-                DataContainerNodeAttrBuilder<NodeIdentifier, UnkeyedListEntryNode> newUnkeyedListEntry = Builders
-                        .unkeyedListEntryBuilder().withNodeIdentifier(oldUnkeyedListEntry.getIdentifier());
-                for (DataContainerChild<? extends PathArgument, ?> oldUnkeyedListEntryValue : oldUnkeyedListEntry
-                        .getValue()) {
-                    newUnkeyedListEntry.withChild(pruneDataAtDepth(oldUnkeyedListEntryValue, depth - 1));
-                }
-                newUnkeyedListBuilder.addChild(newUnkeyedListEntry.build());
-            }
-        }
-        return newUnkeyedListBuilder.build();
-    }
-
-    private DataContainerChild<?, ?> processOrderedMapNode(final NormalizedNode<?, ?> node, final Integer depth) {
-        CollectionNodeBuilder<MapEntryNode, OrderedMapNode> newOrderedMapNodeBuilder = Builders.orderedMapBuilder();
-        processMapEntries(node, depth, newOrderedMapNodeBuilder);
-        return newOrderedMapNodeBuilder.build();
-    }
-
-    private DataContainerChild<?, ?> processMapNode(final NormalizedNode<?, ?> node, final Integer depth) {
-        CollectionNodeBuilder<MapEntryNode, MapNode> newMapNodeBuilder = Builders.mapBuilder();
-        processMapEntries(node, depth, newMapNodeBuilder);
-        return newMapNodeBuilder.build();
-    }
-
-    private void processMapEntries(final NormalizedNode<?, ?> node, final Integer depth,
-            CollectionNodeBuilder<MapEntryNode, ? extends MapNode> newOrderedMapNodeBuilder) {
-        if (depth > 1) {
-            for (MapEntryNode oldMapEntryNode : ((MapNode) node).getValue()) {
-                DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> newMapEntryNodeBuilder = Builders
-                        .mapEntryBuilder().withNodeIdentifier(oldMapEntryNode.getIdentifier());
-                for (DataContainerChild<? extends PathArgument, ?> mapEntryNodeValue : oldMapEntryNode.getValue()) {
-                    newMapEntryNodeBuilder.withChild(pruneDataAtDepth(mapEntryNodeValue, depth - 1));
-                }
-                newOrderedMapNodeBuilder.withChild(newMapEntryNodeBuilder.build());
-            }
-        }
-    }
-
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/NormalizedNodeContext.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/NormalizedNodeContext.java
deleted file mode 100644 (file)
index 3adecaf..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2015 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.sal.restconf.impl;
-
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-
-public class NormalizedNodeContext {
-
-    private final InstanceIdentifierContext<? extends SchemaNode> context;
-    private final NormalizedNode<?,?> data;
-    private final WriterParameters writerParameters;
-
-    public NormalizedNodeContext(final InstanceIdentifierContext<? extends SchemaNode> context,
-                                 final NormalizedNode<?, ?> data, WriterParameters writerParameters) {
-        this.context = context;
-        this.data = data;
-        this.writerParameters = writerParameters;
-    }
-
-    public NormalizedNodeContext(final InstanceIdentifierContext<? extends SchemaNode> context,
-                                 final NormalizedNode<?, ?> data) {
-        this.context = context;
-        this.data = data;
-        // default writer parameters
-        this.writerParameters = new WriterParameters.WriterParametersBuilder().build();
-    }
-
-    public InstanceIdentifierContext<? extends SchemaNode> getInstanceIdentifierContext() {
-        return context;
-    }
-
-    public NormalizedNode<?, ?> getData() {
-        return data;
-    }
-
-    public WriterParameters getWriterParameters() {
-        return writerParameters;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/QueryParametersParser.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/QueryParametersParser.java
deleted file mode 100644 (file)
index 4fc716e..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2015 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.sal.restconf.impl;
-
-import com.google.common.base.Strings;
-import javax.ws.rs.core.UriInfo;
-
-public class QueryParametersParser {
-
-    private enum UriParameters {
-        PRETTY_PRINT("prettyPrint"),
-        DEPTH("depth");
-
-        private String uriParameterName;
-
-        UriParameters(final String uriParameterName) {
-            this.uriParameterName = uriParameterName;
-        }
-
-        @Override
-        public String toString() {
-            return uriParameterName;
-        }
-    }
-
-    public static WriterParameters parseWriterParameters(final UriInfo info) {
-        WriterParameters.WriterParametersBuilder wpBuilder = new WriterParameters.WriterParametersBuilder();
-        String param = info.getQueryParameters(false).getFirst(UriParameters.DEPTH.toString());
-        if (!Strings.isNullOrEmpty(param) && !"unbounded".equals(param)) {
-            try {
-                final int depth = Integer.valueOf(param);
-                if (depth < 1) {
-                    throw new RestconfDocumentedException(new RestconfError(RestconfError.ErrorType.PROTOCOL, RestconfError.ErrorTag.INVALID_VALUE,
-                            "Invalid depth parameter: " + depth, null,
-                            "The depth parameter must be an integer > 1 or \"unbounded\""));
-                }
-                wpBuilder.setDepth(depth);
-            } catch (final NumberFormatException e) {
-                throw new RestconfDocumentedException(new RestconfError(RestconfError.ErrorType.PROTOCOL, RestconfError.ErrorTag.INVALID_VALUE,
-                        "Invalid depth parameter: " + e.getMessage(), null,
-                        "The depth parameter must be an integer > 1 or \"unbounded\""));
-            }
-        }
-        param = info.getQueryParameters(false).getFirst(UriParameters.PRETTY_PRINT.toString());
-        wpBuilder.setPrettyPrint("true".equals(param));
-        return wpBuilder.build();
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestCodec.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestCodec.java
deleted file mode 100644 (file)
index 763d1c6..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.sal.rest.impl.RestUtil;
-import org.opendaylight.controller.sal.restconf.impl.IdentityValuesDTO.IdentityValue;
-import org.opendaylight.controller.sal.restconf.impl.IdentityValuesDTO.Predicate;
-import org.opendaylight.yangtools.concepts.Codec;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.codec.IdentityrefCodec;
-import org.opendaylight.yangtools.yang.data.api.codec.InstanceIdentifierCodec;
-import org.opendaylight.yangtools.yang.data.api.codec.LeafrefCodec;
-import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RestCodec {
-
-    private static final Logger logger = LoggerFactory.getLogger(RestCodec.class);
-
-    private RestCodec() {
-    }
-
-    public static final Codec<Object, Object> from(final TypeDefinition<?> typeDefinition,
-            final DOMMountPoint mountPoint) {
-        return new ObjectCodec(typeDefinition, mountPoint);
-    }
-
-    @SuppressWarnings("rawtypes")
-    public static final class ObjectCodec implements Codec<Object, Object> {
-
-        private final Logger logger = LoggerFactory.getLogger(RestCodec.class);
-
-        public static final Codec LEAFREF_DEFAULT_CODEC = new LeafrefCodecImpl();
-        private final Codec instanceIdentifier;
-        private final Codec identityrefCodec;
-
-        private final TypeDefinition<?> type;
-
-        private ObjectCodec(final TypeDefinition<?> typeDefinition, final DOMMountPoint mountPoint) {
-            type = RestUtil.resolveBaseTypeFrom(typeDefinition);
-            if (type instanceof IdentityrefTypeDefinition) {
-                identityrefCodec = new IdentityrefCodecImpl(mountPoint);
-            } else {
-                identityrefCodec = null;
-            }
-            if (type instanceof InstanceIdentifierTypeDefinition) {
-                instanceIdentifier = new InstanceIdentifierCodecImpl(mountPoint);
-            } else {
-                instanceIdentifier = null;
-            }
-        }
-
-        @SuppressWarnings("unchecked")
-        @Override
-        public Object deserialize(final Object input) {
-            try {
-                if (type instanceof IdentityrefTypeDefinition) {
-                    if (input instanceof IdentityValuesDTO) {
-                        return identityrefCodec.deserialize(input);
-                    }
-                    logger.debug(
-                            "Value is not instance of IdentityrefTypeDefinition but is {}. Therefore NULL is used as translation of  - {}",
-                            input == null ? "null" : input.getClass(), String.valueOf(input));
-                    return null;
-                } else if (type instanceof InstanceIdentifierTypeDefinition) {
-                    if (input instanceof IdentityValuesDTO) {
-                        return instanceIdentifier.deserialize(input);
-                    }
-                    logger.info(
-                            "Value is not instance of InstanceIdentifierTypeDefinition but is {}. Therefore NULL is used as translation of  - {}",
-                            input == null ? "null" : input.getClass(), String.valueOf(input));
-                    return null;
-                } else {
-                    final TypeDefinitionAwareCodec<Object, ? extends TypeDefinition<?>> typeAwarecodec = TypeDefinitionAwareCodec
-                            .from(type);
-                    if (typeAwarecodec != null) {
-                        if (input instanceof IdentityValuesDTO) {
-                            return typeAwarecodec.deserialize(((IdentityValuesDTO) input).getOriginValue());
-                        }
-                        return typeAwarecodec.deserialize(String.valueOf(input));
-                    } else {
-                        logger.debug("Codec for type \"" + type.getQName().getLocalName()
-                                + "\" is not implemented yet.");
-                        return null;
-                    }
-                }
-            } catch (final ClassCastException e) { // TODO remove this catch when everyone use codecs
-                logger.error(
-                        "ClassCastException was thrown when codec is invoked with parameter " + String.valueOf(input),
-                        e);
-                return null;
-            }
-        }
-
-        @SuppressWarnings("unchecked")
-        @Override
-        public Object serialize(final Object input) {
-            try {
-                if (type instanceof IdentityrefTypeDefinition) {
-                    return identityrefCodec.serialize(input);
-                } else if (type instanceof LeafrefTypeDefinition) {
-                    return LEAFREF_DEFAULT_CODEC.serialize(input);
-                } else if (type instanceof InstanceIdentifierTypeDefinition) {
-                    return instanceIdentifier.serialize(input);
-                } else {
-                    final TypeDefinitionAwareCodec<Object, ? extends TypeDefinition<?>> typeAwarecodec = TypeDefinitionAwareCodec
-                            .from(type);
-                    if (typeAwarecodec != null) {
-                        return typeAwarecodec.serialize(input);
-                    } else {
-                        logger.debug("Codec for type \"" + type.getQName().getLocalName()
-                                + "\" is not implemented yet.");
-                        return null;
-                    }
-                }
-            } catch (final ClassCastException e) { // TODO remove this catch when everyone use codecs
-                logger.error(
-                        "ClassCastException was thrown when codec is invoked with parameter " + String.valueOf(input),
-                        e);
-                return input;
-            }
-        }
-
-    }
-
-    public static class IdentityrefCodecImpl implements IdentityrefCodec<IdentityValuesDTO> {
-
-        private final Logger logger = LoggerFactory.getLogger(IdentityrefCodecImpl.class);
-
-        private final DOMMountPoint mountPoint;
-
-        public IdentityrefCodecImpl(final DOMMountPoint mountPoint) {
-            this.mountPoint = mountPoint;
-        }
-
-        @Override
-        public IdentityValuesDTO serialize(final QName data) {
-            return new IdentityValuesDTO(data.getNamespace().toString(), data.getLocalName(), null, null);
-        }
-
-        @Override
-        public QName deserialize(final IdentityValuesDTO data) {
-            final IdentityValue valueWithNamespace = data.getValuesWithNamespaces().get(0);
-            final Module module = getModuleByNamespace(valueWithNamespace.getNamespace(), mountPoint);
-            if (module == null) {
-                logger.info("Module was not found for namespace {}", valueWithNamespace.getNamespace());
-                logger.info("Idenetityref will be translated as NULL for data - {}", String.valueOf(valueWithNamespace));
-                return null;
-            }
-
-            return QName.create(module.getNamespace(), module.getRevision(), valueWithNamespace.getValue());
-        }
-
-    }
-
-    public static class LeafrefCodecImpl implements LeafrefCodec<String> {
-
-        @Override
-        public String serialize(final Object data) {
-            return String.valueOf(data);
-        }
-
-        @Override
-        public Object deserialize(final String data) {
-            return data;
-        }
-
-    }
-
-    public static class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec<IdentityValuesDTO> {
-        private final Logger logger = LoggerFactory.getLogger(InstanceIdentifierCodecImpl.class);
-        private final DOMMountPoint mountPoint;
-
-        public InstanceIdentifierCodecImpl(final DOMMountPoint mountPoint) {
-            this.mountPoint = mountPoint;
-        }
-
-        @Override
-        public IdentityValuesDTO serialize(final YangInstanceIdentifier data) {
-            final IdentityValuesDTO identityValuesDTO = new IdentityValuesDTO();
-            for (final PathArgument pathArgument : data.getPathArguments()) {
-                final IdentityValue identityValue = qNameToIdentityValue(pathArgument.getNodeType());
-                if (pathArgument instanceof NodeIdentifierWithPredicates && identityValue != null) {
-                    final List<Predicate> predicates = keyValuesToPredicateList(((NodeIdentifierWithPredicates) pathArgument)
-                            .getKeyValues());
-                    identityValue.setPredicates(predicates);
-                } else if (pathArgument instanceof NodeWithValue && identityValue != null) {
-                    final List<Predicate> predicates = new ArrayList<>();
-                    final String value = String.valueOf(((NodeWithValue) pathArgument).getValue());
-                    predicates.add(new Predicate(null, value));
-                    identityValue.setPredicates(predicates);
-                }
-                identityValuesDTO.add(identityValue);
-            }
-            return identityValuesDTO;
-        }
-
-        @Override
-        public YangInstanceIdentifier deserialize(final IdentityValuesDTO data) {
-            final List<PathArgument> result = new ArrayList<PathArgument>();
-            final IdentityValue valueWithNamespace = data.getValuesWithNamespaces().get(0);
-            final Module module = getModuleByNamespace(valueWithNamespace.getNamespace(), mountPoint);
-            if (module == null) {
-                logger.info("Module by namespace '{}' of first node in instance-identifier was not found.",
-                        valueWithNamespace.getNamespace());
-                logger.info("Instance-identifier will be translated as NULL for data - {}",
-                        String.valueOf(valueWithNamespace.getValue()));
-                return null;
-            }
-
-            DataNodeContainer parentContainer = module;
-            final List<IdentityValue> identities = data.getValuesWithNamespaces();
-            for (int i = 0; i < identities.size(); i++) {
-                final IdentityValue identityValue = identities.get(i);
-                URI validNamespace = resolveValidNamespace(identityValue.getNamespace(), mountPoint);
-                final DataSchemaNode node = ControllerContext.findInstanceDataChildByNameAndNamespace(
-                        parentContainer, identityValue.getValue(), validNamespace);
-                if (node == null) {
-                    logger.info("'{}' node was not found in {}", identityValue, parentContainer.getChildNodes());
-                    logger.info("Instance-identifier will be translated as NULL for data - {}",
-                            String.valueOf(identityValue.getValue()));
-                    return null;
-                }
-                final QName qName = node.getQName();
-                PathArgument pathArgument = null;
-                if (identityValue.getPredicates().isEmpty()) {
-                    pathArgument = new NodeIdentifier(qName);
-                } else {
-                    if (node instanceof LeafListSchemaNode) { // predicate is value of leaf-list entry
-                        final Predicate leafListPredicate = identityValue.getPredicates().get(0);
-                        if (!leafListPredicate.isLeafList()) {
-                            logger.info("Predicate's data is not type of leaf-list. It should be in format \".='value'\"");
-                            logger.info("Instance-identifier will be translated as NULL for data - {}",
-                                    String.valueOf(identityValue.getValue()));
-                            return null;
-                        }
-                        pathArgument = new NodeWithValue(qName, leafListPredicate.getValue());
-                    } else if (node instanceof ListSchemaNode) { // predicates are keys of list
-                        final DataNodeContainer listNode = (DataNodeContainer) node;
-                        final Map<QName, Object> predicatesMap = new HashMap<>();
-                        for (final Predicate predicate : identityValue.getPredicates()) {
-                            validNamespace = resolveValidNamespace(predicate.getName().getNamespace(), mountPoint);
-                            final DataSchemaNode listKey = ControllerContext
-                                    .findInstanceDataChildByNameAndNamespace(listNode, predicate.getName().getValue(),
-                                            validNamespace);
-                            predicatesMap.put(listKey.getQName(), predicate.getValue());
-                        }
-                        pathArgument = new NodeIdentifierWithPredicates(qName, predicatesMap);
-                    } else {
-                        logger.info("Node {} is not List or Leaf-list.", node);
-                        logger.info("Instance-identifier will be translated as NULL for data - {}",
-                                String.valueOf(identityValue.getValue()));
-                        return null;
-                    }
-                }
-                result.add(pathArgument);
-                if (i < identities.size() - 1) { // last element in instance-identifier can be other than
-                    // DataNodeContainer
-                    if (node instanceof DataNodeContainer) {
-                        parentContainer = (DataNodeContainer) node;
-                    } else {
-                        logger.info("Node {} isn't instance of DataNodeContainer", node);
-                        logger.info("Instance-identifier will be translated as NULL for data - {}",
-                                String.valueOf(identityValue.getValue()));
-                        return null;
-                    }
-                }
-            }
-
-            return result.isEmpty() ? null : YangInstanceIdentifier.create(result);
-        }
-
-        private List<Predicate> keyValuesToPredicateList(final Map<QName, Object> keyValues) {
-            final List<Predicate> result = new ArrayList<>();
-            for (final QName qName : keyValues.keySet()) {
-                final Object value = keyValues.get(qName);
-                result.add(new Predicate(qNameToIdentityValue(qName), String.valueOf(value)));
-            }
-            return result;
-        }
-
-        private IdentityValue qNameToIdentityValue(final QName qName) {
-            if (qName != null) {
-                return new IdentityValue(qName.getNamespace().toString(), qName.getLocalName());
-            }
-            return null;
-        }
-    }
-
-    private static Module getModuleByNamespace(final String namespace, final DOMMountPoint mountPoint) {
-        final URI validNamespace = resolveValidNamespace(namespace, mountPoint);
-
-        Module module = null;
-        if (mountPoint != null) {
-            module = ControllerContext.getInstance().findModuleByNamespace(mountPoint, validNamespace);
-        } else {
-            module = ControllerContext.getInstance().findModuleByNamespace(validNamespace);
-        }
-        if (module == null) {
-            logger.info("Module for namespace " + validNamespace + " wasn't found.");
-            return null;
-        }
-        return module;
-    }
-
-    private static URI resolveValidNamespace(final String namespace, final DOMMountPoint mountPoint) {
-        URI validNamespace;
-        if (mountPoint != null) {
-            validNamespace = ControllerContext.getInstance().findNamespaceByModuleName(mountPoint, namespace);
-        } else {
-            validNamespace = ControllerContext.getInstance().findNamespaceByModuleName(namespace);
-        }
-        if (validNamespace == null) {
-            validNamespace = URI.create(namespace);
-        }
-
-        return validNamespace;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfDocumentedException.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfDocumentedException.java
deleted file mode 100644 (file)
index bfa987a..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (c) 2014 Brocade Communications 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.sal.restconf.impl;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-import java.util.Collection;
-import java.util.List;
-
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Response.Status;
-
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType;
-import org.opendaylight.yangtools.yang.common.RpcError;
-
-/**
- * Unchecked exception to communicate error information, as defined in the ietf restcong draft, to be sent to the
- * client.
- *
- * @author Devin Avery
- * @author Thomas Pantelis
- * @see {@link https://tools.ietf.org/html/draft-bierman-netconf-restconf-02}
- */
-public class RestconfDocumentedException extends WebApplicationException {
-
-    private static final long serialVersionUID = 1L;
-
-    private final List<RestconfError> errors;
-    private final Status status;
-
-    /**
-     * Constructs an instance with an error message. The error type defaults to APPLICATION and the error tag defaults
-     * to OPERATION_FAILED.
-     *
-     * @param message
-     *            A string which provides a plain text string describing the error.
-     */
-    public RestconfDocumentedException(String message) {
-        this(message, RestconfError.ErrorType.APPLICATION, RestconfError.ErrorTag.OPERATION_FAILED);
-    }
-
-    /**
-     * Constructs an instance with an error message, error type, and error tag.
-     *
-     * @param message
-     *            A string which provides a plain text string describing the error.
-     * @param errorType
-     *            The enumerated type indicating the layer where the error occurred.
-     * @param errorTag
-     *            The enumerated tag representing a more specific error cause.
-     */
-    public RestconfDocumentedException(String message, ErrorType errorType, ErrorTag errorTag) {
-        this(null, new RestconfError(errorType, errorTag, message));
-    }
-
-    /**
-     * Constructs an instance with an error message and exception cause.
-     * The stack trace of the exception is included in the error info.
-     *
-     * @param message
-     *            A string which provides a plain text string describing the error.
-     * @param cause
-     *            The underlying exception cause.
-     */
-    public RestconfDocumentedException(String message, Throwable cause) {
-        this(cause, new RestconfError(RestconfError.ErrorType.APPLICATION, RestconfError.ErrorTag.OPERATION_FAILED,
-                message, null, RestconfError.toErrorInfo(cause)));
-    }
-
-    /**
-     * Constructs an instance with the given error.
-     */
-    public RestconfDocumentedException(RestconfError error) {
-        this(null, error);
-    }
-
-    /**
-     * Constructs an instance with the given errors.
-     */
-    public RestconfDocumentedException(String message, Throwable cause, List<RestconfError> errors) {
-        // FIXME: We override getMessage so supplied message is lost for any public access
-        // this was lost also in original code.
-        super(cause);
-        if(!errors.isEmpty()) {
-            this.errors = ImmutableList.copyOf(errors);
-        } else {
-            this.errors = ImmutableList.of(new RestconfError(RestconfError.ErrorType.APPLICATION,
-                    RestconfError.ErrorTag.OPERATION_FAILED, message));
-        }
-
-        status = null;
-    }
-
-    /**
-     * Constructs an instance with the given RpcErrors.
-     */
-    public RestconfDocumentedException(String message, Throwable cause, Collection<RpcError> rpcErrors) {
-        this(message, cause, convertToRestconfErrors(rpcErrors));
-    }
-
-    /**
-     * Constructs an instance with an HTTP status and no error information.
-     *
-     * @param status
-     *            the HTTP status.
-     */
-    public RestconfDocumentedException(Status status) {
-        Preconditions.checkNotNull(status, "Status can't be null");
-        errors = ImmutableList.of();
-        this.status = status;
-    }
-
-    private RestconfDocumentedException(Throwable cause, RestconfError error) {
-        super(cause);
-        Preconditions.checkNotNull(error, "RestconfError can't be null");
-        errors = ImmutableList.of(error);
-        status = null;
-    }
-
-    private static List<RestconfError> convertToRestconfErrors(Collection<RpcError> rpcErrors) {
-        List<RestconfError> errorList = Lists.newArrayList();
-        if(rpcErrors != null) {
-            for (RpcError rpcError : rpcErrors) {
-                errorList.add(new RestconfError(rpcError));
-            }
-        }
-
-        return errorList;
-    }
-
-
-    public List<RestconfError> getErrors() {
-        return errors;
-    }
-
-    public Status getStatus() {
-        return status;
-    }
-
-    @Override
-    public String getMessage() {
-        return "errors: " + errors + (status != null ? ", status: " + status : "");
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfError.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfError.java
deleted file mode 100644 (file)
index 544a144..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Copyright (c) 2014 Brocade Communications 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.sal.restconf.impl;
-
-import com.google.common.base.Preconditions;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import org.opendaylight.yangtools.yang.common.RpcError;
-
-/**
- * Encapsulates a restconf error as defined in the ietf restconf draft.
- *
- * <br>
- * <br>
- * <b>Note:</b> Enumerations defined within are provided by the ietf restconf draft.
- *
- * @author Devin Avery
- * @see {@link https://tools.ietf.org/html/draft-bierman-netconf-restconf-02}
- */
-public class RestconfError {
-
-    public static enum ErrorType {
-        /** Errors relating to the transport layer */
-        TRANSPORT,
-        /** Errors relating to the RPC or notification layer */
-        RPC,
-        /** Errors relating to the protocol operation layer. */
-        PROTOCOL,
-        /** Errors relating to the server application layer. */
-        APPLICATION;
-
-        public String getErrorTypeTag() {
-            return name().toLowerCase();
-        }
-
-        public static ErrorType valueOfCaseInsensitive(String value) {
-            try {
-                return ErrorType.valueOf(ErrorType.class, value.toUpperCase());
-            } catch (IllegalArgumentException e) {
-                return APPLICATION;
-            }
-        }
-    }
-
-    public static enum ErrorTag {
-        IN_USE("in-use", 409 /* Conflict */),
-        INVALID_VALUE("invalid-value", 400 /* Bad Request */),
-        TOO_BIG("too-big", 413 /* Request Entity Too Large */),
-        MISSING_ATTRIBUTE("missing-attribute", 400 /* Bad Request */),
-        BAD_ATTRIBUTE("bad-attribute", 400 /* Bad Request */),
-        UNKNOWN_ATTRIBUTE("unknown-attribute", 400 /* Bad Request */),
-        BAD_ELEMENT("bad-element", 400 /* Bad Request */),
-        UNKNOWN_ELEMENT("unknown-element", 400 /* Bad Request */),
-        UNKNOWN_NAMESPACE("unknown-namespace", 400 /* Bad Request */),
-        ACCESS_DENIED("access-denied", 403 /* Forbidden */),
-        LOCK_DENIED("lock-denied", 409 /* Conflict */),
-        RESOURCE_DENIED("resource-denied", 409 /* Conflict */),
-        ROLLBACK_FAILED("rollback-failed", 500 /* INTERNAL_SERVER_ERROR */),
-        DATA_EXISTS("data-exists", 409 /* Conflict */),
-        DATA_MISSING("data-missing", 404 /* Resource Not Found */),
-        OPERATION_NOT_SUPPORTED("operation-not-supported", 501 /* Not Implemented */),
-        OPERATION_FAILED("operation-failed", 500 /* INTERNAL_SERVER_ERROR */),
-        PARTIAL_OPERATION("partial-operation", 500 /* INTERNAL_SERVER_ERROR */),
-        MALFORMED_MESSAGE("malformed-message", 400 /* Bad Request */);
-
-        private final String tagValue;
-        private final int statusCode;
-
-        ErrorTag(final String tagValue, final int statusCode) {
-            this.tagValue = tagValue;
-            this.statusCode = statusCode;
-        }
-
-        public String getTagValue() {
-            return this.tagValue.toLowerCase();
-        }
-
-        public static ErrorTag valueOfCaseInsensitive(String value) {
-            try {
-                return ErrorTag.valueOf(ErrorTag.class, value.toUpperCase().replaceAll("-", "_"));
-            } catch (IllegalArgumentException e) {
-                return OPERATION_FAILED;
-            }
-        }
-
-        public int getStatusCode() {
-            return statusCode;
-        }
-    }
-
-    private final ErrorType errorType;
-    private final ErrorTag errorTag;
-    private final String errorInfo;
-    private final String errorAppTag;
-    private final String errorMessage;
-
-    // TODO: Add in the error-path concept as defined in the ietf draft.
-
-    static String toErrorInfo(Throwable cause) {
-        StringWriter writer = new StringWriter();
-        cause.printStackTrace(new PrintWriter(writer));
-        return writer.toString();
-    }
-
-    /**
-     * Constructs a RestConfError
-     *
-     * @param errorType
-     *            The enumerated type indicating the layer where the error occurred.
-     * @param errorTag
-     *            The enumerated tag representing a more specific error cause.
-     * @param errorMessage
-     *            A string which provides a plain text string describing the error.
-     */
-    public RestconfError(ErrorType errorType, ErrorTag errorTag, String errorMessage) {
-        this(errorType, errorTag, errorMessage, null);
-    }
-
-    /**
-     * Constructs a RestConfError object.
-     *
-     * @param errorType
-     *            The enumerated type indicating the layer where the error occurred.
-     * @param errorTag
-     *            The enumerated tag representing a more specific error cause.
-     * @param errorMessage
-     *            A string which provides a plain text string describing the error.
-     * @param errorAppTag
-     *            A string which represents an application-specific error tag that further specifies the error cause.
-     */
-    public RestconfError(ErrorType errorType, ErrorTag errorTag, String errorMessage, String errorAppTag) {
-        this(errorType, errorTag, errorMessage, errorAppTag, null);
-    }
-
-    /**
-     * Constructs a RestConfError object.
-     *
-     * @param errorType
-     *            The enumerated type indicating the layer where the error occurred.
-     * @param errorTag
-     *            The enumerated tag representing a more specific error cause.
-     * @param errorMessage
-     *            A string which provides a plain text string describing the error.
-     * @param errorAppTag
-     *            A string which represents an application-specific error tag that further specifies the error cause.
-     * @param errorInfo
-     *            A string, <b>formatted as XML</b>, which contains additional error information.
-     */
-    public RestconfError(ErrorType errorType, ErrorTag errorTag, String errorMessage, String errorAppTag,
-            String errorInfo) {
-        Preconditions.checkNotNull(errorType, "Error type is required for RestConfError");
-        Preconditions.checkNotNull(errorTag, "Error tag is required for RestConfError");
-        this.errorType = errorType;
-        this.errorTag = errorTag;
-        this.errorMessage = errorMessage;
-        this.errorAppTag = errorAppTag;
-        this.errorInfo = errorInfo;
-    }
-
-    /**
-     * Constructs a RestConfError object from an RpcError.
-     */
-    public RestconfError(RpcError rpcError) {
-
-        this.errorType = rpcError.getErrorType() == null ? ErrorType.APPLICATION : ErrorType
-                .valueOfCaseInsensitive(rpcError.getErrorType().name());
-
-        this.errorTag = rpcError.getTag() == null ? ErrorTag.OPERATION_FAILED : ErrorTag
-                .valueOfCaseInsensitive(rpcError.getTag().toString());
-
-        this.errorMessage = rpcError.getMessage();
-        this.errorAppTag = rpcError.getApplicationTag();
-
-        String errorInfo = null;
-        if (rpcError.getInfo() == null) {
-            if (rpcError.getCause() != null) {
-                errorInfo = toErrorInfo(rpcError.getCause());
-            } else if (rpcError.getSeverity() != null) {
-                errorInfo = "<severity>" + rpcError.getSeverity().toString().toLowerCase() + "</severity>";
-            }
-        } else {
-            errorInfo = rpcError.getInfo();
-        }
-
-        this.errorInfo = errorInfo;
-    }
-
-    public ErrorType getErrorType() {
-        return errorType;
-    }
-
-    public ErrorTag getErrorTag() {
-        return errorTag;
-    }
-
-    public String getErrorInfo() {
-        return errorInfo;
-    }
-
-    public String getErrorAppTag() {
-        return errorAppTag;
-    }
-
-    public String getErrorMessage() {
-        return errorMessage;
-    }
-
-    @Override
-    public String toString() {
-        return "error-type: " + errorType.getErrorTypeTag() + ", error-tag: " + errorTag.getTagValue() + ", "
-                + (errorAppTag != null ? "error-app-tag: " + errorAppTag + ", " : "")
-                + (errorMessage != null ? "error-message: " + errorMessage : "")
-                + (errorInfo != null ? "error-info: " + errorInfo + ", " : "") + "]";
-    }
-
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfImpl.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfImpl.java
deleted file mode 100644 (file)
index bc84832..0000000
+++ /dev/null
@@ -1,1160 +0,0 @@
-/**
- * Copyright (c) 2014, 2015 Brocade Communication Systems, Inc., 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.sal.restconf.impl;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
-import com.google.common.base.Throwables;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.Futures;
-import java.math.BigInteger;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CancellationException;
-import java.util.concurrent.ExecutionException;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.ResponseBuilder;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.UriBuilder;
-import javax.ws.rs.core.UriInfo;
-import org.apache.commons.lang3.StringUtils;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcException;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
-import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult;
-import org.opendaylight.controller.md.sal.rest.common.RestconfValidationUtils;
-import org.opendaylight.controller.sal.rest.api.Draft02;
-import org.opendaylight.controller.sal.rest.api.RestconfService;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType;
-import org.opendaylight.controller.sal.streams.listeners.ListenerAdapter;
-import org.opendaylight.controller.sal.streams.listeners.Notificator;
-import org.opendaylight.controller.sal.streams.websockets.WebSocketServer;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.ModifiedNodeDoesNotExistException;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.ListNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.util.EmptyType;
-import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
-import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder;
-import org.opendaylight.yangtools.yang.parser.builder.impl.ContainerSchemaNodeBuilder;
-import org.opendaylight.yangtools.yang.parser.builder.impl.LeafSchemaNodeBuilder;
-import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder;
-import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RestconfImpl implements RestconfService {
-
-    private static final RestconfImpl INSTANCE = new RestconfImpl();
-
-    private static final int NOTIFICATION_PORT = 8181;
-
-    private static final int CHAR_NOT_FOUND = -1;
-
-    private static final String MOUNT_POINT_MODULE_NAME = "ietf-netconf";
-
-    private static final SimpleDateFormat REVISION_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
-
-    private static final String SAL_REMOTE_NAMESPACE = "urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote";
-
-    private static final String SAL_REMOTE_RPC_SUBSRCIBE = "create-data-change-event-subscription";
-
-    private BrokerFacade broker;
-
-    private ControllerContext controllerContext;
-
-    private static final Logger LOG = LoggerFactory.getLogger(RestconfImpl.class);
-
-    private static final DataChangeScope DEFAULT_SCOPE = DataChangeScope.BASE;
-
-    private static final LogicalDatastoreType DEFAULT_DATASTORE = LogicalDatastoreType.CONFIGURATION;
-
-    private static final URI NAMESPACE_EVENT_SUBSCRIPTION_AUGMENT = URI.create("urn:sal:restconf:event:subscription");
-
-    private static final String DATASTORE_PARAM_NAME = "datastore";
-
-    private static final String SCOPE_PARAM_NAME = "scope";
-
-    private static final String NETCONF_BASE = "urn:ietf:params:xml:ns:netconf:base:1.0";
-
-    private static final String NETCONF_BASE_PAYLOAD_NAME = "data";
-
-    private static final QName NETCONF_BASE_QNAME;
-
-    private static final QNameModule SAL_REMOTE_AUGMENT;
-
-    private static final YangInstanceIdentifier.AugmentationIdentifier SAL_REMOTE_AUG_IDENTIFIER;
-
-    static {
-        try {
-            final Date eventSubscriptionAugRevision = new SimpleDateFormat("yyyy-MM-dd").parse("2014-07-08");
-            NETCONF_BASE_QNAME = QName.create(QNameModule.create(new URI(NETCONF_BASE), null), NETCONF_BASE_PAYLOAD_NAME );
-            SAL_REMOTE_AUGMENT = QNameModule.create(NAMESPACE_EVENT_SUBSCRIPTION_AUGMENT,
-                    eventSubscriptionAugRevision);
-            SAL_REMOTE_AUG_IDENTIFIER = new YangInstanceIdentifier.AugmentationIdentifier(Sets.newHashSet(QName.create(SAL_REMOTE_AUGMENT, "scope"),
-                    QName.create(SAL_REMOTE_AUGMENT, "datastore")));
-        } catch (final ParseException e) {
-            final String errMsg = "It wasn't possible to convert revision date of sal-remote-augment to date";
-            LOG.debug(errMsg);
-            throw new RestconfDocumentedException(errMsg, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED);
-        } catch (final URISyntaxException e) {
-            final String errMsg = "It wasn't possible to create instance of URI class with "+NETCONF_BASE+" URI";
-            throw new RestconfDocumentedException(errMsg, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED);
-        }
-    }
-
-    public void setBroker(final BrokerFacade broker) {
-        this.broker = broker;
-    }
-
-    public void setControllerContext(final ControllerContext controllerContext) {
-        this.controllerContext = controllerContext;
-    }
-
-    private RestconfImpl() {
-    }
-
-    public static RestconfImpl getInstance() {
-        return INSTANCE;
-    }
-
-    @Override
-    public NormalizedNodeContext getModules(final UriInfo uriInfo) {
-        final Set<Module> allModules = controllerContext.getAllModules();
-        final MapNode allModuleMap = makeModuleMapNode(allModules);
-
-        final SchemaContext schemaContext = controllerContext.getGlobalSchema();
-
-        final Module restconfModule = getRestconfModule();
-        final DataSchemaNode modulesSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(
-                restconfModule, Draft02.RestConfModule.MODULES_CONTAINER_SCHEMA_NODE);
-        Preconditions.checkState(modulesSchemaNode instanceof ContainerSchemaNode);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> moduleContainerBuilder =
-                Builders.containerBuilder((ContainerSchemaNode) modulesSchemaNode);
-        moduleContainerBuilder.withChild(allModuleMap);
-
-        return new NormalizedNodeContext(new InstanceIdentifierContext<>(null, modulesSchemaNode,
-                null, schemaContext), moduleContainerBuilder.build(),
-                QueryParametersParser.parseWriterParameters(uriInfo));
-    }
-
-    /**
-     * Valid only for mount point
-     */
-    @Override
-    public NormalizedNodeContext getModules(final String identifier, final UriInfo uriInfo) {
-        Preconditions.checkNotNull(identifier);
-        if ( ! identifier.contains(ControllerContext.MOUNT)) {
-            final String errMsg = "URI has bad format. If modules behind mount point should be showed,"
-                    + " URI has to end with " + ControllerContext.MOUNT;
-            LOG.debug(errMsg + " for " + identifier);
-            throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-
-        final InstanceIdentifierContext<?> mountPointIdentifier = controllerContext.toMountPointIdentifier(identifier);
-        final DOMMountPoint mountPoint = mountPointIdentifier.getMountPoint();
-        final Set<Module> modules = controllerContext.getAllModules(mountPoint);
-        final MapNode mountPointModulesMap = makeModuleMapNode(modules);
-
-        final Module restconfModule = getRestconfModule();
-        final DataSchemaNode modulesSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(
-                restconfModule, Draft02.RestConfModule.MODULES_CONTAINER_SCHEMA_NODE);
-        Preconditions.checkState(modulesSchemaNode instanceof ContainerSchemaNode);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> moduleContainerBuilder =
-                Builders.containerBuilder((ContainerSchemaNode) modulesSchemaNode);
-        moduleContainerBuilder.withChild(mountPointModulesMap);
-
-        return new NormalizedNodeContext(new InstanceIdentifierContext<>(null, modulesSchemaNode,
-                mountPoint, controllerContext.getGlobalSchema()), moduleContainerBuilder.build(),
-                QueryParametersParser.parseWriterParameters(uriInfo));
-    }
-
-    @Override
-    public NormalizedNodeContext getModule(final String identifier, final UriInfo uriInfo) {
-        Preconditions.checkNotNull(identifier);
-        final QName moduleNameAndRevision = getModuleNameAndRevision(identifier);
-        Module module = null;
-        DOMMountPoint mountPoint = null;
-        final SchemaContext schemaContext;
-        if (identifier.contains(ControllerContext.MOUNT)) {
-            final InstanceIdentifierContext<?> mountPointIdentifier = controllerContext.toMountPointIdentifier(identifier);
-            mountPoint = mountPointIdentifier.getMountPoint();
-            module = controllerContext.findModuleByNameAndRevision(mountPoint, moduleNameAndRevision);
-            schemaContext = mountPoint.getSchemaContext();
-        } else {
-            module = controllerContext.findModuleByNameAndRevision(moduleNameAndRevision);
-            schemaContext = controllerContext.getGlobalSchema();
-        }
-
-        if (module == null) {
-            final String errMsg = "Module with name '" + moduleNameAndRevision.getLocalName()
-                    + "' and revision '" + moduleNameAndRevision.getRevision() + "' was not found.";
-            LOG.debug(errMsg);
-            throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT);
-        }
-
-        final Module restconfModule = getRestconfModule();
-        final Set<Module> modules = Collections.singleton(module);
-        final MapNode moduleMap = makeModuleMapNode(modules);
-
-        final DataSchemaNode moduleSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(
-                restconfModule, Draft02.RestConfModule.MODULE_LIST_SCHEMA_NODE);
-        Preconditions.checkState(moduleSchemaNode instanceof ListSchemaNode);
-
-        return new NormalizedNodeContext(new InstanceIdentifierContext<>(null, moduleSchemaNode, mountPoint,
-                schemaContext), moduleMap, QueryParametersParser.parseWriterParameters(uriInfo));
-    }
-
-    @Override
-    public NormalizedNodeContext getAvailableStreams(final UriInfo uriInfo) {
-        final SchemaContext schemaContext = controllerContext.getGlobalSchema();
-        final Set<String> availableStreams = Notificator.getStreamNames();
-        final Module restconfModule = getRestconfModule();
-        final DataSchemaNode streamSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(restconfModule,
-                Draft02.RestConfModule.STREAM_LIST_SCHEMA_NODE);
-        Preconditions.checkState(streamSchemaNode instanceof ListSchemaNode);
-
-        final CollectionNodeBuilder<MapEntryNode, MapNode> listStreamsBuilder = Builders
-                .mapBuilder((ListSchemaNode) streamSchemaNode);
-
-        for (final String streamName : availableStreams) {
-            listStreamsBuilder.withChild(toStreamEntryNode(streamName, streamSchemaNode));
-        }
-
-        final DataSchemaNode streamsContainerSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(
-                restconfModule, Draft02.RestConfModule.STREAMS_CONTAINER_SCHEMA_NODE);
-        Preconditions.checkState(streamsContainerSchemaNode instanceof ContainerSchemaNode);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> streamsContainerBuilder =
-                Builders.containerBuilder((ContainerSchemaNode) streamsContainerSchemaNode);
-        streamsContainerBuilder.withChild(listStreamsBuilder.build());
-
-
-        return new NormalizedNodeContext(new InstanceIdentifierContext<>(null, streamsContainerSchemaNode, null,
-                schemaContext), streamsContainerBuilder.build(), QueryParametersParser.parseWriterParameters(uriInfo));
-    }
-
-    @Override
-    public NormalizedNodeContext getOperations(final UriInfo uriInfo) {
-        final Set<Module> allModules = controllerContext.getAllModules();
-        return operationsFromModulesToNormalizedContext(allModules, null);
-    }
-
-    @Override
-    public NormalizedNodeContext getOperations(final String identifier, final UriInfo uriInfo) {
-        Set<Module> modules = null;
-        DOMMountPoint mountPoint = null;
-        if (identifier.contains(ControllerContext.MOUNT)) {
-            final InstanceIdentifierContext<?> mountPointIdentifier = controllerContext.toMountPointIdentifier(identifier);
-            mountPoint = mountPointIdentifier.getMountPoint();
-            modules = controllerContext.getAllModules(mountPoint);
-
-        } else {
-            final String errMsg = "URI has bad format. If operations behind mount point should be showed, URI has to end with ";
-            LOG.debug(errMsg + ControllerContext.MOUNT + " for " + identifier);
-            throw new RestconfDocumentedException(errMsg + ControllerContext.MOUNT, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-
-        return operationsFromModulesToNormalizedContext(modules, mountPoint);
-    }
-
-    private static final Predicate<GroupingBuilder> GROUPING_FILTER = new Predicate<GroupingBuilder>() {
-        @Override
-        public boolean apply(final GroupingBuilder g) {
-            return Draft02.RestConfModule.RESTCONF_GROUPING_SCHEMA_NODE.equals(g.getQName().getLocalName());
-        }
-    };
-
-    private NormalizedNodeContext operationsFromModulesToNormalizedContext(final Set<Module> modules,
-            final DOMMountPoint mountPoint) {
-
-        final Module restconfModule = getRestconfModule();
-        final ModuleBuilder restConfModuleBuilder = new ModuleBuilder(restconfModule);
-        final Set<GroupingBuilder> gropingBuilders = restConfModuleBuilder.getGroupingBuilders();
-        final Iterable<GroupingBuilder> filteredGroups = Iterables.filter(gropingBuilders, GROUPING_FILTER);
-        final GroupingBuilder restconfGroupingBuilder = Iterables.getFirst(filteredGroups, null);
-        final ContainerSchemaNodeBuilder restContainerSchemaNodeBuilder = (ContainerSchemaNodeBuilder) restconfGroupingBuilder
-                .getDataChildByName(Draft02.RestConfModule.RESTCONF_CONTAINER_SCHEMA_NODE);
-        final ContainerSchemaNodeBuilder containerSchemaNodeBuilder = (ContainerSchemaNodeBuilder) restContainerSchemaNodeBuilder
-                .getDataChildByName(Draft02.RestConfModule.OPERATIONS_CONTAINER_SCHEMA_NODE);
-
-        final ContainerSchemaNodeBuilder fakeOperationsSchemaNodeBuilder = containerSchemaNodeBuilder;
-        final SchemaPath fakeSchemaPath = fakeOperationsSchemaNodeBuilder.getPath().createChild(QName.create("dummy"));
-
-        final List<LeafNode<Object>> operationsAsData = new ArrayList<>();
-
-        for (final Module module : modules) {
-            final Set<RpcDefinition> rpcs = module.getRpcs();
-            for (final RpcDefinition rpc : rpcs) {
-                final QName rpcQName = rpc.getQName();
-                final String name = module.getName();
-
-                final QName qName = QName.create(restconfModule.getQNameModule(), rpcQName.getLocalName());
-                final LeafSchemaNodeBuilder leafSchemaNodeBuilder = new LeafSchemaNodeBuilder(name, 0, qName, fakeSchemaPath);
-                final LeafSchemaNodeBuilder fakeRpcSchemaNodeBuilder = leafSchemaNodeBuilder;
-                fakeRpcSchemaNodeBuilder.setAugmenting(true);
-
-                final EmptyType instance = EmptyType.getInstance();
-                fakeRpcSchemaNodeBuilder.setType(instance);
-                final LeafSchemaNode fakeRpcSchemaNode = fakeRpcSchemaNodeBuilder.build();
-                fakeOperationsSchemaNodeBuilder.addChildNode(fakeRpcSchemaNode);
-
-                final LeafNode<Object> leaf = Builders.leafBuilder(fakeRpcSchemaNode).build();
-                operationsAsData.add(leaf);
-            }
-        }
-
-        final ContainerSchemaNode operContainerSchemaNode = fakeOperationsSchemaNodeBuilder.build();
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> operContainerNode = Builders.containerBuilder(operContainerSchemaNode);
-
-        for (final LeafNode<Object> oper : operationsAsData) {
-            operContainerNode.withChild(oper);
-        }
-
-        final Set<Module> fakeRpcModules = Collections.singleton(restConfModuleBuilder.build());
-
-        final YangParserImpl yangParser = new YangParserImpl();
-        final SchemaContext fakeSchemaCx = yangParser.resolveSchemaContext(fakeRpcModules);
-
-        final InstanceIdentifierContext<?> fakeIICx = new InstanceIdentifierContext<>(null, operContainerSchemaNode, mountPoint, fakeSchemaCx);
-
-        return new NormalizedNodeContext(fakeIICx, operContainerNode.build());
-    }
-
-    private Module getRestconfModule() {
-        final Module restconfModule = controllerContext.getRestconfModule();
-        if (restconfModule == null) {
-            LOG.debug("ietf-restconf module was not found.");
-            throw new RestconfDocumentedException("ietf-restconf module was not found.", ErrorType.APPLICATION,
-                    ErrorTag.OPERATION_NOT_SUPPORTED);
-        }
-
-        return restconfModule;
-    }
-
-    private QName getModuleNameAndRevision(final String identifier) {
-        final int mountIndex = identifier.indexOf(ControllerContext.MOUNT);
-        String moduleNameAndRevision = "";
-        if (mountIndex >= 0) {
-            moduleNameAndRevision = identifier.substring(mountIndex + ControllerContext.MOUNT.length());
-        } else {
-            moduleNameAndRevision = identifier;
-        }
-
-        final Splitter splitter = Splitter.on("/").omitEmptyStrings();
-        final Iterable<String> split = splitter.split(moduleNameAndRevision);
-        final List<String> pathArgs = Lists.<String> newArrayList(split);
-        if (pathArgs.size() < 2) {
-            LOG.debug("URI has bad format. It should be \'moduleName/yyyy-MM-dd\' " + identifier);
-            throw new RestconfDocumentedException(
-                    "URI has bad format. End of URI should be in format \'moduleName/yyyy-MM-dd\'", ErrorType.PROTOCOL,
-                    ErrorTag.INVALID_VALUE);
-        }
-
-        try {
-            final String moduleName = pathArgs.get(0);
-            final String revision = pathArgs.get(1);
-            final Date moduleRevision = REVISION_FORMAT.parse(revision);
-            return QName.create(null, moduleRevision, moduleName);
-        } catch (final ParseException e) {
-            LOG.debug("URI has bad format. It should be \'moduleName/yyyy-MM-dd\' " + identifier);
-            throw new RestconfDocumentedException("URI has bad format. It should be \'moduleName/yyyy-MM-dd\'",
-                    ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-    }
-
-    @Override
-    public Object getRoot() {
-        return null;
-    }
-
-    @Override
-    public NormalizedNodeContext invokeRpc(final String identifier, final NormalizedNodeContext payload, final UriInfo uriInfo) {
-        final SchemaPath type = payload.getInstanceIdentifierContext().getSchemaNode().getPath();
-        final URI namespace = payload.getInstanceIdentifierContext().getSchemaNode().getQName().getNamespace();
-        final CheckedFuture<DOMRpcResult, DOMRpcException> response;
-        final DOMMountPoint mountPoint = payload.getInstanceIdentifierContext().getMountPoint();
-        final SchemaContext schemaContext;
-        if (identifier.contains(MOUNT_POINT_MODULE_NAME) && mountPoint != null) {
-            final Optional<DOMRpcService> mountRpcServices = mountPoint.getService(DOMRpcService.class);
-            if ( ! mountRpcServices.isPresent()) {
-                LOG.debug("Error: Rpc service is missing.");
-                throw new RestconfDocumentedException("Rpc service is missing.");
-            }
-            schemaContext = mountPoint.getSchemaContext();
-            response = mountRpcServices.get().invokeRpc(type, payload.getData());
-        } else {
-            if (namespace.toString().equals(SAL_REMOTE_NAMESPACE)) {
-                response = invokeSalRemoteRpcSubscribeRPC(payload);
-            } else {
-                response = broker.invokeRpc(type, payload.getData());
-            }
-            schemaContext = controllerContext.getGlobalSchema();
-        }
-
-        final DOMRpcResult result = checkRpcResponse(response);
-
-        RpcDefinition resultNodeSchema = null;
-        final NormalizedNode<?, ?> resultData = result.getResult();
-        if (result != null && result.getResult() != null) {
-            resultNodeSchema = (RpcDefinition) payload.getInstanceIdentifierContext().getSchemaNode();
-        }
-
-        return new NormalizedNodeContext(new InstanceIdentifierContext<RpcDefinition>(null,
-                resultNodeSchema, mountPoint, schemaContext), resultData,
-                QueryParametersParser.parseWriterParameters(uriInfo));
-    }
-
-    private DOMRpcResult checkRpcResponse(final CheckedFuture<DOMRpcResult, DOMRpcException> response) {
-        if (response == null) {
-            return null;
-        }
-        try {
-            final DOMRpcResult retValue = response.get();
-            if (retValue.getErrors() == null || retValue.getErrors().isEmpty()) {
-                return retValue;
-            }
-            LOG.debug("RpcError message", retValue.getErrors());
-            throw new RestconfDocumentedException("RpcError message", null, retValue.getErrors());
-        } catch (final InterruptedException e) {
-            final String errMsg = "The operation was interrupted while executing and did not complete.";
-            LOG.debug("Rpc Interrupt - " + errMsg, e);
-            throw new RestconfDocumentedException(errMsg, ErrorType.RPC, ErrorTag.PARTIAL_OPERATION);
-        } catch (final ExecutionException e) {
-            LOG.debug("Execution RpcError: ", e);
-            Throwable cause = e.getCause();
-            if (cause != null) {
-                while (cause.getCause() != null) {
-                    cause = cause.getCause();
-                }
-
-                if (cause instanceof IllegalArgumentException) {
-                    throw new RestconfDocumentedException(cause.getMessage(), ErrorType.PROTOCOL,
-                            ErrorTag.INVALID_VALUE);
-                }
-                throw new RestconfDocumentedException("The operation encountered an unexpected error while executing.",cause);
-            } else {
-                throw new RestconfDocumentedException("The operation encountered an unexpected error while executing.",e);
-            }
-        } catch (final CancellationException e) {
-            final String errMsg = "The operation was cancelled while executing.";
-            LOG.debug("Cancel RpcExecution: " + errMsg, e);
-            throw new RestconfDocumentedException(errMsg, ErrorType.RPC, ErrorTag.PARTIAL_OPERATION);
-        }
-    }
-
-    private void validateInput(final SchemaNode inputSchema, final NormalizedNodeContext payload) {
-        if (inputSchema != null && payload.getData() == null) {
-            // expected a non null payload
-            throw new RestconfDocumentedException("Input is required.", ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE);
-        } else if (inputSchema == null && payload.getData() != null) {
-            // did not expect any input
-            throw new RestconfDocumentedException("No input expected.", ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE);
-        }
-        // else
-        // {
-        // TODO: Validate "mandatory" and "config" values here??? Or should those be
-        // those be
-        // validate in a more central location inside MD-SAL core.
-        // }
-    }
-
-    private CheckedFuture<DOMRpcResult, DOMRpcException> invokeSalRemoteRpcSubscribeRPC(final NormalizedNodeContext payload) {
-        final ContainerNode value = (ContainerNode) payload.getData();
-        final QName rpcQName = payload.getInstanceIdentifierContext().getSchemaNode().getQName();
-        final Optional<DataContainerChild<? extends PathArgument, ?>> path = value.getChild(new NodeIdentifier(
-                QName.create(payload.getInstanceIdentifierContext().getSchemaNode().getQName(), "path")));
-        final Object pathValue = path.isPresent() ? path.get().getValue() : null;
-
-        if (!(pathValue instanceof YangInstanceIdentifier)) {
-            final String errMsg = "Instance identifier was not normalized correctly ";
-            LOG.debug(errMsg + rpcQName);
-            throw new RestconfDocumentedException(errMsg, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED);
-        }
-
-        final YangInstanceIdentifier pathIdentifier = ((YangInstanceIdentifier) pathValue);
-        String streamName = null;
-        if (!pathIdentifier.isEmpty()) {
-            final String fullRestconfIdentifier = controllerContext.toFullRestconfIdentifier(pathIdentifier, null);
-
-            LogicalDatastoreType datastore = parseEnumTypeParameter(value, LogicalDatastoreType.class, DATASTORE_PARAM_NAME);
-            datastore = datastore == null ? DEFAULT_DATASTORE : datastore;
-
-            DataChangeScope scope = parseEnumTypeParameter(value, DataChangeScope.class, SCOPE_PARAM_NAME);
-            scope = scope == null ? DEFAULT_SCOPE : scope;
-
-            streamName = Notificator.createStreamNameFromUri(fullRestconfIdentifier + "/datastore=" + datastore
-                    + "/scope=" + scope);
-        }
-
-        if (Strings.isNullOrEmpty(streamName)) {
-            final String errMsg = "Path is empty or contains value node which is not Container or List build-in type.";
-            LOG.debug(errMsg + pathIdentifier);
-            throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-
-        final QName outputQname = QName.create(rpcQName, "output");
-        final QName streamNameQname = QName.create(rpcQName, "stream-name");
-
-        final ContainerNode output = ImmutableContainerNodeBuilder.create().withNodeIdentifier(new NodeIdentifier(outputQname))
-                .withChild(ImmutableNodes.leafNode(streamNameQname, streamName)).build();
-
-        if (!Notificator.existListenerFor(streamName)) {
-            Notificator.createListener(pathIdentifier, streamName);
-        }
-
-        final DOMRpcResult defaultDOMRpcResult = new DefaultDOMRpcResult(output);
-
-        return Futures.immediateCheckedFuture(defaultDOMRpcResult);
-    }
-
-    @Override
-    public NormalizedNodeContext invokeRpc(final String identifier, final String noPayload, final UriInfo uriInfo) {
-        if (StringUtils.isNotBlank(noPayload)) {
-            throw new RestconfDocumentedException("Content must be empty.", ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-
-        String identifierEncoded = null;
-        DOMMountPoint mountPoint = null;
-        final SchemaContext schemaContext;
-        if (identifier.contains(ControllerContext.MOUNT)) {
-            // mounted RPC call - look up mount instance.
-            final InstanceIdentifierContext<?> mountPointId = controllerContext.toMountPointIdentifier(identifier);
-            mountPoint = mountPointId.getMountPoint();
-            schemaContext = mountPoint.getSchemaContext();
-            final int startOfRemoteRpcName = identifier.lastIndexOf(ControllerContext.MOUNT)
-                    + ControllerContext.MOUNT.length() + 1;
-            final String remoteRpcName = identifier.substring(startOfRemoteRpcName);
-            identifierEncoded = remoteRpcName;
-
-        } else if (identifier.indexOf("/") != CHAR_NOT_FOUND) {
-            final String slashErrorMsg = String.format("Identifier %n%s%ncan\'t contain slash "
-                    + "character (/).%nIf slash is part of identifier name then use %%2F placeholder.", identifier);
-            LOG.debug(slashErrorMsg);
-            throw new RestconfDocumentedException(slashErrorMsg, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        } else {
-            identifierEncoded = identifier;
-            schemaContext = controllerContext.getGlobalSchema();
-        }
-
-        final String identifierDecoded = controllerContext.urlPathArgDecode(identifierEncoded);
-
-        RpcDefinition rpc = null;
-        if (mountPoint == null) {
-            rpc = controllerContext.getRpcDefinition(identifierDecoded);
-        } else {
-            rpc = findRpc(mountPoint.getSchemaContext(), identifierDecoded);
-        }
-
-        if (rpc == null) {
-            LOG.debug("RPC " + identifierDecoded + " does not exist.");
-            throw new RestconfDocumentedException("RPC does not exist.", ErrorType.RPC, ErrorTag.UNKNOWN_ELEMENT);
-        }
-
-        if (rpc.getInput() != null) {
-            LOG.debug("RPC " + rpc + " does not need input value.");
-            // FIXME : find a correct Error from specification
-            throw new IllegalStateException("RPC " + rpc + " does'n need input value!");
-        }
-
-        final CheckedFuture<DOMRpcResult, DOMRpcException> response;
-        if (mountPoint != null) {
-            final Optional<DOMRpcService> mountRpcServices = mountPoint.getService(DOMRpcService.class);
-            if ( ! mountRpcServices.isPresent()) {
-                throw new RestconfDocumentedException("Rpc service is missing.");
-            }
-            response = mountRpcServices.get().invokeRpc(rpc.getPath(), null);
-        } else {
-            response = broker.invokeRpc(rpc.getPath(), null);
-        }
-
-        final DOMRpcResult result = checkRpcResponse(response);
-
-        DataSchemaNode resultNodeSchema = null;
-        NormalizedNode<?, ?> resultData = null;
-        if (result != null && result.getResult() != null) {
-            resultData = result.getResult();
-            final ContainerSchemaNode rpcDataSchemaNode =
-                    SchemaContextUtil.getRpcDataSchema(schemaContext, rpc.getOutput().getPath());
-            resultNodeSchema = rpcDataSchemaNode.getDataChildByName(result.getResult().getNodeType());
-        }
-
-        return new NormalizedNodeContext(new InstanceIdentifierContext<>(null, resultNodeSchema, mountPoint,
-                schemaContext), resultData, QueryParametersParser.parseWriterParameters(uriInfo));
-    }
-
-    private RpcDefinition findRpc(final SchemaContext schemaContext, final String identifierDecoded) {
-        final String[] splittedIdentifier = identifierDecoded.split(":");
-        if (splittedIdentifier.length != 2) {
-            final String errMsg = identifierDecoded + " couldn't be splitted to 2 parts (module:rpc name)";
-            LOG.debug(errMsg);
-            throw new RestconfDocumentedException(errMsg, ErrorType.APPLICATION, ErrorTag.INVALID_VALUE);
-        }
-        for (final Module module : schemaContext.getModules()) {
-            if (module.getName().equals(splittedIdentifier[0])) {
-                for (final RpcDefinition rpcDefinition : module.getRpcs()) {
-                    if (rpcDefinition.getQName().getLocalName().equals(splittedIdentifier[1])) {
-                        return rpcDefinition;
-                    }
-                }
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public NormalizedNodeContext readConfigurationData(final String identifier, final UriInfo uriInfo) {
-        final InstanceIdentifierContext<?> iiWithData = controllerContext.toInstanceIdentifier(identifier);
-        final DOMMountPoint mountPoint = iiWithData.getMountPoint();
-        NormalizedNode<?, ?> data = null;
-        final YangInstanceIdentifier normalizedII = iiWithData.getInstanceIdentifier();
-        if (mountPoint != null) {
-            data = broker.readConfigurationData(mountPoint, normalizedII);
-        } else {
-            data = broker.readConfigurationData(normalizedII);
-        }
-        if(data == null) {
-            final String errMsg = "Request could not be completed because the relevant data model content does not exist ";
-            LOG.debug(errMsg + identifier);
-            throw new RestconfDocumentedException(errMsg, ErrorType.APPLICATION, ErrorTag.DATA_MISSING);
-        }
-        return new NormalizedNodeContext(iiWithData, data, QueryParametersParser.parseWriterParameters(uriInfo));
-    }
-
-    @Override
-    public NormalizedNodeContext readOperationalData(final String identifier, final UriInfo uriInfo) {
-        final InstanceIdentifierContext<?> iiWithData = controllerContext.toInstanceIdentifier(identifier);
-        final DOMMountPoint mountPoint = iiWithData.getMountPoint();
-        NormalizedNode<?, ?> data = null;
-        final YangInstanceIdentifier normalizedII = iiWithData.getInstanceIdentifier();
-        if (mountPoint != null) {
-            data = broker.readOperationalData(mountPoint, normalizedII);
-        } else {
-            data = broker.readOperationalData(normalizedII);
-        }
-        if(data == null) {
-            final String errMsg = "Request could not be completed because the relevant data model content does not exist ";
-            LOG.debug(errMsg + identifier);
-            throw new RestconfDocumentedException(errMsg , ErrorType.APPLICATION, ErrorTag.DATA_MISSING);
-        }
-        return new NormalizedNodeContext(iiWithData, data, QueryParametersParser.parseWriterParameters(uriInfo));
-    }
-
-    @Override
-    public Response updateConfigurationData(final String identifier, final NormalizedNodeContext payload) {
-        Preconditions.checkNotNull(identifier);
-        final InstanceIdentifierContext<?> iiWithData = payload.getInstanceIdentifierContext();
-
-        validateInput(iiWithData.getSchemaNode(), payload);
-        validateTopLevelNodeName(payload, iiWithData.getInstanceIdentifier());
-        validateListKeysEqualityInPayloadAndUri(payload);
-
-        final DOMMountPoint mountPoint = iiWithData.getMountPoint();
-        final YangInstanceIdentifier normalizedII = iiWithData.getInstanceIdentifier();
-
-        /*
-         * There is a small window where another write transaction could be updating the same data
-         * simultaneously and we get an OptimisticLockFailedException. This error is likely
-         * transient and The WriteTransaction#submit API docs state that a retry will likely
-         * succeed. So we'll try again if that scenario occurs. If it fails a third time then it
-         * probably will never succeed so we'll fail in that case.
-         *
-         * By retrying we're attempting to hide the internal implementation of the data store and
-         * how it handles concurrent updates from the restconf client. The client has instructed us
-         * to put the data and we should make every effort to do so without pushing optimistic lock
-         * failures back to the client and forcing them to handle it via retry (and having to
-         * document the behavior).
-         */
-        int tries = 2;
-        while(true) {
-            try {
-                if (mountPoint != null) {
-                    broker.commitConfigurationDataPut(mountPoint, normalizedII, payload.getData()).checkedGet();
-                } else {
-                    broker.commitConfigurationDataPut(controllerContext.getGlobalSchema(), normalizedII, payload.getData()).checkedGet();
-                }
-
-                break;
-            } catch (final TransactionCommitFailedException e) {
-                if(e instanceof OptimisticLockFailedException) {
-                    if(--tries <= 0) {
-                        LOG.debug("Got OptimisticLockFailedException on last try - failing " + identifier);
-                        throw new RestconfDocumentedException(e.getMessage(), e, e.getErrorList());
-                    }
-
-                    LOG.debug("Got OptimisticLockFailedException - trying again " + identifier);
-                } else {
-                    LOG.debug("Update ConfigDataStore fail " + identifier, e);
-                    throw new RestconfDocumentedException(e.getMessage(), e, e.getErrorList());
-                }
-            } catch (Exception e) {
-                final String errMsg = "Error updating data ";
-                LOG.debug(errMsg + identifier, e);
-                throw new RestconfDocumentedException(errMsg, e);
-            }
-        }
-
-        return Response.status(Status.OK).build();
-    }
-
-    private void validateTopLevelNodeName(final NormalizedNodeContext node,
-            final YangInstanceIdentifier identifier) {
-
-        final String payloadName = node.getData().getNodeType().getLocalName();
-
-        //no arguments
-        if (identifier.isEmpty()) {
-            //no "data" payload
-            if (!node.getData().getNodeType().equals(NETCONF_BASE_QNAME)) {
-                throw new RestconfDocumentedException("Instance identifier has to contain at least one path argument",
-                        ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE);
-            }
-        //any arguments
-        } else {
-            final String identifierName = identifier.getLastPathArgument().getNodeType().getLocalName();
-            if (!payloadName.equals(identifierName)) {
-                throw new RestconfDocumentedException("Payload name (" + payloadName
-                        + ") is different from identifier name (" + identifierName + ")", ErrorType.PROTOCOL,
-                        ErrorTag.MALFORMED_MESSAGE);
-            }
-        }
-    }
-
-    /**
-     * Validates whether keys in {@code payload} are equal to values of keys in {@code iiWithData} for list schema node
-     *
-     * @throws RestconfDocumentedException
-     *             if key values or key count in payload and URI isn't equal
-     *
-     */
-    private static void validateListKeysEqualityInPayloadAndUri(final NormalizedNodeContext payload) {
-        Preconditions.checkArgument(payload != null);
-        final InstanceIdentifierContext<?> iiWithData = payload.getInstanceIdentifierContext();
-        final PathArgument lastPathArgument = iiWithData.getInstanceIdentifier().getLastPathArgument();
-        final SchemaNode schemaNode = iiWithData.getSchemaNode();
-        final NormalizedNode<?, ?> data = payload.getData();
-        if (schemaNode instanceof ListSchemaNode) {
-            final List<QName> keyDefinitions = ((ListSchemaNode) schemaNode).getKeyDefinition();
-            if (lastPathArgument instanceof NodeIdentifierWithPredicates && data instanceof MapEntryNode) {
-                final Map<QName, Object> uriKeyValues = ((NodeIdentifierWithPredicates) lastPathArgument).getKeyValues();
-                isEqualUriAndPayloadKeyValues(uriKeyValues, (MapEntryNode) data, keyDefinitions);
-            }
-        }
-    }
-
-    private static void isEqualUriAndPayloadKeyValues(final Map<QName, Object> uriKeyValues,
-            final MapEntryNode payload, final List<QName> keyDefinitions) {
-
-        final Map<QName, Object> mutableCopyUriKeyValues = Maps.newHashMap(uriKeyValues);
-        for (final QName keyDefinition : keyDefinitions) {
-            final Object uriKeyValue = mutableCopyUriKeyValues.remove(keyDefinition);
-            // should be caught during parsing URI to InstanceIdentifier
-            RestconfValidationUtils.checkDocumentedError(uriKeyValue != null, ErrorType.PROTOCOL, ErrorTag.DATA_MISSING,
-                    "Missing key " + keyDefinition + " in URI.");
-
-            final Object dataKeyValue = payload.getIdentifier().getKeyValues().get(keyDefinition);
-
-            if ( ! uriKeyValue.equals(dataKeyValue)) {
-                final String errMsg = "The value '" + uriKeyValue + "' for key '" + keyDefinition.getLocalName() +
-                        "' specified in the URI doesn't match the value '" + dataKeyValue + "' specified in the message body. ";
-                throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-            }
-        }
-    }
-
-    @Override
-    public Response createConfigurationData(final String identifier, final NormalizedNodeContext payload, final UriInfo uriInfo) {
-       return createConfigurationData(payload, uriInfo);
-    }
-
-    // FIXME create RestconfIdetifierHelper and move this method there
-    private YangInstanceIdentifier checkConsistencyOfNormalizedNodeContext(final NormalizedNodeContext payload) {
-        Preconditions.checkArgument(payload != null);
-        Preconditions.checkArgument(payload.getData() != null);
-        Preconditions.checkArgument(payload.getData().getNodeType() != null);
-        Preconditions.checkArgument(payload.getInstanceIdentifierContext() != null);
-        Preconditions.checkArgument(payload.getInstanceIdentifierContext().getInstanceIdentifier() != null);
-
-        final QName payloadNodeQname = payload.getData().getNodeType();
-        final YangInstanceIdentifier yangIdent = payload.getInstanceIdentifierContext().getInstanceIdentifier();
-        if (payloadNodeQname.compareTo(yangIdent.getLastPathArgument().getNodeType()) > 0) {
-            return yangIdent;
-        }
-        final InstanceIdentifierContext<?> parentContext = payload.getInstanceIdentifierContext();
-        final SchemaNode parentSchemaNode = parentContext.getSchemaNode();
-        if(parentSchemaNode instanceof DataNodeContainer) {
-            final DataNodeContainer cast = (DataNodeContainer) parentSchemaNode;
-            for (final DataSchemaNode child : cast.getChildNodes()) {
-                if (payloadNodeQname.compareTo(child.getQName()) == 0) {
-                    return YangInstanceIdentifier.builder(yangIdent).node(child.getQName()).build();
-                }
-            }
-        }
-        if (parentSchemaNode instanceof RpcDefinition) {
-            return yangIdent;
-        }
-        final String errMsg = "Error parsing input: DataSchemaNode has not children ";
-        LOG.info(errMsg + yangIdent);
-        throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE);
-    }
-
-    @Override
-    public Response createConfigurationData(final NormalizedNodeContext payload, final UriInfo uriInfo) {
-        if (payload == null) {
-            throw new RestconfDocumentedException("Input is required.", ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE);
-        }
-
-        // FIXME: move this to parsing stage (we can have augmentation nodes here which do not have namespace)
-//        final URI payloadNS = payload.getData().getNodeType().getNamespace();
-//        if (payloadNS == null) {
-//            throw new RestconfDocumentedException(
-//                    "Data has bad format. Root element node must have namespace (XML format) or module name(JSON format)",
-//                    ErrorType.PROTOCOL, ErrorTag.UNKNOWN_NAMESPACE);
-//        }
-
-        final DOMMountPoint mountPoint = payload.getInstanceIdentifierContext().getMountPoint();
-        final InstanceIdentifierContext<?> iiWithData = payload.getInstanceIdentifierContext();
-        final YangInstanceIdentifier normalizedII = iiWithData.getInstanceIdentifier();
-        try {
-            if (mountPoint != null) {
-                broker.commitConfigurationDataPost(mountPoint, normalizedII, payload.getData()).checkedGet();
-            } else {
-                broker.commitConfigurationDataPost(controllerContext.getGlobalSchema(), normalizedII, payload.getData()).checkedGet();
-            }
-        } catch(final RestconfDocumentedException e) {
-            throw e;
-        } catch (final Exception e) {
-            final String errMsg = "Error creating data ";
-            LOG.info(errMsg + (uriInfo != null ? uriInfo.getPath() : ""), e);
-            throw new RestconfDocumentedException(errMsg, e);
-        }
-
-        final ResponseBuilder responseBuilder = Response.status(Status.NO_CONTENT);
-        // FIXME: Provide path to result.
-        final URI location = resolveLocation(uriInfo, "", mountPoint, normalizedII);
-        if (location != null) {
-            responseBuilder.location(location);
-        }
-        return responseBuilder.build();
-    }
-
-    private URI resolveLocation(final UriInfo uriInfo, final String uriBehindBase, final DOMMountPoint mountPoint, final YangInstanceIdentifier normalizedII) {
-        final UriBuilder uriBuilder = uriInfo.getBaseUriBuilder();
-        uriBuilder.path("config");
-        try {
-            uriBuilder.path(controllerContext.toFullRestconfIdentifier(normalizedII, mountPoint));
-        } catch (final Exception e) {
-            LOG.info("Location for instance identifier" + normalizedII + "wasn't created", e);
-            return null;
-        }
-        return uriBuilder.build();
-    }
-
-    @Override
-    public Response deleteConfigurationData(final String identifier) {
-        final InstanceIdentifierContext<?> iiWithData = controllerContext.toInstanceIdentifier(identifier);
-        final DOMMountPoint mountPoint = iiWithData.getMountPoint();
-        final YangInstanceIdentifier normalizedII = iiWithData.getInstanceIdentifier();
-
-        try {
-            if (mountPoint != null) {
-                broker.commitConfigurationDataDelete(mountPoint, normalizedII);
-            } else {
-                broker.commitConfigurationDataDelete(normalizedII).get();
-            }
-        } catch (final Exception e) {
-            final Optional<Throwable> searchedException = Iterables.tryFind(Throwables.getCausalChain(e),
-                    Predicates.instanceOf(ModifiedNodeDoesNotExistException.class));
-            if (searchedException.isPresent()) {
-                throw new RestconfDocumentedException("Data specified for deleting doesn't exist.", ErrorType.APPLICATION, ErrorTag.DATA_MISSING);
-            }
-            final String errMsg = "Error while deleting data";
-            LOG.info(errMsg, e);
-            throw new RestconfDocumentedException(errMsg, e);
-        }
-        return Response.status(Status.OK).build();
-    }
-
-    /**
-     * Subscribes to some path in schema context (stream) to listen on changes on this stream.
-     *
-     * Additional parameters for subscribing to stream are loaded via rpc input parameters:
-     * <ul>
-     * <li>datastore</li> - default CONFIGURATION (other values of {@link LogicalDatastoreType} enum type)
-     * <li>scope</li> - default BASE (other values of {@link DataChangeScope})
-     * </ul>
-     */
-    @Override
-    public Response subscribeToStream(final String identifier, final UriInfo uriInfo) {
-        final String streamName = Notificator.createStreamNameFromUri(identifier);
-        if (Strings.isNullOrEmpty(streamName)) {
-            throw new RestconfDocumentedException("Stream name is empty.", ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-
-        final ListenerAdapter listener = Notificator.getListenerFor(streamName);
-        if (listener == null) {
-            throw new RestconfDocumentedException("Stream was not found.", ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT);
-        }
-
-        final Map<String, String> paramToValues = resolveValuesFromUri(identifier);
-        final LogicalDatastoreType datastore = parserURIEnumParameter(LogicalDatastoreType.class,
-                paramToValues.get(DATASTORE_PARAM_NAME));
-        if (datastore == null) {
-            throw new RestconfDocumentedException("Stream name doesn't contains datastore value (pattern /datastore=)",
-                    ErrorType.APPLICATION, ErrorTag.MISSING_ATTRIBUTE);
-        }
-        final DataChangeScope scope = parserURIEnumParameter(DataChangeScope.class, paramToValues.get(SCOPE_PARAM_NAME));
-        if (scope == null) {
-            throw new RestconfDocumentedException("Stream name doesn't contains datastore value (pattern /scope=)",
-                    ErrorType.APPLICATION, ErrorTag.MISSING_ATTRIBUTE);
-        }
-
-        broker.registerToListenDataChanges(datastore, scope, listener);
-
-        final UriBuilder uriBuilder = uriInfo.getAbsolutePathBuilder();
-        int notificationPort = NOTIFICATION_PORT;
-        try {
-            final WebSocketServer webSocketServerInstance = WebSocketServer.getInstance();
-            notificationPort = webSocketServerInstance.getPort();
-        } catch (final NullPointerException e) {
-            WebSocketServer.createInstance(NOTIFICATION_PORT);
-        }
-        final UriBuilder uriToWebsocketServerBuilder = uriBuilder.port(notificationPort).scheme("ws");
-        final URI uriToWebsocketServer = uriToWebsocketServerBuilder.replacePath(streamName).build();
-
-        return Response.status(Status.OK).location(uriToWebsocketServer).build();
-    }
-
-    /**
-     * Load parameter for subscribing to stream from input composite node
-     *
-     * @param compNode
-     *            contains value
-     * @return enum object if its string value is equal to {@code paramName}. In other cases null.
-     */
-    private <T> T parseEnumTypeParameter(final ContainerNode value, final Class<T> classDescriptor,
-            final String paramName) {
-        final Optional<DataContainerChild<? extends PathArgument, ?>> augNode = value.getChild(SAL_REMOTE_AUG_IDENTIFIER);
-        if (!augNode.isPresent() && !(augNode instanceof AugmentationNode)) {
-            return null;
-        }
-        final Optional<DataContainerChild<? extends PathArgument, ?>> enumNode =
-                ((AugmentationNode) augNode.get()).getChild(new NodeIdentifier(QName.create(SAL_REMOTE_AUGMENT, paramName)));
-        if (!enumNode.isPresent()) {
-            return null;
-        }
-        final Object rawValue = enumNode.get().getValue();
-        if (!(rawValue instanceof String)) {
-            return null;
-        }
-
-        return resolveAsEnum(classDescriptor, (String) rawValue);
-    }
-
-    /**
-     * Checks whether {@code value} is one of the string representation of enumeration {@code classDescriptor}
-     *
-     * @return enum object if string value of {@code classDescriptor} enumeration is equal to {@code value}. Other cases
-     *         null.
-     */
-    private <T> T parserURIEnumParameter(final Class<T> classDescriptor, final String value) {
-        if (Strings.isNullOrEmpty(value)) {
-            return null;
-        }
-        return resolveAsEnum(classDescriptor, value);
-    }
-
-    private <T> T resolveAsEnum(final Class<T> classDescriptor, final String value) {
-        final T[] enumConstants = classDescriptor.getEnumConstants();
-        if (enumConstants != null) {
-            for (final T enm : classDescriptor.getEnumConstants()) {
-                if (((Enum<?>) enm).name().equals(value)) {
-                    return enm;
-                }
-            }
-        }
-        return null;
-    }
-
-    private Map<String, String> resolveValuesFromUri(final String uri) {
-        final Map<String, String> result = new HashMap<>();
-        final String[] tokens = uri.split("/");
-        for (int i = 1; i < tokens.length; i++) {
-            final String[] parameterTokens = tokens[i].split("=");
-            if (parameterTokens.length == 2) {
-                result.put(parameterTokens[0], parameterTokens[1]);
-            }
-        }
-        return result;
-    }
-
-    public BigInteger getOperationalReceived() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    private MapNode makeModuleMapNode(final Set<Module> modules) {
-        Preconditions.checkNotNull(modules);
-        final Module restconfModule = getRestconfModule();
-        final DataSchemaNode moduleSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(
-                restconfModule, Draft02.RestConfModule.MODULE_LIST_SCHEMA_NODE);
-        Preconditions.checkState(moduleSchemaNode instanceof ListSchemaNode);
-
-        final CollectionNodeBuilder<MapEntryNode, MapNode> listModuleBuilder = Builders
-                .mapBuilder((ListSchemaNode) moduleSchemaNode);
-
-        for (final Module module : modules) {
-            listModuleBuilder.withChild(toModuleEntryNode(module, moduleSchemaNode));
-        }
-        return listModuleBuilder.build();
-    }
-
-    protected MapEntryNode toModuleEntryNode(final Module module, final DataSchemaNode moduleSchemaNode) {
-        Preconditions.checkArgument(moduleSchemaNode instanceof ListSchemaNode,
-                "moduleSchemaNode has to be of type ListSchemaNode");
-        final ListSchemaNode listModuleSchemaNode = (ListSchemaNode) moduleSchemaNode;
-        final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> moduleNodeValues = Builders
-                .mapEntryBuilder(listModuleSchemaNode);
-
-        List<DataSchemaNode> instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
-                (listModuleSchemaNode), "name");
-        final DataSchemaNode nameSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
-        Preconditions.checkState(nameSchemaNode instanceof LeafSchemaNode);
-        moduleNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) nameSchemaNode).withValue(module.getName())
-                .build());
-
-        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
-                (listModuleSchemaNode), "revision");
-        final DataSchemaNode revisionSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
-        Preconditions.checkState(revisionSchemaNode instanceof LeafSchemaNode);
-        final String revision = REVISION_FORMAT.format(module.getRevision());
-        moduleNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) revisionSchemaNode).withValue(revision)
-                .build());
-
-        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
-                (listModuleSchemaNode), "namespace");
-        final DataSchemaNode namespaceSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
-        Preconditions.checkState(namespaceSchemaNode instanceof LeafSchemaNode);
-        moduleNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) namespaceSchemaNode)
-                .withValue(module.getNamespace().toString()).build());
-
-        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
-                (listModuleSchemaNode), "feature");
-        final DataSchemaNode featureSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
-        Preconditions.checkState(featureSchemaNode instanceof LeafListSchemaNode);
-        final ListNodeBuilder<Object, LeafSetEntryNode<Object>> featuresBuilder = Builders
-                .leafSetBuilder((LeafListSchemaNode) featureSchemaNode);
-        for (final FeatureDefinition feature : module.getFeatures()) {
-            featuresBuilder.withChild(Builders.leafSetEntryBuilder(((LeafListSchemaNode) featureSchemaNode))
-                    .withValue(feature.getQName().getLocalName()).build());
-        }
-        moduleNodeValues.withChild(featuresBuilder.build());
-
-        return moduleNodeValues.build();
-    }
-
-    protected MapEntryNode toStreamEntryNode(final String streamName, final DataSchemaNode streamSchemaNode) {
-        Preconditions.checkArgument(streamSchemaNode instanceof ListSchemaNode,
-                "streamSchemaNode has to be of type ListSchemaNode");
-        final ListSchemaNode listStreamSchemaNode = (ListSchemaNode) streamSchemaNode;
-        final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> streamNodeValues = Builders
-                .mapEntryBuilder(listStreamSchemaNode);
-
-        List<DataSchemaNode> instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
-                (listStreamSchemaNode), "name");
-        final DataSchemaNode nameSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
-        Preconditions.checkState(nameSchemaNode instanceof LeafSchemaNode);
-        streamNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) nameSchemaNode).withValue(streamName)
-                .build());
-
-        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
-                (listStreamSchemaNode), "description");
-        final DataSchemaNode descriptionSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
-        Preconditions.checkState(descriptionSchemaNode instanceof LeafSchemaNode);
-        streamNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) nameSchemaNode)
-                .withValue("DESCRIPTION_PLACEHOLDER").build());
-
-        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
-                (listStreamSchemaNode), "replay-support");
-        final DataSchemaNode replaySupportSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
-        Preconditions.checkState(replaySupportSchemaNode instanceof LeafSchemaNode);
-        streamNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) replaySupportSchemaNode)
-                .withValue(Boolean.valueOf(true)).build());
-
-        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
-                (listStreamSchemaNode), "replay-log-creation-time");
-        final DataSchemaNode replayLogCreationTimeSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
-        Preconditions.checkState(replayLogCreationTimeSchemaNode instanceof LeafSchemaNode);
-        streamNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) replayLogCreationTimeSchemaNode)
-                .withValue("").build());
-
-        instanceDataChildrenByName = ControllerContext.findInstanceDataChildrenByName(
-                (listStreamSchemaNode), "events");
-        final DataSchemaNode eventsSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
-        Preconditions.checkState(eventsSchemaNode instanceof LeafSchemaNode);
-        streamNodeValues.withChild(Builders.leafBuilder((LeafSchemaNode) eventsSchemaNode)
-                .withValue("").build());
-
-        return streamNodeValues.build();
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfProviderImpl.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfProviderImpl.java
deleted file mode 100644 (file)
index 624d709..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl;
-
-import java.math.BigInteger;
-import java.util.Collection;
-import java.util.Collections;
-import org.opendaylight.controller.config.yang.md.sal.rest.connector.Config;
-import org.opendaylight.controller.config.yang.md.sal.rest.connector.Delete;
-import org.opendaylight.controller.config.yang.md.sal.rest.connector.Get;
-import org.opendaylight.controller.config.yang.md.sal.rest.connector.Operational;
-import org.opendaylight.controller.config.yang.md.sal.rest.connector.Post;
-import org.opendaylight.controller.config.yang.md.sal.rest.connector.Put;
-import org.opendaylight.controller.config.yang.md.sal.rest.connector.RestConnectorRuntimeMXBean;
-import org.opendaylight.controller.config.yang.md.sal.rest.connector.Rpcs;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
-import org.opendaylight.controller.sal.core.api.Broker.ProviderSession;
-import org.opendaylight.controller.sal.core.api.Provider;
-import org.opendaylight.controller.sal.core.api.model.SchemaService;
-import org.opendaylight.controller.sal.rest.api.RestConnector;
-import org.opendaylight.controller.sal.streams.websockets.WebSocketServer;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
-
-public class RestconfProviderImpl implements Provider, AutoCloseable, RestConnector, RestConnectorRuntimeMXBean {
-
-    private final StatisticsRestconfServiceWrapper stats = StatisticsRestconfServiceWrapper.getInstance();
-    private ListenerRegistration<SchemaContextListener> listenerRegistration;
-    private PortNumber port;
-    private Thread webSocketServerThread;
-
-    public void setWebsocketPort(final PortNumber port) {
-        this.port = port;
-    }
-
-    @Override
-    public void onSessionInitiated(final ProviderSession session) {
-        final DOMDataBroker domDataBroker = session.getService(DOMDataBroker.class);
-
-        BrokerFacade.getInstance().setContext(session);
-        BrokerFacade.getInstance().setDomDataBroker( domDataBroker);
-        final SchemaService schemaService = session.getService(SchemaService.class);
-        listenerRegistration = schemaService.registerSchemaContextListener(ControllerContext.getInstance());
-        BrokerFacade.getInstance().setRpcService(session.getService(DOMRpcService.class));
-
-
-        ControllerContext.getInstance().setSchemas(schemaService.getGlobalContext());
-        ControllerContext.getInstance().setMountService(session.getService(DOMMountPointService.class));
-
-        webSocketServerThread = new Thread(WebSocketServer.createInstance(port.getValue().intValue()));
-        webSocketServerThread.setName("Web socket server on port " + port);
-        webSocketServerThread.start();
-    }
-
-    @Override
-    public Collection<ProviderFunctionality> getProviderFunctionality() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public void close() {
-
-        if (listenerRegistration != null) {
-            listenerRegistration.close();
-        }
-
-        WebSocketServer.destroyInstance();
-        webSocketServerThread.interrupt();
-    }
-
-    @Override
-    public Config getConfig() {
-        final Config config = new Config();
-
-        final Get get = new Get();
-        get.setReceivedRequests(stats.getConfigGet());
-        get.setSuccessfulResponses(stats.getSuccessGetConfig());
-        get.setFailedResponses(stats.getFailureGetConfig());
-        config.setGet(get);
-
-        final Post post = new Post();
-        post.setReceivedRequests(stats.getConfigPost());
-        post.setSuccessfulResponses(stats.getSuccessPost());
-        post.setFailedResponses(stats.getFailurePost());
-        config.setPost(post);
-
-        final Put put = new Put();
-        put.setReceivedRequests(stats.getConfigPut());
-        put.setSuccessfulResponses(stats.getSuccessPut());
-        put.setFailedResponses(stats.getFailurePut());
-        config.setPut(put);
-
-        final Delete delete = new Delete();
-        delete.setReceivedRequests(stats.getConfigDelete());
-        delete.setSuccessfulResponses(stats.getSuccessDelete());
-        delete.setFailedResponses(stats.getFailureDelete());
-        config.setDelete(delete);
-
-        return config;
-    }
-
-    @Override
-    public Operational getOperational() {
-        final BigInteger opGet = stats.getOperationalGet();
-        final Operational operational = new Operational();
-        final Get get = new Get();
-        get.setReceivedRequests(opGet);
-        get.setSuccessfulResponses(stats.getSuccessGetOperational());
-        get.setFailedResponses(stats.getFailureGetOperational());
-        operational.setGet(get);
-        return operational;
-    }
-
-    @Override
-    public Rpcs getRpcs() {
-        final BigInteger rpcInvoke = stats.getRpc();
-        final Rpcs rpcs = new Rpcs();
-        rpcs.setReceivedRequests(rpcInvoke);
-        return rpcs;
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/StatisticsRestconfServiceWrapper.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/StatisticsRestconfServiceWrapper.java
deleted file mode 100644 (file)
index f4a5fbc..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl;
-
-import java.math.BigInteger;
-import java.util.concurrent.atomic.AtomicLong;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.UriInfo;
-import org.opendaylight.controller.sal.rest.api.RestconfService;
-
-public class StatisticsRestconfServiceWrapper implements RestconfService {
-
-    AtomicLong operationalGet = new AtomicLong();
-    AtomicLong configGet = new AtomicLong();
-    AtomicLong rpc = new AtomicLong();
-    AtomicLong configPost = new AtomicLong();
-    AtomicLong configPut = new AtomicLong();
-    AtomicLong configDelete = new AtomicLong();
-    AtomicLong successGetConfig = new AtomicLong();
-    AtomicLong successGetOperational = new AtomicLong();
-    AtomicLong successPost = new AtomicLong();
-    AtomicLong successPut = new AtomicLong();
-    AtomicLong successDelete = new AtomicLong();
-    AtomicLong failureGetConfig = new AtomicLong();
-    AtomicLong failureGetOperational = new AtomicLong();
-    AtomicLong failurePost = new AtomicLong();
-    AtomicLong failurePut = new AtomicLong();
-    AtomicLong failureDelete = new AtomicLong();
-
-    private static final StatisticsRestconfServiceWrapper INSTANCE = new StatisticsRestconfServiceWrapper(RestconfImpl.getInstance());
-
-    final RestconfService delegate;
-
-    private StatisticsRestconfServiceWrapper(final RestconfService delegate) {
-        this.delegate = delegate;
-    }
-
-    public static StatisticsRestconfServiceWrapper getInstance() {
-        return INSTANCE;
-    }
-
-    @Override
-    public Object getRoot() {
-        return delegate.getRoot();
-    }
-
-    @Override
-    public NormalizedNodeContext getModules(final UriInfo uriInfo) {
-        return delegate.getModules(uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext getModules(final String identifier, final UriInfo uriInfo) {
-        return delegate.getModules(identifier, uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext getModule(final String identifier, final UriInfo uriInfo) {
-        return delegate.getModule(identifier, uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext getOperations(final UriInfo uriInfo) {
-        return delegate.getOperations(uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext getOperations(final String identifier, final UriInfo uriInfo) {
-        return delegate.getOperations(identifier, uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext invokeRpc(final String identifier, final NormalizedNodeContext payload, final UriInfo uriInfo) {
-        rpc.incrementAndGet();
-        return delegate.invokeRpc(identifier, payload, uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext invokeRpc(final String identifier, final String noPayload, final UriInfo uriInfo) {
-        rpc.incrementAndGet();
-        return delegate.invokeRpc(identifier, noPayload, uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext readConfigurationData(final String identifier, final UriInfo uriInfo) {
-        configGet.incrementAndGet();
-        NormalizedNodeContext normalizedNodeContext = null;
-        try {
-            normalizedNodeContext = delegate.readConfigurationData(identifier, uriInfo);
-            if (normalizedNodeContext.getData() != null) {
-                successGetConfig.incrementAndGet();
-            }
-            else {
-                failureGetConfig.incrementAndGet();
-            }
-        } catch (Exception e) {
-            failureGetConfig.incrementAndGet();
-            throw e;
-        }
-        return normalizedNodeContext;
-    }
-
-    @Override
-    public NormalizedNodeContext readOperationalData(final String identifier, final UriInfo uriInfo) {
-        operationalGet.incrementAndGet();
-        NormalizedNodeContext normalizedNodeContext = null;
-        try {
-            normalizedNodeContext = delegate.readOperationalData(identifier, uriInfo);
-            if (normalizedNodeContext.getData() != null) {
-                successGetOperational.incrementAndGet();
-            }
-            else {
-                failureGetOperational.incrementAndGet();
-            }
-        } catch (Exception e) {
-            failureGetOperational.incrementAndGet();
-            throw e;
-        }
-        return normalizedNodeContext;
-    }
-
-    @Override
-    public Response updateConfigurationData(final String identifier, final NormalizedNodeContext payload) {
-        configPut.incrementAndGet();
-        Response response = null;
-        try {
-            response = delegate.updateConfigurationData(identifier, payload);
-            if (response.getStatus() == Status.OK.getStatusCode()) {
-                successPut.incrementAndGet();
-            }
-            else {
-                failurePut.incrementAndGet();
-            }
-        } catch (Exception e) {
-            failurePut.incrementAndGet();
-            throw e;
-        }
-        return response;
-    }
-
-    @Override
-    public Response createConfigurationData(final String identifier, final NormalizedNodeContext payload, final UriInfo uriInfo) {
-        configPost.incrementAndGet();
-        Response response = null;
-        try {
-            response = delegate.createConfigurationData(identifier, payload, uriInfo);
-            if (response.getStatus() == Status.OK.getStatusCode()) {
-                successPost.incrementAndGet();
-            }
-            else {
-                failurePost.incrementAndGet();
-            }
-        } catch (Exception e) {
-            failurePost.incrementAndGet();
-            throw e;
-        }
-        return response;
-    }
-
-    @Override
-    public Response createConfigurationData(final NormalizedNodeContext payload, final UriInfo uriInfo) {
-        configPost.incrementAndGet();
-        Response response = null;
-        try {
-            response = delegate.createConfigurationData(payload, uriInfo);
-            if (response.getStatus() == Status.OK.getStatusCode()) {
-                successPost.incrementAndGet();
-            }
-            else {
-                failurePost.incrementAndGet();
-            }
-        }catch (Exception e) {
-            failurePost.incrementAndGet();
-            throw e;
-        }
-        return response;
-    }
-
-    @Override
-    public Response deleteConfigurationData(final String identifier) {
-        configDelete.incrementAndGet();
-        Response response = null;
-        try {
-            response = delegate.deleteConfigurationData(identifier);
-            if (response.getStatus() == Status.OK.getStatusCode()) {
-                successDelete.incrementAndGet();
-            }
-            else {
-                failureDelete.incrementAndGet();
-            }
-        } catch (Exception e) {
-            failureDelete.incrementAndGet();
-            throw e;
-        }
-        return response;
-    }
-
-    @Override
-    public Response subscribeToStream(final String identifier, final UriInfo uriInfo) {
-        return delegate.subscribeToStream(identifier, uriInfo);
-    }
-
-    @Override
-    public NormalizedNodeContext getAvailableStreams(final UriInfo uriInfo) {
-        return delegate.getAvailableStreams(uriInfo);
-    }
-
-    public BigInteger getConfigDelete() {
-        return BigInteger.valueOf(configDelete.get());
-    }
-
-    public BigInteger getConfigGet() {
-        return BigInteger.valueOf(configGet.get());
-    }
-
-    public BigInteger getConfigPost() {
-        return BigInteger.valueOf(configPost.get());
-    }
-
-    public BigInteger getConfigPut() {
-        return BigInteger.valueOf(configPut.get());
-    }
-
-    public BigInteger getOperationalGet() {
-        return BigInteger.valueOf(operationalGet.get());
-    }
-
-    public BigInteger getRpc() {
-        return BigInteger.valueOf(rpc.get());
-    }
-
-    public BigInteger getSuccessGetConfig() {
-        return BigInteger.valueOf(successGetConfig.get());
-    }
-
-    public BigInteger getSuccessGetOperational() {
-        return BigInteger.valueOf(successGetOperational.get());
-    }
-
-    public BigInteger getSuccessPost() {
-        return BigInteger.valueOf(successPost.get());
-    }
-
-    public BigInteger getSuccessPut() {
-        return BigInteger.valueOf(successPut.get());
-    }
-
-    public BigInteger getSuccessDelete() {
-        return BigInteger.valueOf(successDelete.get());
-    }
-
-    public BigInteger getFailureGetConfig() {
-        return BigInteger.valueOf(failureGetConfig.get());
-    }
-
-    public BigInteger getFailureGetOperational() {
-        return BigInteger.valueOf(failureGetOperational.get());
-    }
-
-    public BigInteger getFailurePost() {
-        return BigInteger.valueOf(failurePost.get());
-    }
-
-    public BigInteger getFailurePut() {
-        return BigInteger.valueOf(failurePut.get());
-    }
-
-    public BigInteger getFailureDelete() {
-        return BigInteger.valueOf(failureDelete.get());
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/WriterParameters.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/WriterParameters.java
deleted file mode 100644 (file)
index 7213767..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2015 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.sal.restconf.impl;
-
-import com.google.common.base.Optional;
-
-public class WriterParameters {
-    private final Optional<Integer> depth;
-    private final boolean prettyPrint;
-
-    private WriterParameters(final WriterParametersBuilder builder) {
-        this.prettyPrint = builder.prettyPrint;
-        this.depth = builder.depth;
-    }
-
-    public Optional<Integer> getDepth() {
-        return depth;
-    }
-
-    public boolean isPrettyPrint() {
-        return prettyPrint;
-    }
-
-    public static class WriterParametersBuilder {
-        private Optional<Integer> depth = Optional.absent();
-        private boolean prettyPrint;
-
-        public WriterParametersBuilder() {
-        }
-
-        public Optional<Integer> getDepth() {
-            return depth;
-        }
-
-        public WriterParametersBuilder setDepth(final int depth) {
-            this.depth = Optional.of(depth);
-            return this;
-        }
-
-        public boolean isPrettyPrint() {
-            return prettyPrint;
-        }
-
-        public WriterParametersBuilder setPrettyPrint(final boolean prettyPrint) {
-            this.prettyPrint = prettyPrint;
-            return this;
-        }
-
-        public WriterParameters build() {
-            return new WriterParameters(this);
-        }
-    }
-}
-
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/package-info.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/package-info.java
deleted file mode 100644 (file)
index 120c67d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl;
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/listeners/ListenerAdapter.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/listeners/ListenerAdapter.java
deleted file mode 100644 (file)
index bd33a2f..0000000
+++ /dev/null
@@ -1,551 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.streams.listeners;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Preconditions;
-import com.google.common.eventbus.AsyncEventBus;
-import com.google.common.eventbus.EventBus;
-import com.google.common.eventbus.Subscribe;
-import io.netty.channel.Channel;
-import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
-import io.netty.util.internal.ConcurrentSet;
-import java.io.ByteArrayOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.text.SimpleDateFormat;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.concurrent.Executors;
-import java.util.regex.Pattern;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * {@link ListenerAdapter} is responsible to track events, which occurred by changing data in data source.
- */
-public class ListenerAdapter implements DOMDataChangeListener {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ListenerAdapter.class);
-    private static final DocumentBuilderFactory DBF = DocumentBuilderFactory.newInstance();
-    private static final TransformerFactory FACTORY = TransformerFactory.newInstance();
-    private static final Pattern RFC3339_PATTERN = Pattern.compile("(\\d\\d)(\\d\\d)$");
-
-    private final SimpleDateFormat rfc3339 = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
-
-    private final YangInstanceIdentifier path;
-    private ListenerRegistration<DOMDataChangeListener> registration;
-    private final String streamName;
-    private Set<Channel> subscribers = new ConcurrentSet<>();
-    private final EventBus eventBus;
-    private final EventBusChangeRecorder eventBusChangeRecorder;
-
-    /**
-     * Creates new {@link ListenerAdapter} listener specified by path and stream name.
-     *
-     * @param path
-     *            Path to data in data store.
-     * @param streamName
-     *            The name of the stream.
-     */
-    ListenerAdapter(final YangInstanceIdentifier path, final String streamName) {
-        Preconditions.checkNotNull(path);
-        Preconditions.checkArgument(streamName != null && !streamName.isEmpty());
-        this.path = path;
-        this.streamName = streamName;
-        eventBus = new AsyncEventBus(Executors.newSingleThreadExecutor());
-        eventBusChangeRecorder = new EventBusChangeRecorder();
-        eventBus.register(eventBusChangeRecorder);
-    }
-
-    @Override
-    public void onDataChanged(final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change) {
-        // TODO Auto-generated method stub
-
-        if (!change.getCreatedData().isEmpty() || !change.getUpdatedData().isEmpty()
-                || !change.getRemovedPaths().isEmpty()) {
-            final String xml = prepareXmlFrom(change);
-            final Event event = new Event(EventType.NOTIFY);
-            event.setData(xml);
-            eventBus.post(event);
-        }
-    }
-
-    /**
-     * Tracks events of data change by customer.
-     */
-    private final class EventBusChangeRecorder {
-        @Subscribe
-        public void recordCustomerChange(final Event event) {
-            if (event.getType() == EventType.REGISTER) {
-                final Channel subscriber = event.getSubscriber();
-                if (!subscribers.contains(subscriber)) {
-                    subscribers.add(subscriber);
-                }
-            } else if (event.getType() == EventType.DEREGISTER) {
-                subscribers.remove(event.getSubscriber());
-                Notificator.removeListenerIfNoSubscriberExists(ListenerAdapter.this);
-            } else if (event.getType() == EventType.NOTIFY) {
-                for (final Channel subscriber : subscribers) {
-                    if (subscriber.isActive()) {
-                        LOG.debug("Data are sent to subscriber {}:", subscriber.remoteAddress());
-                        subscriber.writeAndFlush(new TextWebSocketFrame(event.getData()));
-                    } else {
-                        LOG.debug("Subscriber {} is removed - channel is not active yet.", subscriber.remoteAddress());
-                        subscribers.remove(subscriber);
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Represents event of specific {@link EventType} type, holds data and {@link Channel} subscriber.
-     */
-    private final class Event {
-        private final EventType type;
-        private Channel subscriber;
-        private String data;
-
-        /**
-         * Creates new event specified by {@link EventType} type.
-         *
-         * @param type
-         *            EventType
-         */
-        public Event(final EventType type) {
-            this.type = type;
-        }
-
-        /**
-         * Gets the {@link Channel} subscriber.
-         *
-         * @return Channel
-         */
-        public Channel getSubscriber() {
-            return subscriber;
-        }
-
-        /**
-         * Sets subscriber for event.
-         *
-         * @param subscriber
-         *            Channel
-         */
-        public void setSubscriber(final Channel subscriber) {
-            this.subscriber = subscriber;
-        }
-
-        /**
-         * Gets event String.
-         *
-         * @return String representation of event data.
-         */
-        public String getData() {
-            return data;
-        }
-
-        /**
-         * Sets event data.
-         *
-         * @param data String.
-         */
-        public void setData(final String data) {
-            this.data = data;
-        }
-
-        /**
-         * Gets event type.
-         *
-         * @return The type of the event.
-         */
-        public EventType getType() {
-            return type;
-        }
-    }
-
-    /**
-     * Type of the event.
-     */
-    private enum EventType {
-        REGISTER,
-        DEREGISTER,
-        NOTIFY;
-    }
-
-    /**
-     * Prepare data in printable form and transform it to String.
-     *
-     * @param change
-     *            DataChangeEvent
-     * @return Data in printable form.
-     */
-    private String prepareXmlFrom(final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change) {
-        final Document doc = createDocument();
-        final Element notificationElement = doc.createElementNS("urn:ietf:params:xml:ns:netconf:notification:1.0",
-                "notification");
-        doc.appendChild(notificationElement);
-
-        final Element eventTimeElement = doc.createElement("eventTime");
-        eventTimeElement.setTextContent(toRFC3339(new Date()));
-        notificationElement.appendChild(eventTimeElement);
-
-        final Element dataChangedNotificationEventElement = doc.createElementNS(
-                "urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote", "data-changed-notification");
-        addValuesToDataChangedNotificationEventElement(doc, dataChangedNotificationEventElement, change);
-        notificationElement.appendChild(dataChangedNotificationEventElement);
-
-        try {
-            final ByteArrayOutputStream out = new ByteArrayOutputStream();
-            final Transformer transformer = FACTORY.newTransformer();
-            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
-            transformer.setOutputProperty(OutputKeys.METHOD, "xml");
-            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-            transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
-            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
-            transformer.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(out, Charsets.UTF_8)));
-            final byte[] charData = out.toByteArray();
-            return new String(charData, "UTF-8");
-        } catch (TransformerException | UnsupportedEncodingException e) {
-            final String msg = "Error during transformation of Document into String";
-            LOG.error(msg, e);
-            return msg;
-        }
-    }
-
-    /**
-     * Formats data specified by RFC3339.
-     *
-     * @param d
-     *            Date
-     * @return Data specified by RFC3339.
-     */
-    private String toRFC3339(final Date d) {
-        return RFC3339_PATTERN.matcher(rfc3339.format(d)).replaceAll("$1:$2");
-    }
-
-    /**
-     * Creates {@link Document} document.
-     * @return {@link Document} document.
-     */
-    private Document createDocument() {
-        final DocumentBuilder bob;
-        try {
-            bob = DBF.newDocumentBuilder();
-        } catch (final ParserConfigurationException e) {
-            return null;
-        }
-        return bob.newDocument();
-    }
-
-    /**
-     * Adds values to data changed notification event element.
-     *
-     * @param doc
-     *            {@link Document}
-     * @param dataChangedNotificationEventElement
-     *            {@link Element}
-     * @param change
-     *            {@link AsyncDataChangeEvent}
-     */
-    private void addValuesToDataChangedNotificationEventElement(final Document doc,
-            final Element dataChangedNotificationEventElement,
-            final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change) {
-        addValuesFromDataToElement(doc, change.getCreatedData().keySet(), dataChangedNotificationEventElement,
-                Operation.CREATED);
-        if (change.getCreatedData().isEmpty()) {
-            addValuesFromDataToElement(doc, change.getUpdatedData().keySet(), dataChangedNotificationEventElement,
-                    Operation.UPDATED);
-        }
-        addValuesFromDataToElement(doc, change.getRemovedPaths(), dataChangedNotificationEventElement,
-                Operation.DELETED);
-    }
-
-    /**
-     * Adds values from data to element.
-     *
-     * @param doc
-     *            {@link Document}
-     * @param data
-     *            Set of {@link YangInstanceIdentifier}.
-     * @param element
-     *            {@link Element}
-     * @param operation
-     *            {@link Operation}
-     */
-    private void addValuesFromDataToElement(final Document doc, final Set<YangInstanceIdentifier> data, final Element element,
-            final Operation operation) {
-        if (data == null || data.isEmpty()) {
-            return;
-        }
-        for (final YangInstanceIdentifier path : data) {
-            if (!ControllerContext.getInstance().isNodeMixin(path)) {
-                final Node node = createDataChangeEventElement(doc, path, operation);
-                element.appendChild(node);
-            }
-        }
-    }
-
-
-    /**
-     * Creates changed event element from data.
-     *
-     * @param doc
-     *            {@link Document}
-     * @param path
-     *            Path to data in data store.
-     * @param operation
-     *            {@link Operation}
-     * @return {@link Node} node represented by changed event element.
-     */
-    private Node createDataChangeEventElement(final Document doc, final YangInstanceIdentifier path, final Operation operation) {
-        final Element dataChangeEventElement = doc.createElement("data-change-event");
-        final Element pathElement = doc.createElement("path");
-        addPathAsValueToElement(path, pathElement);
-        dataChangeEventElement.appendChild(pathElement);
-
-        final Element operationElement = doc.createElement("operation");
-        operationElement.setTextContent(operation.value);
-        dataChangeEventElement.appendChild(operationElement);
-
-        return dataChangeEventElement;
-    }
-
-
-    /**
-     * Adds path as value to element.
-     *
-     * @param path
-     *            Path to data in data store.
-     * @param element
-     *            {@link Element}
-     */
-    private void addPathAsValueToElement(final YangInstanceIdentifier path, final Element element) {
-        // Map< key = namespace, value = prefix>
-        final Map<String, String> prefixes = new HashMap<>();
-        final YangInstanceIdentifier normalizedPath = ControllerContext.getInstance().toXpathRepresentation(path);
-        final StringBuilder textContent = new StringBuilder();
-
-        // FIXME: BUG-1281: this is duplicated code from yangtools (BUG-1275)
-        for (final PathArgument pathArgument : normalizedPath.getPathArguments()) {
-            if (pathArgument instanceof YangInstanceIdentifier.AugmentationIdentifier) {
-                continue;
-            }
-            textContent.append("/");
-            writeIdentifierWithNamespacePrefix(element, textContent, pathArgument.getNodeType(), prefixes);
-            if (pathArgument instanceof NodeIdentifierWithPredicates) {
-                final Map<QName, Object> predicates = ((NodeIdentifierWithPredicates) pathArgument).getKeyValues();
-                for (final QName keyValue : predicates.keySet()) {
-                    final String predicateValue = String.valueOf(predicates.get(keyValue));
-                    textContent.append("[");
-                    writeIdentifierWithNamespacePrefix(element, textContent, keyValue, prefixes);
-                    textContent.append("='");
-                    textContent.append(predicateValue);
-                    textContent.append("'");
-                    textContent.append("]");
-                }
-            } else if (pathArgument instanceof NodeWithValue) {
-                textContent.append("[.='");
-                textContent.append(((NodeWithValue) pathArgument).getValue());
-                textContent.append("'");
-                textContent.append("]");
-            }
-        }
-        element.setTextContent(textContent.toString());
-    }
-
-    /**
-     * Writes identifier that consists of prefix and QName.
-     *
-     * @param element
-     *            {@link Element}
-     * @param textContent
-     *            StringBuilder
-     * @param qName
-     *            QName
-     * @param prefixes
-     *            Map of namespaces and prefixes.
-     */
-    private static void writeIdentifierWithNamespacePrefix(final Element element, final StringBuilder textContent,
-            final QName qName, final Map<String, String> prefixes) {
-        final String namespace = qName.getNamespace().toString();
-        String prefix = prefixes.get(namespace);
-        if (prefix == null) {
-            prefix = generateNewPrefix(prefixes.values());
-        }
-
-        element.setAttribute("xmlns:" + prefix, namespace);
-        textContent.append(prefix);
-        prefixes.put(namespace, prefix);
-
-        textContent.append(":");
-        textContent.append(qName.getLocalName());
-    }
-
-    /**
-     * Generates new prefix which consists of four random characters <a-z>.
-     *
-     * @param prefixes
-     *            Collection of prefixes.
-     * @return New prefix which consists of four random characters <a-z>.
-     */
-    private static String generateNewPrefix(final Collection<String> prefixes) {
-        StringBuilder result = null;
-        final Random random = new Random();
-        do {
-            result = new StringBuilder();
-            for (int i = 0; i < 4; i++) {
-                final int randomNumber = 0x61 + (Math.abs(random.nextInt()) % 26);
-                result.append(Character.toChars(randomNumber));
-            }
-        } while (prefixes.contains(result.toString()));
-
-        return result.toString();
-    }
-
-    /**
-     * Gets path pointed to data in data store.
-     *
-     * @return Path pointed to data in data store.
-     */
-    public YangInstanceIdentifier getPath() {
-        return path;
-    }
-
-    /**
-     * Sets {@link ListenerRegistration} registration.
-     *
-     * @param registration
-     *            ListenerRegistration<DataChangeListener>
-     */
-    public void setRegistration(final ListenerRegistration<DOMDataChangeListener> registration) {
-        this.registration = registration;
-    }
-
-    /**
-     * Gets the name of the stream.
-     *
-     * @return The name of the stream.
-     */
-    public String getStreamName() {
-        return streamName;
-    }
-
-    /**
-     * Removes all subscribers and unregisters event bus change recorder form event bus.
-     */
-    public void close() throws Exception {
-        subscribers = new ConcurrentSet<>();
-        registration.close();
-        registration = null;
-        eventBus.unregister(eventBusChangeRecorder);
-    }
-
-    /**
-     * Checks if {@link ListenerRegistration} registration exist.
-     *
-     * @return True if exist, false otherwise.
-     */
-    public boolean isListening() {
-        return registration == null ? false : true;
-    }
-
-    /**
-     * Creates event of type {@link EventType#REGISTER}, set {@link Channel} subscriber to the event and post event into
-     * event bus.
-     *
-     * @param subscriber
-     *            Channel
-     */
-    public void addSubscriber(final Channel subscriber) {
-        if (!subscriber.isActive()) {
-            LOG.debug("Channel is not active between websocket server and subscriber {}" + subscriber.remoteAddress());
-        }
-        final Event event = new Event(EventType.REGISTER);
-        event.setSubscriber(subscriber);
-        eventBus.post(event);
-    }
-
-    /**
-     * Creates event of type {@link EventType#DEREGISTER}, sets {@link Channel} subscriber to the event and posts event
-     * into event bus.
-     *
-     * @param subscriber
-     */
-    public void removeSubscriber(final Channel subscriber) {
-        LOG.debug("Subscriber {} is removed.", subscriber.remoteAddress());
-        final Event event = new Event(EventType.DEREGISTER);
-        event.setSubscriber(subscriber);
-        eventBus.post(event);
-    }
-
-    /**
-     * Checks if exists at least one {@link Channel} subscriber.
-     *
-     * @return True if exist at least one {@link Channel} subscriber, false otherwise.
-     */
-    public boolean hasSubscribers() {
-        return !subscribers.isEmpty();
-    }
-
-    /**
-     * Consists of two types {@link Store#CONFIG} and {@link Store#OPERATION}.
-     */
-    private static enum Store {
-        CONFIG("config"),
-        OPERATION("operation");
-
-        private final String value;
-
-        private Store(final String value) {
-            this.value = value;
-        }
-    }
-
-    /**
-     * Consists of three types {@link Operation#CREATED}, {@link Operation#UPDATED} and {@link Operation#DELETED}.
-     */
-    private static enum Operation {
-        CREATED("created"),
-        UPDATED("updated"),
-        DELETED("deleted");
-
-        private final String value;
-
-        private Operation(final String value) {
-            this.value = value;
-        }
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/listeners/Notificator.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/listeners/Notificator.java
deleted file mode 100644 (file)
index 17565a6..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.streams.listeners;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-
-/**
- * {@link Notificator} is responsible to create, remove and find
- * {@link ListenerAdapter} listener.
- */
-public class Notificator {
-
-    private static Map<String, ListenerAdapter> listenersByStreamName = new ConcurrentHashMap<>();
-    private static final Lock lock = new ReentrantLock();
-
-    private Notificator() {
-    }
-
-    /**
-     * Returns list of all stream names
-     */
-    public static Set<String> getStreamNames() {
-        return listenersByStreamName.keySet();
-    }
-
-    /**
-     * Gets {@link ListenerAdapter} specified by stream name.
-     *
-     * @param streamName
-     *            The name of the stream.
-     * @return {@link ListenerAdapter} specified by stream name.
-     */
-    public static ListenerAdapter getListenerFor(String streamName) {
-        return listenersByStreamName.get(streamName);
-    }
-
-    /**
-     * Checks if the listener specified by {@link YangInstanceIdentifier} path exist.
-     *
-     * @param streamName
-     * @return True if the listener exist, false otherwise.
-     */
-    public static boolean existListenerFor(String streamName) {
-        return listenersByStreamName.containsKey(streamName);
-    }
-
-    /**
-     * Creates new {@link ListenerAdapter} listener from {@link YangInstanceIdentifier} path and stream name.
-     *
-     * @param path
-     *            Path to data in data repository.
-     * @param streamName
-     *            The name of the stream.
-     * @return New {@link ListenerAdapter} listener from {@link YangInstanceIdentifier} path and stream name.
-     */
-    public static ListenerAdapter createListener(YangInstanceIdentifier path, String streamName) {
-        ListenerAdapter listener = new ListenerAdapter(path, streamName);
-        try {
-            lock.lock();
-            listenersByStreamName.put(streamName, listener);
-        } finally {
-            lock.unlock();
-        }
-        return listener;
-    }
-
-    /**
-     * Looks for listener determined by {@link YangInstanceIdentifier} path and removes it.
-     * Creates String representation of stream name from URI. Removes slash from URI in start and end position.
-     *
-     * @param uri
-     *            URI for creation stream name.
-     * @return String representation of stream name.
-     */
-    public static String createStreamNameFromUri(String uri) {
-        if (uri == null) {
-            return null;
-        }
-        String result = uri;
-        if (result.startsWith("/")) {
-            result = result.substring(1);
-        }
-        if (result.endsWith("/")) {
-            result = result.substring(0, result.length()-1);
-        }
-        return result;
-    }
-
-    /**
-     * Removes all listeners.
-     */
-    public static void removeAllListeners() {
-        for (ListenerAdapter listener : listenersByStreamName.values()) {
-            try {
-                listener.close();
-            } catch (Exception e) {
-            }
-        }
-        try {
-            lock.lock();
-            listenersByStreamName = new ConcurrentHashMap<>();
-        } finally {
-            lock.unlock();
-        }
-    }
-
-    /**
-     * Checks if listener has at least one subscriber. In case it doesn't have any, delete listener.
-     *
-     * @param listener
-     *            ListenerAdapter
-     */
-    public static void removeListenerIfNoSubscriberExists(ListenerAdapter listener) {
-        if (!listener.hasSubscribers()) {
-            deleteListener(listener);
-        }
-    }
-
-    /**
-     * Delete {@link ListenerAdapter} listener specified in parameter.
-     *
-     * @param listener
-     *            ListenerAdapter
-     */
-    private static void deleteListener(ListenerAdapter listener) {
-        if (listener != null) {
-            try {
-                listener.close();
-            } catch (Exception e) {
-            }
-            try {
-                lock.lock();
-                listenersByStreamName.remove(listener.getStreamName());
-            } finally {
-                lock.unlock();
-            }
-        }
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/websockets/WebSocketServer.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/websockets/WebSocketServer.java
deleted file mode 100644 (file)
index 3f70c5a..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2014, 2015 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.sal.streams.websockets;
-
-import com.google.common.base.Preconditions;
-import io.netty.bootstrap.ServerBootstrap;
-import io.netty.channel.Channel;
-import io.netty.channel.EventLoopGroup;
-import io.netty.channel.nio.NioEventLoopGroup;
-import io.netty.channel.socket.nio.NioServerSocketChannel;
-import org.opendaylight.controller.sal.streams.listeners.Notificator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * {@link WebSocketServer} is responsible to start and stop web socket server
- */
-public class WebSocketServer implements Runnable {
-
-    private static final Logger logger = LoggerFactory.getLogger(WebSocketServer.class);
-    public static final int DEFAULT_PORT = 8181;
-    private EventLoopGroup bossGroup;
-    private EventLoopGroup workerGroup;
-    private static WebSocketServer instance = null;
-    private int port = DEFAULT_PORT;
-
-    private WebSocketServer(int port) {
-        this.port = port;
-    }
-
-    /**
-     * Create instance of {@link WebSocketServer}
-     *
-     * @param port
-     *            TCP port used for this server
-     * @return instance of {@link WebSocketServer}
-     */
-    public static WebSocketServer createInstance(int port) {
-        Preconditions.checkState(instance == null, "createInstance() has already been called");
-        Preconditions.checkArgument(port > 1024, "Privileged port (below 1024) is not allowed");
-
-        instance = new WebSocketServer(port);
-        return instance;
-    }
-
-    /**
-     * Return websocket TCP port
-     */
-    public int getPort() {
-        return port;
-    }
-
-    /**
-     * Get instance of {@link WebSocketServer} created by {@link #createInstance(int)}
-     *
-     * @return instance of {@link WebSocketServer}
-     */
-    public static WebSocketServer getInstance() {
-        Preconditions.checkNotNull(instance, "createInstance() must be called prior to getInstance()");
-        return instance;
-    }
-
-    /**
-     * Destroy this already created instance
-     */
-    public static void destroyInstance() {
-        Preconditions.checkState(instance != null, "createInstance() must be called prior to destroyInstance()");
-
-        instance.stop();
-        instance = null;
-    }
-
-    @Override
-    public void run() {
-        bossGroup = new NioEventLoopGroup();
-        workerGroup = new NioEventLoopGroup();
-        try {
-            ServerBootstrap b = new ServerBootstrap();
-            b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
-                    .childHandler(new WebSocketServerInitializer());
-
-            Channel ch = b.bind(port).sync().channel();
-            logger.info("Web socket server started at port {}.", port);
-
-            ch.closeFuture().sync();
-        } catch (InterruptedException e) {
-            // NOOP
-        } finally {
-            stop();
-        }
-    }
-
-    /**
-     * Stops the web socket server and removes all listeners.
-     */
-    private void stop() {
-        Notificator.removeAllListeners();
-        if (bossGroup != null) {
-            bossGroup.shutdownGracefully();
-            bossGroup = null;
-        }
-        if (workerGroup != null) {
-            workerGroup.shutdownGracefully();
-            workerGroup = null;
-        }
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/websockets/WebSocketServerHandler.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/websockets/WebSocketServerHandler.java
deleted file mode 100644 (file)
index 18ecd90..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (c) 2014, 2015 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.sal.streams.websockets;
-
-import static io.netty.handler.codec.http.HttpHeaders.isKeepAlive;
-import static io.netty.handler.codec.http.HttpHeaders.setContentLength;
-import static io.netty.handler.codec.http.HttpHeaders.Names.HOST;
-import static io.netty.handler.codec.http.HttpMethod.GET;
-import static io.netty.handler.codec.http.HttpResponseStatus.BAD_REQUEST;
-import static io.netty.handler.codec.http.HttpResponseStatus.FORBIDDEN;
-import static io.netty.handler.codec.http.HttpResponseStatus.INTERNAL_SERVER_ERROR;
-import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
-import io.netty.channel.ChannelFuture;
-import io.netty.channel.ChannelFutureListener;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.SimpleChannelInboundHandler;
-import io.netty.handler.codec.http.DefaultFullHttpResponse;
-import io.netty.handler.codec.http.FullHttpRequest;
-import io.netty.handler.codec.http.FullHttpResponse;
-import io.netty.handler.codec.http.HttpRequest;
-import io.netty.handler.codec.http.websocketx.CloseWebSocketFrame;
-import io.netty.handler.codec.http.websocketx.PingWebSocketFrame;
-import io.netty.handler.codec.http.websocketx.PongWebSocketFrame;
-import io.netty.handler.codec.http.websocketx.WebSocketFrame;
-import io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker;
-import io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory;
-import io.netty.util.CharsetUtil;
-import java.io.IOException;
-import org.opendaylight.controller.sal.streams.listeners.ListenerAdapter;
-import org.opendaylight.controller.sal.streams.listeners.Notificator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * {@link WebSocketServerHandler} is implementation of {@link SimpleChannelInboundHandler} which allow handle
- * {@link FullHttpRequest} and {@link WebSocketFrame} messages.
- */
-public class WebSocketServerHandler extends SimpleChannelInboundHandler<Object> {
-
-    private static final Logger logger = LoggerFactory.getLogger(WebSocketServerHandler.class);
-
-    private WebSocketServerHandshaker handshaker;
-
-    @Override
-    protected void channelRead0(final ChannelHandlerContext ctx, final Object msg) throws Exception {
-        if (msg instanceof FullHttpRequest) {
-            handleHttpRequest(ctx, (FullHttpRequest) msg);
-        } else if (msg instanceof WebSocketFrame) {
-            handleWebSocketFrame(ctx, (WebSocketFrame) msg);
-        }
-    }
-
-    /**
-     * Checks if HTTP request method is GET and if is possible to decode HTTP result of request.
-     *
-     * @param ctx
-     *            ChannelHandlerContext
-     * @param req
-     *            FullHttpRequest
-     */
-    private void handleHttpRequest(final ChannelHandlerContext ctx, final FullHttpRequest req) throws Exception {
-        // Handle a bad request.
-        if (!req.getDecoderResult().isSuccess()) {
-            sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, BAD_REQUEST));
-            return;
-        }
-
-        // Allow only GET methods.
-        if (req.getMethod() != GET) {
-            sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, FORBIDDEN));
-            return;
-        }
-
-        String streamName = Notificator.createStreamNameFromUri(req.getUri());
-        ListenerAdapter listener = Notificator.getListenerFor(streamName);
-        if (listener != null) {
-            listener.addSubscriber(ctx.channel());
-            logger.debug("Subscriber successfully registered.");
-        } else {
-            logger.error("Listener for stream with name '{}' was not found.", streamName);
-            sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, INTERNAL_SERVER_ERROR));
-        }
-
-        // Handshake
-        WebSocketServerHandshakerFactory wsFactory = new WebSocketServerHandshakerFactory(getWebSocketLocation(req),
-                null, false);
-        handshaker = wsFactory.newHandshaker(req);
-        if (handshaker == null) {
-            WebSocketServerHandshakerFactory.sendUnsupportedVersionResponse(ctx.channel());
-        } else {
-            handshaker.handshake(ctx.channel(), req);
-        }
-
-    }
-
-    /**
-     * Checks response status, send response and close connection if necessary
-     *
-     * @param ctx
-     *            ChannelHandlerContext
-     * @param req
-     *            HttpRequest
-     * @param res
-     *            FullHttpResponse
-     */
-    private static void sendHttpResponse(final ChannelHandlerContext ctx, final HttpRequest req,
-            final FullHttpResponse res) {
-        // Generate an error page if response getStatus code is not OK (200).
-        if (res.getStatus().code() != 200) {
-            ByteBuf buf = Unpooled.copiedBuffer(res.getStatus().toString(), CharsetUtil.UTF_8);
-            res.content().writeBytes(buf);
-            buf.release();
-            setContentLength(res, res.content().readableBytes());
-        }
-
-        // Send the response and close the connection if necessary.
-        ChannelFuture f = ctx.channel().writeAndFlush(res);
-        if (!isKeepAlive(req) || res.getStatus().code() != 200) {
-            f.addListener(ChannelFutureListener.CLOSE);
-        }
-    }
-
-    /**
-     * Handles web socket frame.
-     *
-     * @param ctx
-     *            {@link ChannelHandlerContext}
-     * @param frame
-     *            {@link WebSocketFrame}
-     */
-    private void handleWebSocketFrame(final ChannelHandlerContext ctx, final WebSocketFrame frame) throws IOException {
-        if (frame instanceof CloseWebSocketFrame) {
-            handshaker.close(ctx.channel(), (CloseWebSocketFrame) frame.retain());
-            String streamName = Notificator.createStreamNameFromUri(((CloseWebSocketFrame) frame).reasonText());
-            ListenerAdapter listener = Notificator.getListenerFor(streamName);
-            if (listener != null) {
-                listener.removeSubscriber(ctx.channel());
-                logger.debug("Subscriber successfully registered.");
-            }
-            Notificator.removeListenerIfNoSubscriberExists(listener);
-            return;
-        } else if (frame instanceof PingWebSocketFrame) {
-            ctx.channel().write(new PongWebSocketFrame(frame.content().retain()));
-            return;
-        }
-    }
-
-    @Override
-    public void exceptionCaught(final ChannelHandlerContext ctx, final Throwable cause) throws Exception {
-        if (cause instanceof java.nio.channels.ClosedChannelException == false) {
-            // cause.printStackTrace();
-        }
-        ctx.close();
-    }
-
-    /**
-     * Get web socket location from HTTP request.
-     *
-     * @param req
-     *            HTTP request from which the location will be returned
-     * @return String representation of web socket location.
-     */
-    private static String getWebSocketLocation(final HttpRequest req) {
-        return "ws://" + req.headers().get(HOST) + req.getUri();
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/websockets/WebSocketServerInitializer.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/streams/websockets/WebSocketServerInitializer.java
deleted file mode 100644 (file)
index 1f265e6..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2014, 2015 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.sal.streams.websockets;
-
-import io.netty.channel.ChannelInitializer;
-import io.netty.channel.ChannelPipeline;
-import io.netty.channel.socket.SocketChannel;
-import io.netty.handler.codec.http.HttpObjectAggregator;
-import io.netty.handler.codec.http.HttpServerCodec;
-
-/**
- * {@link WebSocketServerInitializer} is used to setup the {@link ChannelPipeline} of a {@link io.netty.channel.Channel}
- * .
- */
-public class WebSocketServerInitializer extends ChannelInitializer<SocketChannel> {
-
-    @Override
-    protected void initChannel(final SocketChannel ch) throws Exception {
-        ChannelPipeline pipeline = ch.pipeline();
-        pipeline.addLast("codec-http", new HttpServerCodec());
-        pipeline.addLast("aggregator", new HttpObjectAggregator(65536));
-        pipeline.addLast("handler", new WebSocketServerHandler());
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/resources/WEB-INF/web.xml b/opendaylight/md-sal/sal-rest-connector/src/main/resources/WEB-INF/web.xml
deleted file mode 100644 (file)
index 95960b2..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
-    version="3.0">
-
-    <servlet>
-        <servlet-name>JAXRSRestconf</servlet-name>
-        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
-        <init-param>
-            <param-name>javax.ws.rs.Application</param-name>
-            <param-value>org.opendaylight.controller.sal.rest.impl.RestconfApplication</param-value>
-        </init-param>
-        <!-- AAA Auth Filter -->
-        <init-param>
-            <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
-            <param-value> org.opendaylight.aaa.sts.TokenAuthFilter</param-value>
-        </init-param>
-        <load-on-startup>1</load-on-startup>
-    </servlet>
-
-    <servlet-mapping>
-        <servlet-name>JAXRSRestconf</servlet-name>
-        <url-pattern>/*</url-pattern>
-    </servlet-mapping>
-
-    <filter>
-        <filter-name>GzipFilter</filter-name>
-        <filter-class>org.eclipse.jetty.servlets.GzipFilter</filter-class>
-        <init-param>
-            <param-name>mimeTypes</param-name>
-            <param-value>application/xml,application/yang.data+xml,xml,application/json,application/yang.data+json</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <filter-name>GzipFilter</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
-    <filter>
-        <filter-name>cross-origin-restconf</filter-name>
-        <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
-        <init-param>
-            <param-name>allowedOrigins</param-name>
-            <param-value>*</param-value>
-        </init-param>
-        <init-param>
-            <param-name>allowedMethods</param-name>
-            <param-value>GET,POST,OPTIONS,DELETE,PUT,HEAD</param-value>
-        </init-param>
-        <init-param>
-            <param-name>allowedHeaders</param-name>
-            <param-value>origin, content-type, accept, authorization</param-value>
-        </init-param>
-        <init-param>
-            <param-name>exposedHeaders</param-name>
-            <param-value>location</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <filter-name>cross-origin-restconf</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
-    <security-constraint>
-        <web-resource-collection>
-            <web-resource-name>NB api</web-resource-name>
-            <url-pattern>/*</url-pattern>
-            <http-method>POST</http-method>
-            <http-method>GET</http-method>
-            <http-method>PUT</http-method>
-            <http-method>PATCH</http-method>
-            <http-method>DELETE</http-method>
-            <http-method>HEAD</http-method>
-        </web-resource-collection>
-    </security-constraint>
-
-</web-app>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/yang/opendaylight-rest-connector.yang b/opendaylight/md-sal/sal-rest-connector/src/main/yang/opendaylight-rest-connector.yang
deleted file mode 100644 (file)
index 9e6a95a..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-module opendaylight-rest-connector {
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:controller:md:sal:rest:connector";
-    prefix "md-sal-rest-connector";
-
-    import config { prefix config; revision-date 2013-04-05; }
-    import opendaylight-md-sal-dom {prefix dom; revision-date 2013-10-28;}
-    import ietf-inet-types {prefix inet; revision-date 2010-09-24;}
-    description
-        "Service definition for Rest Connector";
-    revision "2014-07-24" {
-        description
-            "Initial revision";
-    }
-    
-    identity rest-connector {
-        base "config:service-type";
-        config:java-class "org.opendaylight.controller.sal.rest.api.RestConnector";
-    }
-    
-    identity rest-connector-impl {
-        base config:module-type;
-        config:provided-service rest-connector;
-        config:java-name-prefix RestConnector;
-    }
-    
-    grouping statistics {
-        leaf received-requests {
-           type uint64;
-        }
-
-        leaf successful-responses {
-            type uint64;
-        }
-
-        leaf failed-responses {
-            type uint64;
-        }
-    }
-
-    augment "/config:modules/config:module/config:configuration" {
-        case rest-connector-impl {
-            when "/config:modules/config:module/config:type = 'rest-connector-impl'";
-            leaf websocket-port {
-                mandatory true;
-                type inet:port-number;
-            }
-            container dom-broker {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity dom:dom-broker-osgi-registry;
-                    }
-                }
-            }
-        }
-    }
-    
-    augment "/config:modules/config:module/config:state" {
-        case rest-connector-impl {
-            when "/config:modules/config:module/config:type = 'rest-connector-impl'";
-            container rpcs {
-                uses statistics;
-            }
-
-            container config {
-                container get {
-                    uses statistics;
-                }
-                
-                container post {
-                    uses statistics;
-                }
-                
-                container put {
-                    uses statistics;
-                }
-                
-                container delete {
-                    uses statistics;
-                }
-            }
-
-            container operational {
-                container get {
-                    uses statistics;
-                }
-            }
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/yang/sal-remote-augment.yang b/opendaylight/md-sal/sal-rest-connector/src/main/yang/sal-remote-augment.yang
deleted file mode 100644 (file)
index cc1d26f..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-module sal-remote-augment {
-
-    yang-version 1;
-    namespace "urn:sal:restconf:event:subscription";
-    prefix "salrmt-aug-ev-subscr";
-
-    import sal-remote {prefix salrmt; revision-date "2014-01-14";}
-
-    description
-        "Added input parameters to rpc create-data-change-event-subscription";
-
-    revision "2014-07-08" {
-    }
-
-    augment "/salrmt:create-data-change-event-subscription/salrmt:input" {
-        leaf datastore {
-            type enumeration {
-                enum OPERATIONAL;
-                enum CONFIGURATION;
-            }
-        }
-        leaf scope {
-            type enumeration {
-                enum BASE;
-                enum ONE;
-                enum SUBTREE;
-            }
-        }
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/md/sal/rest/common/TestRestconfUtils.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/md/sal/rest/common/TestRestconfUtils.java
deleted file mode 100644 (file)
index 2b449ae..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-/**
- * Copyright (c) 2015 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.md.sal.rest.common;
-
-import com.google.common.base.Preconditions;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import org.opendaylight.controller.sal.rest.impl.test.providers.TestJsonBodyWriter;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlUtils;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser.DomToNormalizedNodeParserFactory;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser;
-import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
-import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * sal-rest-connector
- * org.opendaylight.controller.md.sal.rest.common
- *
- *
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
- * Created: Mar 7, 2015
- */
-public class TestRestconfUtils {
-
-    private static final Logger LOG = LoggerFactory.getLogger(TestRestconfUtils.class);
-
-    private static final YangContextParser parser = new YangParserImpl();
-
-    private static final DocumentBuilderFactory BUILDERFACTORY;
-
-    static {
-        final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        try {
-            factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
-            factory.setFeature("http://xml.org/sax/features/external-general-entities", false);
-            factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
-            factory.setXIncludeAware(false);
-            factory.setExpandEntityReferences(false);
-        } catch (final ParserConfigurationException e) {
-            throw new ExceptionInInitializerError(e);
-        }
-        factory.setNamespaceAware(true);
-        factory.setCoalescing(true);
-        factory.setIgnoringElementContentWhitespace(true);
-        factory.setIgnoringComments(true);
-        BUILDERFACTORY = factory;
-    }
-
-    private TestRestconfUtils () {
-        throw new UnsupportedOperationException("Test utility class");
-    }
-
-    public static SchemaContext loadSchemaContext(final String yangPath, final SchemaContext schemaContext) {
-        try {
-            Preconditions.checkArgument(yangPath != null, "Path can not be null.");
-            Preconditions.checkArgument(( ! yangPath.isEmpty()), "Path can not be empty.");
-            if (schemaContext == null) {
-                return loadSchemaContext(yangPath);
-            } else {
-                return addSchemaContext(yangPath, schemaContext);
-            }
-        }
-        catch (final Exception e) {
-            LOG.error("Yang files at path: " + yangPath + " weren't loaded.");
-        }
-        return schemaContext;
-    }
-
-    public static NormalizedNodeContext loadNormalizedContextFromJsonFile() {
-        throw new AbstractMethodError("Not implemented yet");
-    }
-
-    public static NormalizedNodeContext loadNormalizedContextFromXmlFile(final String pathToInputFile, final String uri) {
-        final InstanceIdentifierContext<?> iiContext = ControllerContext.getInstance().toInstanceIdentifier(uri);
-        final InputStream inputStream = TestJsonBodyWriter.class.getResourceAsStream(pathToInputFile);
-        try {
-            final DocumentBuilder dBuilder = BUILDERFACTORY.newDocumentBuilder();
-            final Document doc = dBuilder.parse(inputStream);
-            final NormalizedNode<?, ?> nn = parse(iiContext, doc);
-            return new NormalizedNodeContext(iiContext, nn);
-        }
-        catch (final Exception e) {
-            LOG.error("Load xml file " + pathToInputFile + " fail.", e);
-        }
-        return null;
-    }
-
-    private static NormalizedNode<?, ?> parse(final InstanceIdentifierContext<?> iiContext, final Document doc) {
-        final List<Element> elements = Collections.singletonList(doc.getDocumentElement());
-        final SchemaNode schemaNodeContext = iiContext.getSchemaNode();
-        DataSchemaNode schemaNode = null;
-        if (schemaNodeContext instanceof RpcDefinition) {
-            if ("input".equalsIgnoreCase(doc.getDocumentElement().getLocalName())) {
-                schemaNode = ((RpcDefinition) schemaNodeContext).getInput();
-            } else if ("output".equalsIgnoreCase(doc.getDocumentElement().getLocalName())) {
-                schemaNode = ((RpcDefinition) schemaNodeContext).getOutput();
-            } else {
-                throw new IllegalStateException("Unknown Rpc input node");
-            }
-
-        } else if (schemaNodeContext instanceof DataSchemaNode) {
-            schemaNode = (DataSchemaNode) schemaNodeContext;
-        } else {
-            throw new IllegalStateException("Unknow SchemaNode");
-        }
-
-        final String docRootElm = doc.getDocumentElement().getLocalName();
-        final String schemaNodeName = iiContext.getSchemaNode().getQName().getLocalName();
-
-        if (!schemaNodeName.equalsIgnoreCase(docRootElm)) {
-            final Collection<DataSchemaNode> children = ((DataNodeContainer) schemaNode).getChildNodes();
-            for (final DataSchemaNode child : children) {
-                if (child.getQName().getLocalName().equalsIgnoreCase(docRootElm)) {
-                    schemaNode = child;
-                    break;
-                }
-            }
-        }
-        final DomToNormalizedNodeParserFactory parserFactory =
-                DomToNormalizedNodeParserFactory.getInstance(XmlUtils.DEFAULT_XML_CODEC_PROVIDER, iiContext.getSchemaContext());
-
-        if(schemaNode instanceof ContainerSchemaNode) {
-            return parserFactory.getContainerNodeParser().parse(Collections.singletonList(doc.getDocumentElement()), (ContainerSchemaNode) schemaNode);
-        } else if(schemaNode instanceof ListSchemaNode) {
-            final ListSchemaNode casted = (ListSchemaNode) schemaNode;
-            return parserFactory.getMapEntryNodeParser().parse(elements, casted);
-        } // FIXME : add another DataSchemaNode extensions e.g. LeafSchemaNode
-        return null;
-    }
-
-    private static Collection<File> loadFiles(final String resourceDirectory) throws FileNotFoundException {
-        final String path = TestRestconfUtils.class.getResource(resourceDirectory).getPath();
-        final File testDir = new File(path);
-        final String[] fileList = testDir.list();
-        final List<File> testFiles = new ArrayList<File>();
-        if (fileList == null) {
-            throw new FileNotFoundException(resourceDirectory);
-        }
-        for (int i = 0; i < fileList.length; i++) {
-            final String fileName = fileList[i];
-            if (new File(testDir, fileName).isDirectory() == false) {
-                testFiles.add(new File(testDir, fileName));
-            }
-        }
-        return testFiles;
-    }
-
-    private static SchemaContext loadSchemaContext(final String resourceDirectory) throws IOException {
-        final Collection<File> testFiles = loadFiles(resourceDirectory);
-        return parser.parseFiles(testFiles);
-    }
-
-    private static SchemaContext addSchemaContext(final String resourceDirectory,
-            final SchemaContext schemaContext) throws IOException, YangSyntaxErrorException {
-        final Collection<File> testFiles = loadFiles(resourceDirectory);
-        return parser.parseFiles(testFiles, schemaContext);
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/draft02/test/RestPostOperationTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/draft02/test/RestPostOperationTest.java
deleted file mode 100644 (file)
index 089fe0d..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (c) 2015 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.sal.rest.impl.draft02.test;
-
-/**
- * sal-rest-connector
- * org.opendaylight.controller.sal.rest.impl.draft02.test
- *
- *
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
- * Created: Mar 9, 2015
- */
-public class RestPostOperationTest {
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/AbstractBodyReaderTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/AbstractBodyReaderTest.java
deleted file mode 100644 (file)
index 35a6162..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * Copyright (c) 2015 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.sal.rest.impl.test.providers;
-
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.lang.reflect.Field;
-import java.util.Collections;
-
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Request;
-import javax.ws.rs.core.UriInfo;
-
-import org.opendaylight.controller.md.sal.rest.common.TestRestconfUtils;
-import org.opendaylight.controller.sal.rest.api.RestconfConstants;
-import org.opendaylight.controller.sal.rest.impl.AbstractIdentifierAwareJaxRsProvider;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-/**
- * sal-rest-connector org.opendaylight.controller.sal.rest.impl.test.providers
- *
- *
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
- *         Created: Mar 7, 2015
- */
-public abstract class AbstractBodyReaderTest {
-
-    protected final static ControllerContext controllerContext = ControllerContext
-            .getInstance();
-    protected final MediaType mediaType;
-    private static Field uriField;
-    private static Field requestField;
-
-    public AbstractBodyReaderTest() throws NoSuchFieldException,
-            SecurityException {
-        uriField = AbstractIdentifierAwareJaxRsProvider.class
-                .getDeclaredField("uriInfo");
-        uriField.setAccessible(true);
-        requestField = AbstractIdentifierAwareJaxRsProvider.class
-                .getDeclaredField("request");
-        requestField.setAccessible(true);
-        mediaType = getMediaType();
-    }
-
-    protected abstract MediaType getMediaType();
-
-    protected static SchemaContext schemaContextLoader(final String yangPath,
-            final SchemaContext schemaContext) {
-        return TestRestconfUtils.loadSchemaContext(yangPath, schemaContext);
-    }
-
-    protected static <T extends AbstractIdentifierAwareJaxRsProvider> void mockBodyReader(
-            final String identifier, final T normalizedNodeProvider,
-            final boolean isPost) throws NoSuchFieldException,
-            SecurityException, IllegalArgumentException, IllegalAccessException {
-        final UriInfo uriInfoMock = mock(UriInfo.class);
-        final MultivaluedMap<String, String> pathParm = new MultivaluedHashMap<>(
-                1);
-        pathParm.put(RestconfConstants.IDENTIFIER,
-                Collections.singletonList(identifier));
-        when(uriInfoMock.getPathParameters()).thenReturn(pathParm);
-        when(uriInfoMock.getPathParameters(false)).thenReturn(pathParm);
-        when(uriInfoMock.getPathParameters(true)).thenReturn(pathParm);
-        uriField.set(normalizedNodeProvider, uriInfoMock);
-        final Request request = mock(Request.class);
-        if (isPost) {
-            when(request.getMethod()).thenReturn("POST");
-        } else {
-            when(request.getMethod()).thenReturn("PUT");
-        }
-        requestField.set(normalizedNodeProvider, request);
-    }
-
-    protected static void checkMountPointNormalizedNodeContext(
-            final NormalizedNodeContext nnContext) {
-        checkNormalizedNodeContext(nnContext);
-        assertNotNull(nnContext.getInstanceIdentifierContext().getMountPoint());
-    }
-
-    protected static void checkNormalizedNodeContext(
-            final NormalizedNodeContext nnContext) {
-        assertNotNull(nnContext.getData());
-        assertNotNull(nnContext.getInstanceIdentifierContext()
-                .getInstanceIdentifier());
-        assertNotNull(nnContext.getInstanceIdentifierContext()
-                .getSchemaContext());
-        assertNotNull(nnContext.getInstanceIdentifierContext().getSchemaNode());
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestJsonBodyReader.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestJsonBodyReader.java
deleted file mode 100644 (file)
index c1f4633..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/**
- * Copyright (c) 2015 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.sal.rest.impl.test.providers;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import com.google.common.base.Optional;
-import com.google.common.collect.Sets;
-import java.io.InputStream;
-import java.net.URI;
-import javax.ws.rs.core.MediaType;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-/**
- * sal-rest-connector
- * org.opendaylight.controller.sal.rest.impl.test.providers
- *
- *
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
- * Created: Mar 11, 2015
- */
-public class TestJsonBodyReader extends AbstractBodyReaderTest {
-
-    private final JsonNormalizedNodeBodyReader jsonBodyReader;
-    private static SchemaContext schemaContext;
-
-    public TestJsonBodyReader () throws NoSuchFieldException, SecurityException {
-        super();
-        jsonBodyReader = new JsonNormalizedNodeBodyReader();
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        return new MediaType(MediaType.APPLICATION_XML, null);
-    }
-
-    @BeforeClass
-    public static void initialization() throws NoSuchFieldException, SecurityException {
-        schemaContext = schemaContextLoader("/instanceidentifier/yang", schemaContext);
-        schemaContext = schemaContextLoader("/modules", schemaContext);
-        schemaContext = schemaContextLoader("/invoke-rpc", schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void moduleDataTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont");
-        final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName());
-        final String uri = "instance-identifier-module:cont";
-        mockBodyReader(uri, jsonBodyReader, false);
-        final InputStream inputStream = TestJsonBodyReader.class
-                .getResourceAsStream("/instanceidentifier/json/jsondata.json");
-        final NormalizedNodeContext returnValue = jsonBodyReader
-                .readFrom(null, null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII);
-    }
-
-    @Test
-    public void moduleSubContainerDataPutTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont");
-        QName cont1QName = QName.create(dataSchemaNode.getQName(), "cont1");
-        final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName()).node(cont1QName);
-        final DataSchemaNode dataSchemaNodeOnPath = ((DataNodeContainer) dataSchemaNode).getDataChildByName(cont1QName);
-        final String uri = "instance-identifier-module:cont/cont1";
-        mockBodyReader(uri, jsonBodyReader, false);
-        final InputStream inputStream = TestJsonBodyReader.class
-                .getResourceAsStream("/instanceidentifier/json/json_sub_container.json");
-        final NormalizedNodeContext returnValue = jsonBodyReader
-                .readFrom(null, null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNodeOnPath, returnValue, dataII);
-    }
-
-    @Test
-    public void moduleSubContainerDataPostTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont");
-        QName cont1QName = QName.create(dataSchemaNode.getQName(), "cont1");
-        final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName()).node(cont1QName);
-        final String uri = "instance-identifier-module:cont";
-        mockBodyReader(uri, jsonBodyReader, true);
-        final InputStream inputStream = TestJsonBodyReader.class
-                .getResourceAsStream("/instanceidentifier/json/json_sub_container.json");
-        final NormalizedNodeContext returnValue = jsonBodyReader
-                .readFrom(null, null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII);
-    }
-
-    @Test
-    public void moduleSubContainerAugmentDataPostTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont");
-        final Module augmentModule = schemaContext.findModuleByNamespace(new URI("augment:module")).iterator().next();
-        QName contAugmentQName = QName.create(augmentModule.getQNameModule(), "cont-augment");
-        YangInstanceIdentifier.AugmentationIdentifier augII = new YangInstanceIdentifier.AugmentationIdentifier(
-                Sets.newHashSet(contAugmentQName));
-        final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName())
-                .node(augII).node(contAugmentQName);
-        final String uri = "instance-identifier-module:cont";
-        mockBodyReader(uri, jsonBodyReader, true);
-        final InputStream inputStream = TestXmlBodyReader.class
-                .getResourceAsStream("/instanceidentifier/json/json_augment_container.json");
-        final NormalizedNodeContext returnValue = jsonBodyReader
-                .readFrom(null, null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII);
-    }
-
-    //FIXME: Uncomment this when JsonParserStream works correctly with case augmentation with choice
-    //@Test
-    public void moduleSubContainerChoiceAugmentDataPostTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont");
-        final Module augmentModule = schemaContext.findModuleByNamespace(new URI("augment:module")).iterator().next();
-        QName augmentChoice1QName = QName.create(augmentModule.getQNameModule(), "augment-choice1");
-        QName augmentChoice2QName = QName.create(augmentChoice1QName, "augment-choice2");
-        final QName containerQName = QName.create(augmentChoice1QName, "case-choice-case-container1");
-        YangInstanceIdentifier.AugmentationIdentifier augChoice1II = new YangInstanceIdentifier.AugmentationIdentifier(
-                Sets.newHashSet(augmentChoice1QName));
-        YangInstanceIdentifier.AugmentationIdentifier augChoice2II = new YangInstanceIdentifier.AugmentationIdentifier(
-                Sets.newHashSet(augmentChoice2QName));
-        final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName())
-                .node(augChoice1II).node(augmentChoice1QName).node(augChoice2II).node(augmentChoice2QName)
-                .node(containerQName);
-        final String uri = "instance-identifier-module:cont";
-        mockBodyReader(uri, jsonBodyReader, true);
-        final InputStream inputStream = TestXmlBodyReader.class
-                .getResourceAsStream("/instanceidentifier/json/json_augment_choice_container.json");
-        final NormalizedNodeContext returnValue = jsonBodyReader
-                .readFrom(null, null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII);
-    }
-
-    @Test
-    public void rpcModuleInputTest() throws Exception {
-        final String uri = "invoke-rpc-module:rpc-test";
-        mockBodyReader(uri, jsonBodyReader, true);
-        final InputStream inputStream = TestJsonBodyReader.class
-                .getResourceAsStream("/invoke-rpc/json/rpc-input.json");
-        final NormalizedNodeContext returnValue = jsonBodyReader.readFrom(null,
-                null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        final ContainerNode inputNode = (ContainerNode) returnValue.getData();
-        final YangInstanceIdentifier yangCont = YangInstanceIdentifier.of(QName
-                .create(inputNode.getNodeType(), "cont"));
-        final Optional<DataContainerChild<? extends PathArgument, ?>> contDataNode = inputNode
-                .getChild(yangCont.getLastPathArgument());
-        assertTrue(contDataNode.isPresent());
-        assertTrue(contDataNode.get() instanceof ContainerNode);
-        final YangInstanceIdentifier yangleaf = YangInstanceIdentifier.of(QName
-                .create(inputNode.getNodeType(), "lf"));
-        final Optional<DataContainerChild<? extends PathArgument, ?>> leafDataNode = ((ContainerNode) contDataNode
-                .get()).getChild(yangleaf.getLastPathArgument());
-        assertTrue(leafDataNode.isPresent());
-        assertTrue("lf-test".equalsIgnoreCase(leafDataNode.get().getValue()
-                .toString()));
-    }
-
-    private void checkExpectValueNormalizeNodeContext(
-            final DataSchemaNode dataSchemaNode,
-            final NormalizedNodeContext nnContext) {
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, nnContext, null);
-    }
-
-    private void checkExpectValueNormalizeNodeContext(final DataSchemaNode dataSchemaNode,
-                                                      final NormalizedNodeContext nnContext,
-                                                      final YangInstanceIdentifier dataNodeIdent) {
-        assertEquals(dataSchemaNode, nnContext.getInstanceIdentifierContext().getSchemaNode());
-        assertEquals(dataNodeIdent, nnContext.getInstanceIdentifierContext().getInstanceIdentifier());
-        assertNotNull(NormalizedNodes.findNode(nnContext.getData(), dataNodeIdent));
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestJsonBodyReaderMountPoint.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestJsonBodyReaderMountPoint.java
deleted file mode 100644 (file)
index 9a6a3ff..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/**
- * Copyright (c) 2015 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.sal.rest.impl.test.providers;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.io.InputStream;
-
-import javax.ws.rs.core.MediaType;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-import com.google.common.base.Optional;
-
-/**
- * sal-rest-connector org.opendaylight.controller.sal.rest.impl.test.providers
- *
- *
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
- *         Created: Mar 11, 2015
- */
-public class TestJsonBodyReaderMountPoint extends AbstractBodyReaderTest {
-
-    private final JsonNormalizedNodeBodyReader jsonBodyReader;
-    private static SchemaContext schemaContext;
-
-    public TestJsonBodyReaderMountPoint() throws NoSuchFieldException,
-            SecurityException {
-        super();
-        jsonBodyReader = new JsonNormalizedNodeBodyReader();
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        return new MediaType(MediaType.APPLICATION_XML, null);
-    }
-
-    @BeforeClass
-    public static void initialization() throws NoSuchFieldException,
-            SecurityException {
-        schemaContext = schemaContextLoader("/instanceidentifier/yang",
-                schemaContext);
-        schemaContext = schemaContextLoader("/modules", schemaContext);
-        schemaContext = schemaContextLoader("/invoke-rpc", schemaContext);
-        final DOMMountPoint mountInstance = mock(DOMMountPoint.class);
-        when(mountInstance.getSchemaContext()).thenReturn(schemaContext);
-        final DOMMountPointService mockMountService = mock(DOMMountPointService.class);
-        when(mockMountService.getMountPoint(any(YangInstanceIdentifier.class)))
-                .thenReturn(Optional.of(mountInstance));
-
-        ControllerContext.getInstance().setMountService(mockMountService);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void moduleDataTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext
-                .getDataChildByName("cont");
-        final String uri = "instance-identifier-module:cont/yang-ext:mount/instance-identifier-module:cont";
-        mockBodyReader(uri, jsonBodyReader, false);
-        final InputStream inputStream = TestJsonBodyReaderMountPoint.class
-                .getResourceAsStream("/instanceidentifier/json/jsondata.json");
-        final NormalizedNodeContext returnValue = jsonBodyReader.readFrom(null,
-                null, null, mediaType, null, inputStream);
-        checkMountPointNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue);
-    }
-
-    @Test
-    public void moduleSubContainerDataPutTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext
-                .getDataChildByName("cont");
-        final String uri = "instance-identifier-module:cont/yang-ext:mount/instance-identifier-module:cont/cont1";
-        mockBodyReader(uri, jsonBodyReader, false);
-        final InputStream inputStream = TestJsonBodyReaderMountPoint.class
-                .getResourceAsStream("/instanceidentifier/json/json_sub_container.json");
-        final NormalizedNodeContext returnValue = jsonBodyReader.readFrom(null,
-                null, null, mediaType, null, inputStream);
-        checkMountPointNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue,
-                "cont1");
-    }
-
-    @Test
-    public void moduleSubContainerDataPostTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext
-                .getDataChildByName("cont");
-        final String uri = "instance-identifier-module:cont/yang-ext:mount/instance-identifier-module:cont";
-        mockBodyReader(uri, jsonBodyReader, true);
-        final InputStream inputStream = TestJsonBodyReaderMountPoint.class
-                .getResourceAsStream("/instanceidentifier/json/json_sub_container.json");
-        final NormalizedNodeContext returnValue = jsonBodyReader.readFrom(null,
-                null, null, mediaType, null, inputStream);
-        checkMountPointNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue);
-    }
-
-    @Test
-    public void rpcModuleInputTest() throws Exception {
-        final String uri = "instance-identifier-module:cont/yang-ext:mount/invoke-rpc-module:rpc-test";
-        mockBodyReader(uri, jsonBodyReader, true);
-        final InputStream inputStream = TestJsonBodyReaderMountPoint.class
-                .getResourceAsStream("/invoke-rpc/json/rpc-input.json");
-        final NormalizedNodeContext returnValue = jsonBodyReader.readFrom(null,
-                null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        final ContainerNode inputNode = (ContainerNode) returnValue.getData();
-        final YangInstanceIdentifier yangCont = YangInstanceIdentifier.of(QName
-                .create(inputNode.getNodeType(), "cont"));
-        final Optional<DataContainerChild<? extends PathArgument, ?>> contDataNode = inputNode
-                .getChild(yangCont.getLastPathArgument());
-        assertTrue(contDataNode.isPresent());
-        assertTrue(contDataNode.get() instanceof ContainerNode);
-        final YangInstanceIdentifier yangleaf = YangInstanceIdentifier.of(QName
-                .create(inputNode.getNodeType(), "lf"));
-        final Optional<DataContainerChild<? extends PathArgument, ?>> leafDataNode = ((ContainerNode) contDataNode
-                .get()).getChild(yangleaf.getLastPathArgument());
-        assertTrue(leafDataNode.isPresent());
-        assertTrue("lf-test".equalsIgnoreCase(leafDataNode.get().getValue()
-                .toString()));
-    }
-
-    private void checkExpectValueNormalizeNodeContext(
-            final DataSchemaNode dataSchemaNode,
-            final NormalizedNodeContext nnContext) {
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, nnContext, null);
-    }
-
-    protected void checkExpectValueNormalizeNodeContext(
-            final DataSchemaNode dataSchemaNode,
-            final NormalizedNodeContext nnContext, final String localQname) {
-        YangInstanceIdentifier dataNodeIdent = YangInstanceIdentifier
-                .of(dataSchemaNode.getQName());
-        final DOMMountPoint mountPoint = nnContext
-                .getInstanceIdentifierContext().getMountPoint();
-        final DataSchemaNode mountDataSchemaNode = mountPoint
-                .getSchemaContext().getDataChildByName(
-                        dataSchemaNode.getQName());
-        assertNotNull(mountDataSchemaNode);
-        if (localQname != null && dataSchemaNode instanceof DataNodeContainer) {
-            final DataSchemaNode child = ((DataNodeContainer) dataSchemaNode)
-                    .getDataChildByName(localQname);
-            dataNodeIdent = YangInstanceIdentifier.builder(dataNodeIdent)
-                    .node(child.getQName()).build();
-            assertTrue(nnContext.getInstanceIdentifierContext().getSchemaNode()
-                    .equals(child));
-        } else {
-            assertTrue(mountDataSchemaNode.equals(dataSchemaNode));
-        }
-        assertNotNull(NormalizedNodes.findNode(nnContext.getData(),
-                dataNodeIdent));
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestJsonBodyWriter.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestJsonBodyWriter.java
deleted file mode 100644 (file)
index e5cda6c..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Copyright (c) 2015 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.sal.rest.impl.test.providers;
-
-import static org.junit.Assert.assertTrue;
-
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import javax.ws.rs.core.MediaType;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-/**
- * sal-rest-connector org.opendaylight.controller.sal.rest.impl.test.providers
- *
- *
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
- *         Created: Mar 12, 2015
- */
-public class TestJsonBodyWriter extends AbstractBodyReaderTest {
-
-    private final JsonNormalizedNodeBodyReader jsonBodyReader;
-    private final NormalizedNodeJsonBodyWriter jsonBodyWriter;
-    private static SchemaContext schemaContext;
-
-    public TestJsonBodyWriter() throws NoSuchFieldException, SecurityException {
-        super();
-        jsonBodyWriter = new NormalizedNodeJsonBodyWriter();
-        jsonBodyReader = new JsonNormalizedNodeBodyReader();
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        return new MediaType(MediaType.APPLICATION_XML, null);
-    }
-
-    @BeforeClass
-    public static void initialization() throws NoSuchFieldException,
-            SecurityException {
-        schemaContext = schemaContextLoader("/instanceidentifier/yang",
-                schemaContext);
-        schemaContext = schemaContextLoader("/modules", schemaContext);
-        schemaContext = schemaContextLoader("/invoke-rpc", schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void rpcModuleInputTest() throws Exception {
-        final String uri = "invoke-rpc-module:rpc-test";
-        mockBodyReader(uri, jsonBodyReader, true);
-        final InputStream inputStream = TestJsonBodyWriter.class
-                .getResourceAsStream("/invoke-rpc/json/rpc-output.json");
-        final NormalizedNodeContext returnValue = jsonBodyReader.readFrom(null,
-                null, null, mediaType, null, inputStream);
-        final OutputStream output = new ByteArrayOutputStream();
-        jsonBodyWriter.writeTo(returnValue, null, null, null, mediaType, null,
-                output);
-        assertTrue(output.toString().contains("lf-test"));
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReader.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReader.java
deleted file mode 100644 (file)
index 67f4822..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-/**
- * Copyright (c) 2015 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.sal.rest.impl.test.providers;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import com.google.common.base.Optional;
-import com.google.common.collect.Sets;
-import java.io.InputStream;
-import java.net.URI;
-import javax.ws.rs.core.MediaType;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-/**
- * sal-rest-connector
- * org.opendaylight.controller.sal.rest.impl.test.providers
- *
- *
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
- * Created: Mar 7, 2015
- */
-public class TestXmlBodyReader extends AbstractBodyReaderTest {
-
-    private final XmlNormalizedNodeBodyReader xmlBodyReader;
-    private static SchemaContext schemaContext;
-
-    public TestXmlBodyReader () throws NoSuchFieldException, SecurityException {
-        super();
-        xmlBodyReader = new XmlNormalizedNodeBodyReader();
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        return new MediaType(MediaType.APPLICATION_XML, null);
-    }
-
-    @BeforeClass
-    public static void initialization() throws NoSuchFieldException, SecurityException {
-        schemaContext = schemaContextLoader("/instanceidentifier/yang", schemaContext);
-        schemaContext = schemaContextLoader("/modules", schemaContext);
-        schemaContext = schemaContextLoader("/invoke-rpc", schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void moduleDataTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont");
-        final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName());
-        final String uri = "instance-identifier-module:cont";
-        mockBodyReader(uri, xmlBodyReader, false);
-        final InputStream inputStream = TestXmlBodyReader.class
-                .getResourceAsStream("/instanceidentifier/xml/xmldata.xml");
-        final NormalizedNodeContext returnValue = xmlBodyReader
-                .readFrom(null, null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII);
-    }
-
-    @Test
-    public void moduleSubContainerDataPutTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont");
-        QName cont1QName = QName.create(dataSchemaNode.getQName(), "cont1");
-        final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName()).node(cont1QName);
-        final DataSchemaNode dataSchemaNodeOnPath = ((DataNodeContainer) dataSchemaNode).getDataChildByName(cont1QName);
-        final String uri = "instance-identifier-module:cont/cont1";
-        mockBodyReader(uri, xmlBodyReader, false);
-        final InputStream inputStream = TestXmlBodyReader.class
-                .getResourceAsStream("/instanceidentifier/xml/xml_sub_container.xml");
-        final NormalizedNodeContext returnValue = xmlBodyReader
-                .readFrom(null, null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNodeOnPath, returnValue, dataII);
-    }
-
-    @Test
-    public void moduleSubContainerDataPostTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont");
-        QName cont1QName = QName.create(dataSchemaNode.getQName(), "cont1");
-        final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName()).node(cont1QName);
-        final String uri = "instance-identifier-module:cont";
-        mockBodyReader(uri, xmlBodyReader, true);
-        final InputStream inputStream = TestXmlBodyReader.class
-                .getResourceAsStream("/instanceidentifier/xml/xml_sub_container.xml");
-        final NormalizedNodeContext returnValue = xmlBodyReader
-                .readFrom(null, null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII);
-    }
-
-    @Test
-    public void moduleSubContainerAugmentDataPostTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont");
-        final Module augmentModule = schemaContext.findModuleByNamespace(new URI("augment:module")).iterator().next();
-        QName contAugmentQName = QName.create(augmentModule.getQNameModule(), "cont-augment");
-        YangInstanceIdentifier.AugmentationIdentifier augII = new YangInstanceIdentifier.AugmentationIdentifier(
-                Sets.newHashSet(contAugmentQName));
-        final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName())
-                .node(augII).node(contAugmentQName);
-        final String uri = "instance-identifier-module:cont";
-        mockBodyReader(uri, xmlBodyReader, true);
-        final InputStream inputStream = TestXmlBodyReader.class
-                .getResourceAsStream("/instanceidentifier/xml/xml_augment_container.xml");
-        final NormalizedNodeContext returnValue = xmlBodyReader
-                .readFrom(null, null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII);
-    }
-
-    @Test
-    public void moduleSubContainerChoiceAugmentDataPostTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont");
-        final Module augmentModule = schemaContext.findModuleByNamespace(new URI("augment:module")).iterator().next();
-        QName augmentChoice1QName = QName.create(augmentModule.getQNameModule(), "augment-choice1");
-        QName augmentChoice2QName = QName.create(augmentChoice1QName, "augment-choice2");
-        final QName containerQName = QName.create(augmentChoice1QName, "case-choice-case-container1");
-        YangInstanceIdentifier.AugmentationIdentifier augChoice1II = new YangInstanceIdentifier.AugmentationIdentifier(
-                Sets.newHashSet(augmentChoice1QName));
-        YangInstanceIdentifier.AugmentationIdentifier augChoice2II = new YangInstanceIdentifier.AugmentationIdentifier(
-                Sets.newHashSet(augmentChoice2QName));
-        final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName())
-                .node(augChoice1II).node(augmentChoice1QName).node(augChoice2II).node(augmentChoice2QName)
-                .node(containerQName);
-        final String uri = "instance-identifier-module:cont";
-        mockBodyReader(uri, xmlBodyReader, true);
-        final InputStream inputStream = TestXmlBodyReader.class
-                .getResourceAsStream("/instanceidentifier/xml/xml_augment_choice_container.xml");
-        final NormalizedNodeContext returnValue = xmlBodyReader
-                .readFrom(null, null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII);
-    }
-
-    @Test
-    public void rpcModuleInputTest() throws Exception {
-        final String uri = "invoke-rpc-module:rpc-test";
-        mockBodyReader(uri, xmlBodyReader, true);
-        final InputStream inputStream = TestXmlBodyReader.class
-                .getResourceAsStream("/invoke-rpc/xml/rpc-input.xml");
-        final NormalizedNodeContext returnValue = xmlBodyReader
-                .readFrom(null, null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        final ContainerNode contNode = (ContainerNode) returnValue.getData();
-        final YangInstanceIdentifier yangCont = YangInstanceIdentifier.of(QName.create(contNode.getNodeType(), "cont"));
-        final Optional<DataContainerChild<? extends PathArgument, ?>> contDataNodePotential = contNode.getChild(yangCont
-                .getLastPathArgument());
-        assertTrue(contDataNodePotential.isPresent());
-        final ContainerNode contDataNode = (ContainerNode) contDataNodePotential.get();
-        final YangInstanceIdentifier yangLeaf = YangInstanceIdentifier.of(QName.create(contDataNode.getNodeType(), "lf"));
-        final Optional<DataContainerChild<? extends PathArgument, ?>> leafDataNode = contDataNode.getChild(yangLeaf
-                .getLastPathArgument());
-        assertTrue(leafDataNode.isPresent());
-        assertTrue("lf-test".equalsIgnoreCase(leafDataNode.get().getValue().toString()));
-    }
-
-    private void checkExpectValueNormalizeNodeContext(final DataSchemaNode dataSchemaNode,
-            final NormalizedNodeContext nnContext) {
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, nnContext, null);
-    }
-
-    private void checkExpectValueNormalizeNodeContext(final DataSchemaNode dataSchemaNode,
-                                                      final NormalizedNodeContext nnContext,
-                                                      final YangInstanceIdentifier dataNodeIdent) {
-        assertEquals(dataSchemaNode, nnContext.getInstanceIdentifierContext().getSchemaNode());
-        assertEquals(dataNodeIdent, nnContext.getInstanceIdentifierContext().getInstanceIdentifier());
-        assertNotNull(NormalizedNodes.findNode(nnContext.getData(), dataNodeIdent));
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReaderMountPoint.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReaderMountPoint.java
deleted file mode 100644 (file)
index 888008c..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/**
- * Copyright (c) 2015 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.sal.rest.impl.test.providers;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.io.InputStream;
-
-import javax.ws.rs.core.MediaType;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-import com.google.common.base.Optional;
-
-/**
- * sal-rest-connector org.opendaylight.controller.sal.rest.impl.test.providers
- *
- *
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
- *         Created: Mar 9, 2015
- */
-public class TestXmlBodyReaderMountPoint extends AbstractBodyReaderTest {
-
-    private final XmlNormalizedNodeBodyReader xmlBodyReader;
-    private static SchemaContext schemaContext;
-
-    public TestXmlBodyReaderMountPoint() throws NoSuchFieldException,
-            SecurityException {
-        super();
-        xmlBodyReader = new XmlNormalizedNodeBodyReader();
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        return new MediaType(MediaType.APPLICATION_XML, null);
-    }
-
-    @BeforeClass
-    public static void initialization() throws NoSuchFieldException,
-            SecurityException {
-        schemaContext = schemaContextLoader("/instanceidentifier/yang",
-                schemaContext);
-        schemaContext = schemaContextLoader("/modules", schemaContext);
-        schemaContext = schemaContextLoader("/invoke-rpc", schemaContext);
-        final DOMMountPoint mountInstance = mock(DOMMountPoint.class);
-        when(mountInstance.getSchemaContext()).thenReturn(schemaContext);
-        final DOMMountPointService mockMountService = mock(DOMMountPointService.class);
-        when(mockMountService.getMountPoint(any(YangInstanceIdentifier.class)))
-                .thenReturn(Optional.of(mountInstance));
-
-        ControllerContext.getInstance().setMountService(mockMountService);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void moduleDataTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext
-                .getDataChildByName("cont");
-        final String uri = "instance-identifier-module:cont/yang-ext:mount/instance-identifier-module:cont";
-        mockBodyReader(uri, xmlBodyReader, false);
-        final InputStream inputStream = TestXmlBodyReaderMountPoint.class
-                .getResourceAsStream("/instanceidentifier/xml/xmldata.xml");
-        final NormalizedNodeContext returnValue = xmlBodyReader.readFrom(null,
-                null, null, mediaType, null, inputStream);
-        checkMountPointNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue);
-    }
-
-    @Test
-    public void moduleSubContainerDataPutTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext
-                .getDataChildByName("cont");
-        final String uri = "instance-identifier-module:cont/yang-ext:mount/instance-identifier-module:cont/cont1";
-        mockBodyReader(uri, xmlBodyReader, false);
-        final InputStream inputStream = TestXmlBodyReaderMountPoint.class
-                .getResourceAsStream("/instanceidentifier/xml/xml_sub_container.xml");
-        final NormalizedNodeContext returnValue = xmlBodyReader.readFrom(null,
-                null, null, mediaType, null, inputStream);
-        checkMountPointNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue,
-                "cont1");
-    }
-
-    @Test
-    public void moduleSubContainerDataPostTest() throws Exception {
-        final DataSchemaNode dataSchemaNode = schemaContext
-                .getDataChildByName("cont");
-        final String uri = "instance-identifier-module:cont/yang-ext:mount/instance-identifier-module:cont";
-        mockBodyReader(uri, xmlBodyReader, true);
-        final InputStream inputStream = TestXmlBodyReaderMountPoint.class
-                .getResourceAsStream("/instanceidentifier/xml/xml_sub_container.xml");
-        final NormalizedNodeContext returnValue = xmlBodyReader.readFrom(null,
-                null, null, mediaType, null, inputStream);
-        checkMountPointNormalizedNodeContext(returnValue);
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue);
-    }
-
-    @Test
-    public void rpcModuleInputTest() throws Exception {
-        final String uri = "instance-identifier-module:cont/yang-ext:mount/invoke-rpc-module:rpc-test";
-        mockBodyReader(uri, xmlBodyReader, true);
-        final InputStream inputStream = TestXmlBodyReaderMountPoint.class
-                .getResourceAsStream("/invoke-rpc/xml/rpc-input.xml");
-        final NormalizedNodeContext returnValue = xmlBodyReader.readFrom(null,
-                null, null, mediaType, null, inputStream);
-        checkNormalizedNodeContext(returnValue);
-        final ContainerNode contNode = (ContainerNode) returnValue.getData();
-        final YangInstanceIdentifier yangCont = YangInstanceIdentifier.of(QName.create(contNode.getNodeType(), "cont"));
-        final Optional<DataContainerChild<? extends PathArgument, ?>> contDataNodePotential = contNode.getChild(yangCont
-                .getLastPathArgument());
-        assertTrue(contDataNodePotential.isPresent());
-        final ContainerNode contDataNode = (ContainerNode) contDataNodePotential.get();
-        final YangInstanceIdentifier yangLeaf = YangInstanceIdentifier.of(QName.create(contDataNode.getNodeType(), "lf"));
-        final Optional<DataContainerChild<? extends PathArgument, ?>> leafDataNode = contDataNode.getChild(yangLeaf
-                .getLastPathArgument());
-        assertTrue(leafDataNode.isPresent());
-        assertTrue("lf-test".equalsIgnoreCase(leafDataNode.get().getValue().toString()));
-    }
-
-    private void checkExpectValueNormalizeNodeContext(
-            final DataSchemaNode dataSchemaNode,
-            final NormalizedNodeContext nnContext) {
-        checkExpectValueNormalizeNodeContext(dataSchemaNode, nnContext, null);
-    }
-
-    protected void checkExpectValueNormalizeNodeContext(
-            final DataSchemaNode dataSchemaNode,
-            final NormalizedNodeContext nnContext, final String localQname) {
-        YangInstanceIdentifier dataNodeIdent = YangInstanceIdentifier
-                .of(dataSchemaNode.getQName());
-        final DOMMountPoint mountPoint = nnContext
-                .getInstanceIdentifierContext().getMountPoint();
-        final DataSchemaNode mountDataSchemaNode = mountPoint
-                .getSchemaContext().getDataChildByName(
-                        dataSchemaNode.getQName());
-        assertNotNull(mountDataSchemaNode);
-        if (localQname != null && dataSchemaNode instanceof DataNodeContainer) {
-            final DataSchemaNode child = ((DataNodeContainer) dataSchemaNode)
-                    .getDataChildByName(localQname);
-            dataNodeIdent = YangInstanceIdentifier.builder(dataNodeIdent)
-                    .node(child.getQName()).build();
-            assertTrue(nnContext.getInstanceIdentifierContext().getSchemaNode()
-                    .equals(child));
-        } else {
-            assertTrue(mountDataSchemaNode.equals(dataSchemaNode));
-        }
-        assertNotNull(NormalizedNodes.findNode(nnContext.getData(),
-                dataNodeIdent));
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyWriter.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyWriter.java
deleted file mode 100644 (file)
index 8eac451..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Copyright (c) 2015 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.sal.rest.impl.test.providers;
-
-import static org.junit.Assert.assertTrue;
-
-import java.io.ByteArrayOutputStream;
-import java.io.OutputStream;
-
-import javax.ws.rs.core.MediaType;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.rest.common.TestRestconfUtils;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-/**
- * sal-rest-connector org.opendaylight.controller.sal.rest.impl.test.providers
- *
- *
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
- *         Created: Mar 12, 2015
- */
-public class TestXmlBodyWriter extends AbstractBodyReaderTest {
-
-    private final NormalizedNodeXmlBodyWriter xmlBodyWriter;
-    private static SchemaContext schemaContext;
-
-    public TestXmlBodyWriter() throws NoSuchFieldException, SecurityException {
-        super();
-        xmlBodyWriter = new NormalizedNodeXmlBodyWriter();
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        return new MediaType(MediaType.APPLICATION_XML, null);
-    }
-
-    @BeforeClass
-    public static void initialization() throws NoSuchFieldException,
-            SecurityException {
-        schemaContext = schemaContextLoader("/instanceidentifier/yang",
-                schemaContext);
-        schemaContext = schemaContextLoader("/modules", schemaContext);
-        schemaContext = schemaContextLoader("/invoke-rpc", schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void rpcModuleInputTest() throws Exception {
-        final String uri = "invoke-rpc-module:rpc-test";
-        final String pathToInputFile = "/invoke-rpc/xml/rpc-output.xml";
-        final NormalizedNodeContext nnContext = TestRestconfUtils
-                .loadNormalizedContextFromXmlFile(pathToInputFile, uri);
-        final OutputStream output = new ByteArrayOutputStream();
-        xmlBodyWriter.writeTo(nnContext, null, null, null, mediaType, null,
-                output);
-        assertTrue(output.toString().contains("lf-test"));
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/cnsn/to/json/test/CnSnToJsonBasicDataTypesTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/cnsn/to/json/test/CnSnToJsonBasicDataTypesTest.java
deleted file mode 100644 (file)
index 1b3af6a..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.cnsn.to.json.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
-import com.google.common.collect.Maps;
-import com.google.gson.stream.JsonReader;
-import com.google.gson.stream.JsonToken;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.Map;
-import org.junit.BeforeClass;
-import org.opendaylight.controller.sal.restconf.impl.test.YangAndXmlAndDataSchemaLoader;
-
-public class CnSnToJsonBasicDataTypesTest extends YangAndXmlAndDataSchemaLoader {
-
-    static abstract class LeafVerifier {
-
-        Object expectedValue;
-        JsonToken expectedToken;
-
-        LeafVerifier(final Object expectedValue, final JsonToken expectedToken) {
-            this.expectedValue = expectedValue;
-            this.expectedToken = expectedToken;
-        }
-
-        abstract Object getActualValue(JsonReader reader) throws IOException;
-
-        void verify(final JsonReader reader, final String keyName) throws IOException {
-            assertEquals("Json value for key " + keyName, expectedValue, getActualValue(reader));
-        }
-
-        JsonToken expectedTokenType() {
-            return expectedToken;
-        }
-    }
-
-    static class BooleanVerifier extends LeafVerifier {
-
-        public BooleanVerifier(final boolean expected) {
-            super(expected, JsonToken.BOOLEAN);
-        }
-
-        @Override
-        Object getActualValue(final JsonReader reader) throws IOException {
-            return reader.nextBoolean();
-        }
-    }
-
-    static class NumberVerifier extends LeafVerifier {
-
-        public NumberVerifier(final Number expected) {
-            super(expected, JsonToken.NUMBER);
-        }
-
-        @Override
-        Object getActualValue(final JsonReader reader) throws IOException {
-            if (expectedValue instanceof Double) {
-                return reader.nextDouble();
-            } else if (expectedValue instanceof Long) {
-                return reader.nextLong();
-            } else if (expectedValue instanceof Integer) {
-                return reader.nextInt();
-            }
-
-            return null;
-        }
-    }
-
-    static class StringVerifier extends LeafVerifier {
-
-        StringVerifier(final String expected) {
-            super(expected, JsonToken.STRING);
-        }
-
-        @Override
-        Object getActualValue(final JsonReader reader) throws IOException {
-            return reader.nextString();
-        }
-    }
-
-    static class EmptyVerifier extends LeafVerifier {
-
-        EmptyVerifier() {
-            super(null, null);
-        }
-
-        @Override
-        Object getActualValue(final JsonReader reader) throws IOException {
-            reader.beginArray();
-            reader.nextNull();
-            reader.endArray();
-            return null;
-        }
-
-    }
-
-    static class ComplexAnyXmlVerifier extends LeafVerifier {
-
-        ComplexAnyXmlVerifier() {
-            super(null, JsonToken.BEGIN_OBJECT);
-        }
-
-        @Override
-        void verify(final JsonReader reader, final String keyName) throws IOException {
-
-            reader.beginObject();
-            final String innerKey = reader.nextName();
-            assertEquals("Json reader child key for " + keyName, "data", innerKey);
-            assertEquals("Json token type for key " + innerKey, JsonToken.BEGIN_OBJECT, reader.peek());
-
-            reader.beginObject();
-            verifyLeaf(reader, innerKey, "leaf1", "leaf1-value");
-            verifyLeaf(reader, innerKey, "leaf2", "leaf2-value");
-
-            String nextName = reader.nextName();
-            assertEquals("Json reader child key for " + innerKey, "leaf-list", nextName);
-            reader.beginArray();
-            assertEquals("Json value for key " + nextName, "leaf-list-value1", reader.nextString());
-            assertEquals("Json value for key " + nextName, "leaf-list-value2", reader.nextString());
-            reader.endArray();
-
-            nextName = reader.nextName();
-            assertEquals("Json reader child key for " + innerKey, "list", nextName);
-            reader.beginArray();
-            verifyNestedLists(reader, 1);
-            verifyNestedLists(reader, 3);
-            reader.endArray();
-
-            reader.endObject();
-            reader.endObject();
-        }
-
-        void verifyNestedLists(final JsonReader reader, int leafNum) throws IOException {
-            reader.beginObject();
-
-            final String nextName = reader.nextName();
-            assertEquals("Json reader next name", "nested-list", nextName);
-
-            reader.beginArray();
-
-            reader.beginObject();
-            verifyLeaf(reader, "nested-list", "nested-leaf", "nested-value" + leafNum++);
-            reader.endObject();
-
-            reader.beginObject();
-            verifyLeaf(reader, "nested-list", "nested-leaf", "nested-value" + leafNum);
-            reader.endObject();
-
-            reader.endArray();
-            reader.endObject();
-        }
-
-        void verifyLeaf(final JsonReader reader, final String parent, final String name, final String value) throws IOException {
-            final String nextName = reader.nextName();
-            assertEquals("Json reader child key for " + parent, name, nextName);
-            assertEquals("Json token type for key " + parent, JsonToken.STRING, reader.peek());
-            assertEquals("Json value for key " + nextName, value, reader.nextString());
-        }
-
-        @Override
-        Object getActualValue(final JsonReader reader) throws IOException {
-            return null;
-        }
-    }
-
-    @BeforeClass
-    public static void initialize() {
-        dataLoad("/cnsn-to-json/simple-data-types");
-    }
-
-    private void verifyJsonOutput(final String jsonOutput) {
-        final StringReader strReader = new StringReader(jsonOutput);
-        final JsonReader jReader = new JsonReader(strReader);
-
-        String exception = null;
-        try {
-            jsonReadCont(jReader);
-        } catch (final IOException e) {
-            exception = e.getMessage();
-        }
-
-        assertNull("Error during reading Json output: " + exception, exception);
-    }
-
-    private void jsonReadCont(final JsonReader jReader) throws IOException {
-        jReader.beginObject();
-        assertNotNull("cont1 is missing.", jReader.hasNext());
-
-        // Cont dataFromJson = new Cont(jReader.nextName());
-        jReader.nextName();
-        jsonReadContElements(jReader);
-
-        assertFalse("cont shouldn't have other element.", jReader.hasNext());
-        jReader.endObject();
-        // return dataFromJson;
-    }
-
-    private void jsonReadContElements(final JsonReader jReader) throws IOException {
-        jReader.beginObject();
-
-        final Map<String, LeafVerifier> expectedMap = Maps.newHashMap();
-        expectedMap.put("lfnint8Min", new NumberVerifier(Integer.valueOf(-128)));
-        expectedMap.put("lfnint8Max", new NumberVerifier(Integer.valueOf(127)));
-        expectedMap.put("lfnint16Min", new NumberVerifier(Integer.valueOf(-32768)));
-        expectedMap.put("lfnint16Max", new NumberVerifier(Integer.valueOf(32767)));
-        expectedMap.put("lfnint32Min", new NumberVerifier(Integer.valueOf(-2147483648)));
-        expectedMap.put("lfnint32Max", new NumberVerifier(Long.valueOf(2147483647)));
-        expectedMap.put("lfnint64Min", new NumberVerifier(Long.valueOf(-9223372036854775808L)));
-        expectedMap.put("lfnint64Max", new NumberVerifier(Long.valueOf(9223372036854775807L)));
-        expectedMap.put("lfnuint8Max", new NumberVerifier(Integer.valueOf(255)));
-        expectedMap.put("lfnuint16Max", new NumberVerifier(Integer.valueOf(65535)));
-        expectedMap.put("lfnuint32Max", new NumberVerifier(Long.valueOf(4294967295L)));
-        expectedMap.put("lfstr", new StringVerifier("lfstr"));
-        expectedMap.put("lfstr1", new StringVerifier(""));
-        expectedMap.put("lfbool1", new BooleanVerifier(true));
-        expectedMap.put("lfbool2", new BooleanVerifier(false));
-        expectedMap.put("lfbool3", new BooleanVerifier(false));
-        expectedMap.put("lfdecimal1", new NumberVerifier(new Double(43.32)));
-        expectedMap.put("lfdecimal2", new NumberVerifier(new Double(-0.43)));
-        expectedMap.put("lfdecimal3", new NumberVerifier(new Double(43)));
-        expectedMap.put("lfdecimal4", new NumberVerifier(new Double(43E3)));
-        expectedMap.put("lfdecimal6", new NumberVerifier(new Double(33.12345)));
-        expectedMap.put("lfenum", new StringVerifier("enum3"));
-        expectedMap.put("lfbits", new StringVerifier("bit3 bit2"));
-        expectedMap.put("lfbinary", new StringVerifier("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
-        expectedMap.put("lfunion1", new StringVerifier("324"));
-        expectedMap.put("lfunion2", new StringVerifier("33.3"));
-        expectedMap.put("lfunion3", new StringVerifier("55"));
-        expectedMap.put("lfunion4", new StringVerifier("true"));
-        expectedMap.put("lfunion5", new StringVerifier("true"));
-        expectedMap.put("lfunion6", new StringVerifier("10"));
-        expectedMap.put("lfunion7", new StringVerifier(""));
-        expectedMap.put("lfunion8", new StringVerifier(""));
-        expectedMap.put("lfunion9", new StringVerifier(""));
-        expectedMap.put("lfunion10", new StringVerifier("bt1"));
-        expectedMap.put("lfunion11", new StringVerifier("33"));
-        expectedMap.put("lfunion12", new StringVerifier("false"));
-        expectedMap.put("lfunion13", new StringVerifier("b1"));
-        expectedMap.put("lfunion14", new StringVerifier("zero"));
-        expectedMap.put("lfempty", new EmptyVerifier());
-        expectedMap.put("identityref1", new StringVerifier("simple-data-types:iden"));
-        expectedMap.put("complex-any", new ComplexAnyXmlVerifier());
-        expectedMap.put("simple-any", new StringVerifier("simple"));
-        expectedMap.put("empty-any", new StringVerifier(""));
-
-        while (jReader.hasNext()) {
-            final String keyName = jReader.nextName();
-            final JsonToken peek = jReader.peek();
-
-            final LeafVerifier verifier = expectedMap.remove(keyName);
-            assertNotNull("Found unexpected leaf: " + keyName, verifier);
-
-            final JsonToken expToken = verifier.expectedTokenType();
-            if (expToken != null) {
-                assertEquals("Json token type for key " + keyName, expToken, peek);
-            }
-
-            verifier.verify(jReader, keyName);
-        }
-
-        if (!expectedMap.isEmpty()) {
-            fail("Missing leaf nodes in Json output: " + expectedMap.keySet());
-        }
-
-        jReader.endObject();
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/cnsn/to/json/test/CnSnToJsonIdentityrefTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/cnsn/to/json/test/CnSnToJsonIdentityrefTest.java
deleted file mode 100644 (file)
index d13b7b3..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.cnsn.to.json.test;
-
-import org.junit.BeforeClass;
-import org.opendaylight.controller.sal.restconf.impl.test.YangAndXmlAndDataSchemaLoader;
-
-public class CnSnToJsonIdentityrefTest extends YangAndXmlAndDataSchemaLoader {
-
-    @BeforeClass
-    public static void initialization() {
-        dataLoad("/cnsn-to-json/identityref", 2, "identityref-module", "cont");
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/cnsn/to/json/test/CnSnToJsonWithDataFromSeveralModulesTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/cnsn/to/json/test/CnSnToJsonWithDataFromSeveralModulesTest.java
deleted file mode 100644 (file)
index f0a4371..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.cnsn.to.json.test;
-
-import org.junit.BeforeClass;
-import org.opendaylight.controller.sal.restconf.impl.test.YangAndXmlAndDataSchemaLoader;
-
-public class CnSnToJsonWithDataFromSeveralModulesTest extends YangAndXmlAndDataSchemaLoader {
-
-    @BeforeClass
-    public static void initialize() {
-        dataLoad("/xml-to-cnsn/data-of-several-modules/yang", 2, "module1", "cont_m1");
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/input/to/cnsn/test/RestPutListDataTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/input/to/cnsn/test/RestPutListDataTest.java
deleted file mode 100644 (file)
index 8ccd4a1..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.input.to.cnsn.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import com.google.common.collect.Iterables;
-import com.google.common.util.concurrent.CheckedFuture;
-import java.io.FileNotFoundException;
-import java.net.URI;
-import java.util.List;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.controller.sal.restconf.impl.test.TestUtils;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class RestPutListDataTest {
-
-    private static BrokerFacade brokerFacade;
-    private static RestconfImpl restconfImpl;
-    private static SchemaContext schemaContextTestModule;
-
-    private static final String TEST_MODULE_NS_STRING = "test:module";
-    private static final URI TEST_MODULE_NS;
-    private static final String TEST_MODULE_REVISION = "2014-01-09";
-
-    static {
-        TEST_MODULE_NS = URI.create("test:module");
-    }
-
-    @Before
-    public void initialize() throws FileNotFoundException {
-        final ControllerContext controllerContext = ControllerContext.getInstance();
-        schemaContextTestModule = TestUtils.loadSchemaContext("/full-versions/test-module");
-        controllerContext.setSchemas(schemaContextTestModule);
-        brokerFacade = mock(BrokerFacade.class);
-        restconfImpl = RestconfImpl.getInstance();
-        restconfImpl.setBroker(brokerFacade);
-        restconfImpl.setControllerContext(controllerContext);
-        when(brokerFacade.commitConfigurationDataPut(any(SchemaContext.class), any(YangInstanceIdentifier.class), any(NormalizedNode.class)))
-                .thenReturn(mock(CheckedFuture.class));
-    }
-
-    /**
-     * Tests whether no exception is raised if number and values of keys in URI
-     * and payload are equal
-     */
-    @Test
-    @Ignore
-    public void testValidKeys() {
-        putListDataTest("key1value", "15", "key1value", (short) 15);
-    }
-
-    /**
-     * Tests whether an exception is raised if key values in URI and payload are
-     * different.
-     *
-     * The exception should be raised from validation method
-     * {@code RestconfImpl#validateListEqualityOfListInDataAndUri}
-     */
-    @Test
-    @Ignore // RestconfDocumentedExceptionMapper needs update
-    public void testUriAndPayloadKeysDifferent() {
-        try {
-            putListDataTest("key1value", "15", "key1value", (short) 16);
-            fail("RestconfDocumentedException expected");
-        } catch (final RestconfDocumentedException e) {
-            verifyException(e, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-
-        try {
-            putListDataTest("key1value", "15", "key1value1", (short) 16);
-            fail("RestconfDocumentedException expected");
-        } catch (final RestconfDocumentedException e) {
-            verifyException(e, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
-        }
-    }
-
-    /**
-     * Tests whether an exception is raised if URI contains less key values then
-     * payload.
-     *
-     * The exception is raised during {@code InstanceIdentifier} instance is
-     * built from URI
-     */
-    @Test
-    @Ignore
-    public void testMissingKeysInUri() {
-        try {
-            putListDataTest("key1value", null, "key1value", (short) 15);
-            fail("RestconfDocumentedException expected");
-        } catch (final RestconfDocumentedException e) {
-            verifyException(e, ErrorType.PROTOCOL, ErrorTag.DATA_MISSING);
-        }
-    }
-
-    /**
-     * Tests whether an exception is raised if URI contains more key values then
-     * payload.
-     *
-     * The exception should be raised from validation method
-     * {@code RestconfImpl#validateListEqualityOfListInDataAndUri}
-     */
-    @Test
-    public void testMissingKeysInPayload() {
-        try {
-            putListDataTest("key1value", "15", "key1value", null);
-            fail("RestconfDocumentedException expected");
-        } catch (final DataValidationException e) {
-            // FIXME: thing about different approach for testing the Exception states
-            // RestconfDocumentedException is not rise in new API because you get
-            // DataValidationException from putListDataTest before you call the real rest service
-//            verifyException(e, ErrorType.PROTOCOL, ErrorTag.DATA_MISSING);
-        }
-    }
-
-    private void verifyException(final RestconfDocumentedException e, final ErrorType errorType, final ErrorTag errorTag) {
-        final List<RestconfError> errors = e.getErrors();
-        assertEquals("getErrors() size", 1, errors.size());
-        assertEquals("RestconfError getErrorType()", errorType, errors.get(0).getErrorType());
-        assertEquals("RestconfError getErrorTag()", errorTag, errors.get(0).getErrorTag());
-    }
-
-    public void putListDataTest(final String uriKey1, final String uriKey2, final String payloadKey1,
-            final Short payloadKey2) {
-        final QName lstWithCompositeKey = QName.create(TEST_MODULE_NS_STRING, TEST_MODULE_REVISION, "lst-with-composite-key");
-        final QName key1 = QName.create(TEST_MODULE_NS_STRING, TEST_MODULE_REVISION, "key1");
-        final QName key2 = QName.create(TEST_MODULE_NS_STRING, TEST_MODULE_REVISION, "key2");
-
-        final DataSchemaNode testNodeSchemaNode = schemaContextTestModule.getDataChildByName(lstWithCompositeKey);
-        assertTrue(testNodeSchemaNode != null);
-        assertTrue(testNodeSchemaNode instanceof ListSchemaNode);
-        final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> testNodeContainer =
-                Builders.mapEntryBuilder((ListSchemaNode) testNodeSchemaNode);
-
-        List<DataSchemaNode> testChildren = ControllerContext.findInstanceDataChildrenByName(
-                (ListSchemaNode) testNodeSchemaNode, key1.getLocalName());
-        assertTrue(testChildren != null);
-        final DataSchemaNode testLeafKey1SchemaNode = Iterables.getFirst(testChildren, null);
-        assertTrue(testLeafKey1SchemaNode != null);
-        assertTrue(testLeafKey1SchemaNode instanceof LeafSchemaNode);
-        final NormalizedNodeAttrBuilder<NodeIdentifier, Object, LeafNode<Object>> leafKey1 =
-                Builders.leafBuilder((LeafSchemaNode) testLeafKey1SchemaNode);
-        leafKey1.withValue(payloadKey1);
-        testNodeContainer.withChild(leafKey1.build());
-
-        if (payloadKey2 != null) {
-            testChildren = ControllerContext.findInstanceDataChildrenByName(
-                    (ListSchemaNode) testNodeSchemaNode, key2.getLocalName());
-            assertTrue(testChildren != null);
-            final DataSchemaNode testLeafKey2SchemaNode = Iterables.getFirst(testChildren, null);
-            assertTrue(testLeafKey2SchemaNode != null);
-            assertTrue(testLeafKey2SchemaNode instanceof LeafSchemaNode);
-            final NormalizedNodeAttrBuilder<NodeIdentifier, Object, LeafNode<Object>> leafKey2 =
-                    Builders.leafBuilder((LeafSchemaNode) testLeafKey2SchemaNode);
-            leafKey2.withValue(payloadKey2);
-            testNodeContainer.withChild(leafKey2.build());
-        }
-
-        final NormalizedNodeContext testCompositeContext = new NormalizedNodeContext(new InstanceIdentifierContext<>(
-                null, testNodeSchemaNode, null, schemaContextTestModule), testNodeContainer.build());
-
-        restconfImpl.updateConfigurationData(toUri(uriKey1, uriKey2), testCompositeContext);
-    }
-
-    public void putListDataWithWrapperTest(final String uriKey1, final String uriKey2, final String payloadKey1,
-            final Short payloadKey2) {
-        putListDataTest(uriKey1, uriKey2, payloadKey1, payloadKey2);
-    }
-
-    private String toUri(final String uriKey1, final String uriKey2) {
-        final StringBuilder uriBuilder = new StringBuilder("/test-module:lst-with-composite-key/");
-        uriBuilder.append(uriKey1);
-        if (uriKey2 != null) {
-            uriBuilder.append("/");
-            uriBuilder.append(uriKey2);
-        }
-        return uriBuilder.toString();
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/json/to/nn/test/JsonIdentityrefToNnTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/json/to/nn/test/JsonIdentityrefToNnTest.java
deleted file mode 100644 (file)
index 6577355..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.json.to.nn.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class JsonIdentityrefToNnTest extends AbstractBodyReaderTest {
-
-    private final JsonNormalizedNodeBodyReader jsonBodyReader;
-    private static SchemaContext schemaContext;
-
-    public JsonIdentityrefToNnTest() throws NoSuchFieldException,
-            SecurityException {
-        super();
-        jsonBodyReader = new JsonNormalizedNodeBodyReader();
-    }
-
-    @BeforeClass
-    public static void initialize() {
-        schemaContext = schemaContextLoader("/json-to-nn/identityref",
-                schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void jsonIdentityrefToNn() throws NoSuchFieldException,
-            SecurityException, IllegalArgumentException,
-            IllegalAccessException, WebApplicationException, IOException {
-
-        String uri = "identityref-module:cont";
-        mockBodyReader(uri, jsonBodyReader, false);
-        InputStream inputStream = this.getClass().getResourceAsStream(
-                "/json-to-nn/identityref/json/data.json");
-
-        NormalizedNodeContext normalizedNodeContext = jsonBodyReader.readFrom(
-                null, null, null, mediaType, null, inputStream);
-
-        assertEquals("cont", normalizedNodeContext.getData().getNodeType()
-                .getLocalName());
-
-        String dataTree = NormalizedNodes.toStringTree(normalizedNodeContext
-                .getData());
-
-        assertTrue(dataTree.contains("cont1"));
-        assertTrue(dataTree
-                .contains("lf11 (identity:module?revision=2013-12-02)iden"));
-        assertTrue(dataTree
-                .contains("lf12 (identityref:module?revision=2013-12-02)iden_local"));
-        assertTrue(dataTree
-                .contains("lf13 (identityref:module?revision=2013-12-02)iden_local"));
-        assertTrue(dataTree
-                .contains("lf14 (identity:module?revision=2013-12-02)iden"));
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/json/to/nn/test/JsonLeafrefToNnTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/json/to/nn/test/JsonLeafrefToNnTest.java
deleted file mode 100644 (file)
index afeddc2..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.json.to.nn.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class JsonLeafrefToNnTest extends AbstractBodyReaderTest {
-
-    private final JsonNormalizedNodeBodyReader jsonBodyReader;
-    private static SchemaContext schemaContext;
-
-    public JsonLeafrefToNnTest() throws NoSuchFieldException, SecurityException {
-        super();
-        jsonBodyReader = new JsonNormalizedNodeBodyReader();
-    }
-
-    @BeforeClass
-    public static void initialize() {
-        schemaContext = schemaContextLoader("/json-to-nn/leafref",
-                schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void jsonIdentityrefToNormalizeNode() throws NoSuchFieldException,
-            SecurityException, IllegalArgumentException,
-            IllegalAccessException, WebApplicationException, IOException {
-
-        String uri = "leafref-module:cont";
-        mockBodyReader(uri, jsonBodyReader, false);
-        InputStream inputStream = this.getClass().getResourceAsStream(
-                "/json-to-nn/leafref/json/data.json");
-
-        NormalizedNodeContext normalizedNodeContext = jsonBodyReader.readFrom(
-                null, null, null, mediaType, null, inputStream);
-
-        assertEquals("cont", normalizedNodeContext.getData().getNodeType()
-                .getLocalName());
-        String dataTree = NormalizedNodes.toStringTree(normalizedNodeContext
-                .getData());
-        assertTrue(dataTree.contains("lf2 121"));
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/json/to/nn/test/JsonToNnTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/json/to/nn/test/JsonToNnTest.java
deleted file mode 100644 (file)
index 5f4945c..0000000
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.json.to.nn.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class JsonToNnTest extends AbstractBodyReaderTest {
-
-    private JsonNormalizedNodeBodyReader jsonBodyReader;
-    private SchemaContext schemaContext;
-
-    public JsonToNnTest() throws NoSuchFieldException, SecurityException {
-        super();
-    }
-
-    public static void initialize(final String path, SchemaContext schemaContext) {
-        schemaContext = schemaContextLoader(path, schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void simpleListTest() {
-        simpleTest("/json-to-nn/simple-list.json",
-                "/json-to-nn/simple-list-yang/1", "lst", "simple-list-yang1");
-    }
-
-    @Test
-    public void simpleContainerTest() {
-        simpleTest("/json-to-nn/simple-container.json",
-                "/json-to-nn/simple-container-yang", "cont",
-                "simple-container-yang");
-    }
-
-    @Test
-    public void multipleItemsInLeafListTest() {
-
-        initialize("/json-to-nn/simple-list-yang/1", schemaContext);
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                "/json-to-nn/multiple-leaflist-items.json",
-                "simple-list-yang1:lst");
-        assertNotNull(normalizedNodeContext);
-
-        final String dataTree = NormalizedNodes.toStringTree(normalizedNodeContext
-                .getData());
-        assertTrue(dataTree.contains("45"));
-        assertTrue(dataTree.contains("55"));
-        assertTrue(dataTree.contains("66"));
-    }
-
-    @Test
-    public void multipleItemsInListTest() {
-        initialize("/json-to-nn/simple-list-yang/3", schemaContext);
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                "/json-to-nn/multiple-items-in-list.json",
-                "multiple-items-yang:lst");
-        assertNotNull(normalizedNodeContext);
-
-        assertEquals("lst", normalizedNodeContext.getData().getNodeType()
-                .getLocalName());
-
-        verityMultipleItemsInList(normalizedNodeContext);
-    }
-
-    @Test
-    public void nullArrayToSimpleNodeWithNullValueTest() {
-        initialize("/json-to-nn/simple-list-yang/4", schemaContext);
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                "/json-to-nn/array-with-null.json", "array-with-null-yang:cont");
-        assertNotNull(normalizedNodeContext);
-
-        assertEquals("cont", normalizedNodeContext.getData().getNodeType()
-                .getLocalName());
-
-        final String dataTree = NormalizedNodes.toStringTree(normalizedNodeContext
-                .getData());
-        assertTrue(dataTree.contains("lf"));
-        assertTrue(dataTree.contains("null"));
-    }
-
-    @Test
-    public void incorrectTopLevelElementsTest() throws WebApplicationException,
-            IOException, NoSuchFieldException, SecurityException,
-            IllegalArgumentException, IllegalAccessException {
-
-        jsonBodyReader = new JsonNormalizedNodeBodyReader();
-        initialize("/json-to-nn/simple-list-yang/1", schemaContext);
-        mockBodyReader("simple-list-yang1:lst", jsonBodyReader, false);
-
-        InputStream inputStream = this.getClass().getResourceAsStream(
-                "/json-to-nn/wrong-top-level1.json");
-
-        int countExceptions = 0;
-        RestconfDocumentedException exception = null;
-
-        try {
-            jsonBodyReader.readFrom(null, null, null, mediaType, null,
-                    inputStream);
-        } catch (final RestconfDocumentedException e) {
-            exception = e;
-            countExceptions++;
-        }
-        assertNotNull(exception);
-        assertEquals(
-                "Error parsing input: Schema node with name cont wasn't found under (urn:ietf:params:xml:ns:netconf:base:1.0)data.",
-                exception.getErrors().get(0).getErrorMessage());
-
-        inputStream = this.getClass().getResourceAsStream(
-                "/json-to-nn/wrong-top-level2.json");
-        exception = null;
-        try {
-            jsonBodyReader.readFrom(null, null, null, mediaType, null,
-                    inputStream);
-        } catch (final RestconfDocumentedException e) {
-            exception = e;
-            countExceptions++;
-        }
-        assertNotNull(exception);
-        assertEquals(
-                "Error parsing input: Schema node with name lst1 wasn't found under (urn:ietf:params:xml:ns:netconf:base:1.0)data.",
-                exception.getErrors().get(0).getErrorMessage());
-
-        inputStream = this.getClass().getResourceAsStream(
-                "/json-to-nn/wrong-top-level3.json");
-        exception = null;
-        try {
-            jsonBodyReader.readFrom(null, null, null, mediaType, null,
-                    inputStream);
-        } catch (final RestconfDocumentedException e) {
-            exception = e;
-            countExceptions++;
-        }
-        assertNotNull(exception);
-        assertEquals(
-                "Error parsing input: Schema node with name lf wasn't found under (urn:ietf:params:xml:ns:netconf:base:1.0)data.",
-                exception.getErrors().get(0).getErrorMessage());
-        assertEquals(3, countExceptions);
-    }
-
-    @Test
-    public void emptyDataReadTest() throws WebApplicationException,
-            IOException, NoSuchFieldException, SecurityException,
-            IllegalArgumentException, IllegalAccessException {
-
-        initialize("/json-to-nn/simple-list-yang/4", schemaContext);
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                "/json-to-nn/empty-data.json", "array-with-null-yang:cont");
-        assertNotNull(normalizedNodeContext);
-
-        assertEquals("cont", normalizedNodeContext.getData().getNodeType()
-                .getLocalName());
-
-        final String dataTree = NormalizedNodes.toStringTree(normalizedNodeContext
-                .getData());
-
-        assertTrue(dataTree.contains("lflst1"));
-
-        assertTrue(dataTree.contains("lflst2 45"));
-
-        jsonBodyReader = new JsonNormalizedNodeBodyReader();
-        RestconfDocumentedException exception = null;
-        mockBodyReader("array-with-null-yang:cont", jsonBodyReader, false);
-        final InputStream inputStream = this.getClass().getResourceAsStream(
-                "/json-to-nn/empty-data.json1");
-
-        try {
-            jsonBodyReader.readFrom(null, null, null, mediaType, null,
-                    inputStream);
-        } catch (final RestconfDocumentedException e) {
-            exception = e;
-        }
-        assertNotNull(exception);
-        assertEquals("Error parsing input: null", exception.getErrors().get(0)
-                .getErrorMessage());
-    }
-
-    @Test
-    public void testJsonBlankInput() throws NoSuchFieldException,
-            SecurityException, IllegalArgumentException,
-            IllegalAccessException, WebApplicationException, IOException {
-        initialize("/json-to-nn/simple-list-yang/4", schemaContext);
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC("",
-                "array-with-null-yang:cont");
-        assertNull(normalizedNodeContext);
-    }
-
-    @Test
-    public void notSupplyNamespaceIfAlreadySupplied()
-            throws WebApplicationException, IOException, NoSuchFieldException,
-            SecurityException, IllegalArgumentException, IllegalAccessException {
-
-        initialize("/json-to-nn/simple-list-yang/1", schemaContext);
-
-        final String uri = "simple-list-yang1" + ":" + "lst";
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                "/json-to-nn/simple-list.json", uri);
-        assertNotNull(normalizedNodeContext);
-
-        verifyNormaluizedNodeContext(normalizedNodeContext, "lst");
-
-        mockBodyReader("simple-list-yang2:lst", jsonBodyReader, false);
-        final InputStream inputStream = this.getClass().getResourceAsStream(
-                "/json-to-nn/simple-list.json");
-
-        try {
-            jsonBodyReader.readFrom(null, null, null, mediaType, null,
-                    inputStream);
-            fail("NormalizedNodeContext should not be create because of different namespace");
-        } catch (final RestconfDocumentedException e) {
-        }
-
-        verifyNormaluizedNodeContext(normalizedNodeContext, "lst");
-    }
-
-    @Test
-    public void dataAugmentedTest() {
-
-        initialize("/common/augment/yang", schemaContext);
-
-        NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                "/common/augment/json/dataa.json", "main:cont");
-
-        assertNotNull(normalizedNodeContext);
-        assertEquals("cont", normalizedNodeContext.getData().getNodeType()
-                .getLocalName());
-
-        String dataTree = NormalizedNodes.toStringTree(normalizedNodeContext
-                .getData());
-        assertTrue(dataTree.contains("cont1"));
-        assertTrue(dataTree.contains("lf11 lf11 value from a"));
-
-        normalizedNodeContext = prepareNNC("/common/augment/json/datab.json",
-                "main:cont");
-
-        assertNotNull(normalizedNodeContext);
-        assertEquals("cont", normalizedNodeContext.getData().getNodeType()
-                .getLocalName());
-        dataTree = NormalizedNodes
-                .toStringTree(normalizedNodeContext.getData());
-        assertTrue(dataTree.contains("cont1"));
-        assertTrue(dataTree.contains("lf11 lf11 value from b"));
-    }
-
-    private void simpleTest(final String jsonPath, final String yangPath,
-            final String topLevelElementName, final String moduleName) {
-
-        initialize(yangPath, schemaContext);
-
-        final String uri = moduleName + ":" + topLevelElementName;
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(jsonPath, uri);
-        assertNotNull(normalizedNodeContext);
-
-        verifyNormaluizedNodeContext(normalizedNodeContext, topLevelElementName);
-    }
-
-    private NormalizedNodeContext prepareNNC(final String jsonPath, final String uri) {
-        jsonBodyReader = new JsonNormalizedNodeBodyReader();
-        try {
-            mockBodyReader(uri, jsonBodyReader, false);
-        } catch (NoSuchFieldException | SecurityException
-                | IllegalArgumentException | IllegalAccessException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-        final InputStream inputStream = this.getClass().getResourceAsStream(jsonPath);
-
-        NormalizedNodeContext normalizedNodeContext = null;
-
-        try {
-            normalizedNodeContext = jsonBodyReader.readFrom(null, null, null,
-                    mediaType, null, inputStream);
-        } catch (WebApplicationException | IOException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-
-        return normalizedNodeContext;
-    }
-
-    private void verifyNormaluizedNodeContext(
-            final NormalizedNodeContext normalizedNodeContext,
-            final String topLevelElementName) {
-        assertEquals(topLevelElementName, normalizedNodeContext.getData()
-                .getNodeType().getLocalName());
-
-        final String dataTree = NormalizedNodes.toStringTree(normalizedNodeContext
-                .getData());
-        assertTrue(dataTree.contains("cont1"));
-        assertTrue(dataTree.contains("lst1"));
-        assertTrue(dataTree.contains("lflst1"));
-        assertTrue(dataTree.contains("lflst1_1"));
-        assertTrue(dataTree.contains("lflst1_2"));
-        assertTrue(dataTree.contains("lf1"));
-    }
-
-    private void verityMultipleItemsInList(
-            final NormalizedNodeContext normalizedNodeContext) {
-
-        final String dataTree = NormalizedNodes.toStringTree(normalizedNodeContext
-                .getData());
-        assertTrue(dataTree.contains("lf11"));
-        assertTrue(dataTree.contains("lf11_1"));
-        assertTrue(dataTree.contains("lflst11"));
-        assertTrue(dataTree.contains("45"));
-        assertTrue(dataTree.contains("cont11"));
-        assertTrue(dataTree.contains("lst11"));
-    }
-
-    @Test
-    public void unsupportedDataFormatTest() throws NoSuchFieldException,
-            SecurityException, IllegalArgumentException,
-            IllegalAccessException, WebApplicationException, IOException {
-        jsonBodyReader = new JsonNormalizedNodeBodyReader();
-        initialize("/json-to-nn/simple-list-yang/1", schemaContext);
-        mockBodyReader("simple-list-yang1:lst", jsonBodyReader, false);
-
-        final InputStream inputStream = this.getClass().getResourceAsStream(
-                "/json-to-nn/unsupported-json-format.json");
-
-        RestconfDocumentedException exception = null;
-
-        try {
-            jsonBodyReader.readFrom(null, null, null, mediaType, null,
-                    inputStream);
-        } catch (final RestconfDocumentedException e) {
-            exception = e;
-        }
-        System.out.println(exception.getErrors().get(0).getErrorMessage());
-
-        assertTrue(exception.getErrors().get(0).getErrorMessage()
-                .contains("is not a simple type"));
-    }
-
-    @Test
-    public void invalidUriCharacterInValue() throws NoSuchFieldException,
-            SecurityException, IllegalArgumentException,
-            IllegalAccessException, WebApplicationException, IOException {
-
-        jsonBodyReader = new JsonNormalizedNodeBodyReader();
-        initialize("/json-to-nn/simple-list-yang/4", schemaContext);
-        mockBodyReader("array-with-null-yang:cont", jsonBodyReader, false);
-
-        final InputStream inputStream = this.getClass().getResourceAsStream(
-                "/json-to-nn/invalid-uri-character-in-value.json");
-
-        final NormalizedNodeContext normalizedNodeContext = jsonBodyReader.readFrom(
-                null, null, null, mediaType, null, inputStream);
-        assertNotNull(normalizedNodeContext);
-
-        assertEquals("cont", normalizedNodeContext.getData().getNodeType()
-                .getLocalName());
-
-        final String dataTree = NormalizedNodes.toStringTree(normalizedNodeContext
-                .getData());
-        assertTrue(dataTree.contains("lf1 module<Name:value lf1"));
-        assertTrue(dataTree.contains("lf2 module>Name:value lf2"));
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/json/test/NnJsonChoiceCaseTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/json/test/NnJsonChoiceCaseTest.java
deleted file mode 100644 (file)
index 0787bf7..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (c) 2015 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.sal.restconf.impl.nn.to.json.test;
-
-import static org.junit.Assert.assertTrue;
-import java.io.ByteArrayOutputStream;
-import java.io.OutputStream;
-import javax.ws.rs.core.MediaType;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.rest.common.TestRestconfUtils;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class NnJsonChoiceCaseTest extends AbstractBodyReaderTest {
-
-    private static SchemaContext schemaContext;
-    private final NormalizedNodeJsonBodyWriter jsonBodyWriter;
-
-    public NnJsonChoiceCaseTest() throws NoSuchFieldException,
-            SecurityException {
-        super();
-        jsonBodyWriter = new NormalizedNodeJsonBodyWriter();
-    }
-
-    @BeforeClass
-    public static void initialization() {
-        schemaContext = schemaContextLoader("/nn-to-json/choice", schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    /**
-     * Test when some data are in one case node and other in another. This isn't
-     * correct. Next Json validator should return error because nodes has to be
-     * from one case below concrete choice.
-     */
-    @Test(expected = NullPointerException.class)
-    public void nodeSchemasOnVariousChoiceCasePathTest() throws Exception {
-        getJson("/nn-to-json/choice/xml/data_various_path_err.xml");
-    }
-
-    /**
-     * Test when some data are in one case node and other in another.
-     * Additionally data are loadef from various choices. This isn't correct.
-     * Next Json validator should return error because nodes has to be from one
-     * case below concrete choice.
-     */
-    @Test(expected = NullPointerException.class)
-    public void nodeSchemasOnVariousChoiceCasePathAndMultipleChoicesTest()
-            throws Exception {
-        getJson("/nn-to-json/choice/xml/data_more_choices_same_level_various_paths_err.xml");
-    }
-
-    /**
-     * Test when second level data are red first, then first and at the end
-     * third level. Level represents pass through couple choice-case
-     */
-
-    @Test
-    public void nodeSchemasWithRandomOrderAccordingLevel() throws Exception {
-        final String json = getJson("/nn-to-json/choice/xml/data_random_level.xml");
-
-        assertTrue(json.contains("cont"));
-        assertTrue(json.contains("\"lf1\":\"lf1 val\""));
-        assertTrue(json.contains("\"lf1aaa\":\"lf1aaa val\""));
-        assertTrue(json.contains("\"lf1aa\":\"lf1aa val\""));
-        assertTrue(json.contains("\"lf1a\":121"));
-    }
-
-    /**
-     * Test when element from no first case is used
-     */
-    @Test
-    public void nodeSchemasNotInFirstCase() throws Exception {
-        final String json = getJson("/nn-to-json/choice/xml/data_no_first_case.xml");
-
-        assertTrue(json.contains("cont"));
-        assertTrue(json.contains("\"lf1\":\"lf1 val\""));
-        assertTrue(json.contains("\"lf1ab\":\"lf1ab val\""));
-        assertTrue(json.contains("\"lf1a\":121"));
-    }
-
-    /**
-     * Test when element in case is list
-     */
-    @Test
-    public void nodeSchemaAsList() throws Exception {
-        final String json = getJson("/nn-to-json/choice/xml/data_list.xml");
-
-        assertTrue(json.contains("cont"));
-        assertTrue(json.contains("\"lst1b\":["));
-        assertTrue(json.contains("{\"lf11b\":\"lf11b_1 val\"}"));
-        assertTrue(json.contains("{\"lf11b\":\"lf11b_2 val\"}"));
-    }
-
-    /**
-     * Test when element in case is container
-     */
-    @Test
-    public void nodeSchemaAsContainer() throws Exception {
-        final String json = getJson("/nn-to-json/choice/xml/data_container.xml");
-
-        assertTrue(json.contains("cont"));
-        assertTrue(json.contains("\"cont1c\":{"));
-        assertTrue(json.contains("\"lf11c\":\"lf11c val\""));
-    }
-
-    /**
-     * Test when element in case is leaflist
-     */
-    @Test
-    public void nodeSchemaAsLeafList() throws Exception {
-        final String json = getJson("/nn-to-json/choice/xml/data_leaflist.xml");
-
-        assertTrue(json.contains("cont"));
-        assertTrue(json.contains("\"lflst1d\":["));
-        assertTrue(json.contains("\"lflst1d_1 val\""));
-        assertTrue(json.contains("\"lflst1d_2 val\""));
-    }
-
-    /**
-     *
-     */
-    @Test
-    public void nodeSchemasInMultipleChoicesTest() throws Exception {
-        final String json = getJson("/nn-to-json/choice/xml/data_more_choices_same_level.xml");
-
-        assertTrue(json.contains("cont"));
-        assertTrue(json.contains("\"lf2b\":\"lf2b value\""));
-        assertTrue(json.contains("\"cont1c\":{"));
-        assertTrue(json.contains("\"lf11c\":\"lf11c val\""));
-    }
-
-    /**
-     * Test whether is possible to find data schema for node which is specified
-     * as dirrect subnode of choice (case without CASE key word)
-     */
-    @Test
-    public void nodeSchemasInCaseNotDefinedWithCaseKeyword() throws Exception {
-        final String json = getJson("/nn-to-json/choice/xml/data_case_defined_without_case.xml");
-
-        assertTrue(json.contains("cont"));
-        assertTrue(json.contains("\"lf2b\":\"lf2b val\""));
-        assertTrue(json.contains("\"e1\":45"));
-    }
-
-    /**
-     * Test of multiple use of choices
-     */
-    @Test
-    public void nodeSchemasInThreeChoicesAtSameLevel() throws Exception {
-        final String json = getJson("/nn-to-json/choice/xml/data_three_choices_same_level.xml");
-
-        assertTrue(json.contains("cont"));
-        assertTrue(json.contains("lf2b\":\"lf2b value"));
-        assertTrue(json.contains("lst4a\":[{"));
-        assertTrue(json.contains("{\"lf4ab\":33}"));
-        assertTrue(json.contains("{\"lf4ab\":37}"));
-        assertTrue(json.contains("\"lf1aaa\":\"lf1aaa value\""));
-    }
-
-    private String getJson(final String xmlPath) throws Exception {
-        final String uri = "choice-case-test:cont";
-        final NormalizedNodeContext testNN = TestRestconfUtils
-                .loadNormalizedContextFromXmlFile(xmlPath, uri);
-
-        final OutputStream output = new ByteArrayOutputStream();
-        jsonBodyWriter.writeTo(testNN, null, null, null, mediaType, null,
-                output);
-
-        return output.toString();
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        return null;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/json/test/NnToJsonLeafrefType.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/json/test/NnToJsonLeafrefType.java
deleted file mode 100644 (file)
index 65fcc66..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.nn.to.json.test;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import com.google.common.util.concurrent.UncheckedExecutionException;
-import java.io.ByteArrayOutputStream;
-import java.io.OutputStream;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.ws.rs.core.MediaType;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.rest.common.TestRestconfUtils;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class NnToJsonLeafrefType extends AbstractBodyReaderTest {
-
-    private static SchemaContext schemaContext;
-    private final NormalizedNodeJsonBodyWriter jsonBodyWriter;
-
-    public NnToJsonLeafrefType() throws NoSuchFieldException, SecurityException {
-        super();
-        jsonBodyWriter = new NormalizedNodeJsonBodyWriter();
-    }
-
-    @BeforeClass
-    public static void initialization() {
-        schemaContext = schemaContextLoader("/nn-to-json/leafref",
-                schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void leafrefAbsolutePathToExistingLeafTest()
- throws Exception {
-        final String json = toJson("/nn-to-json/leafref/xml/data_absolut_ref_to_existing_leaf.xml");
-        validateJson(".*\"lf3\":\\p{Blank}*\"true\".*", json);
-    }
-
-    @Test
-    public void leafrefRelativePathToExistingLeafTest()
- throws Exception {
-        final String json = toJson("/nn-to-json/leafref/xml/data_relativ_ref_to_existing_leaf.xml");
-        validateJson(".*\"lf2\":\\p{Blank}*\"121\".*", json);
-    }
-
-    @Test(expected = UncheckedExecutionException.class)
-    public void leafrefToNonExistingLeafTest() throws Exception {
-        toJson("/nn-to-json/leafref/xml/data_ref_to_non_existing_leaf.xml");
-    }
-
-    @Test
-    public void leafrefToNotLeafTest() throws Exception {
-        final String json = toJson("/nn-to-json/leafref/xml/data_ref_to_not_leaf.xml");
-        validateJson(
-                ".*\"cont-augment-module\\p{Blank}*:\\p{Blank}*lf6\":\\p{Blank}*\"44\".*",
-                json);
-    }
-
-    @Test
-    public void leafrefFromLeafListToLeafTest() throws Exception {
-        final String json = toJson("/nn-to-json/leafref/xml/data_relativ_ref_from_leaflist_to_existing_leaf.xml");
-        validateJson(
-                ".*\"cont-augment-module\\p{Blank}*:\\p{Blank}*lflst1\":\\p{Blank}*.*\"346\",*\"347\",*\"345\".*",
-                json);
-    }
-
-    @Test
-    public void leafrefFromLeafrefToLeafrefTest() throws Exception {
-        final String json = toJson("/nn-to-json/leafref/xml/data_from_leafref_to_leafref.xml");
-        validateJson(
-                ".*\"cont-augment-module\\p{Blank}*:\\p{Blank}*lf7\":\\p{Blank}*\"200\".*",
-                json);
-    }
-
-    private void validateJson(final String regex, final String value) {
-        assertNotNull(value);
-        final Pattern ptrn = Pattern.compile(regex, Pattern.DOTALL);
-        final Matcher mtch = ptrn.matcher(value);
-        assertTrue(mtch.matches());
-    }
-
-    private String toJson(final String xmlDataPath) throws Exception {
-        final String uri = "main-module:cont";
-        final String pathToInputFile = xmlDataPath;
-
-        final NormalizedNodeContext testNN = TestRestconfUtils
-                .loadNormalizedContextFromXmlFile(pathToInputFile, uri);
-
-        final OutputStream output = new ByteArrayOutputStream();
-        jsonBodyWriter.writeTo(testNN, null, null, null, mediaType, null,
-                output);
-        final String jsonOutput = output.toString();
-
-        return jsonOutput;
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        return new MediaType(MediaType.APPLICATION_XML, null);
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/json/test/NnToJsonNotExistingLeafTypeTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/json/test/NnToJsonNotExistingLeafTypeTest.java
deleted file mode 100644 (file)
index 94ad703..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.nn.to.json.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import com.google.common.base.Preconditions;
-import org.junit.Test;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.controller.sal.restconf.impl.test.DummyType;
-import org.opendaylight.controller.sal.restconf.impl.test.TestUtils;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.parser.builder.impl.ContainerSchemaNodeBuilder;
-import org.opendaylight.yangtools.yang.parser.builder.impl.LeafSchemaNodeBuilder;
-
-public class NnToJsonNotExistingLeafTypeTest {
-
-    @Test
-    public void incorrectTopLevelElementTest() {
-        final NormalizedNodeContext normalizedNodeContext = prepareNormalizedNode();
-        assertNotNull(normalizedNodeContext);
-        assertEquals(normalizedNodeContext.getData().getNodeType()
-                .getLocalName(), "cont");
-
-        final String output = NormalizedNodes.toStringTree(normalizedNodeContext
-                .getData());
-        assertNotNull(output);
-        assertTrue(output.contains("lf1"));
-    }
-
-    private NormalizedNodeContext prepareNormalizedNode() {
-        final QName lf1 = QName.create("simple:uri", "2012-12-17", "lf1");
-
-        final DataSchemaNode contSchemaNode = prepareDataSchemaNode();
-
-        Preconditions.checkState(contSchemaNode instanceof ContainerSchemaNode);
-        final ContainerSchemaNode conContSchemaNode = (ContainerSchemaNode) contSchemaNode;
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> contContBuilder = Builders
-                .containerBuilder(conContSchemaNode);
-
-        final DataSchemaNode lf1SchemaNode = conContSchemaNode
-                .getDataChildByName(lf1);
-        Preconditions.checkState(lf1SchemaNode instanceof LeafSchemaNode);
-
-        final String lf1String = "";
-        contContBuilder.withChild(Builders
-                .leafBuilder((LeafSchemaNode) lf1SchemaNode)
-                .withValue(lf1String).build());
-
-        final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext(
-                new InstanceIdentifierContext<DataSchemaNode>(null,
-                        contSchemaNode, null, null), contContBuilder.build());
-
-        return testNormalizedNodeContext;
-    }
-
-    private DataSchemaNode prepareDataSchemaNode() {
-        final ContainerSchemaNodeBuilder contBuild = new ContainerSchemaNodeBuilder(
-                "module", 1, TestUtils.buildQName("cont", "simple:uri",
-                        "2012-12-17"), SchemaPath.create(true,
-                        QName.create("dummy")));
-        final LeafSchemaNodeBuilder leafBuild = new LeafSchemaNodeBuilder("module",
-                2, TestUtils.buildQName("lf1", "simple:uri", "2012-12-17"),
-                SchemaPath.create(true, QName.create("dummy")));
-        leafBuild.setType(new DummyType());
-        leafBuild.setConfiguration(true);
-
-        contBuild.addChildNode(leafBuild);
-        return contBuild.build();
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/json/test/NnToJsonWithAugmentTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/json/test/NnToJsonWithAugmentTest.java
deleted file mode 100644 (file)
index f9bfb0b..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.nn.to.json.test;
-
-import static org.junit.Assert.assertTrue;
-import com.google.common.base.Preconditions;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.rest.common.TestRestconfUtils;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class NnToJsonWithAugmentTest extends AbstractBodyReaderTest {
-
-    private static SchemaContext schemaContext;
-    private final NormalizedNodeJsonBodyWriter xmlBodyWriter;
-
-    public NnToJsonWithAugmentTest() throws NoSuchFieldException,
-            SecurityException {
-        super();
-        xmlBodyWriter = new NormalizedNodeJsonBodyWriter();
-    }
-
-    @BeforeClass
-    public static void initialize() {
-        schemaContext = schemaContextLoader("/nn-to-json/augmentation",
-                schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void augmentedElementsToJson() throws WebApplicationException,
-            IOException {
-        final String uri = "yang:cont";
-        final String pathToInputFile = "/nn-to-json/augmentation/xml/data.xml";
-
-        final NormalizedNodeContext testNN = TestRestconfUtils
-                .loadNormalizedContextFromXmlFile(pathToInputFile, uri);
-
-        final OutputStream output = new ByteArrayOutputStream();
-        xmlBodyWriter
-                .writeTo(testNN, null, null, null, mediaType, null, output);
-        final String jsonOutput = output.toString();
-
-        Preconditions.checkNotNull(jsonOutput);
-
-        assertTrue(jsonOutput.contains("\"cont1\"" + ":" + '{'));
-        assertTrue(jsonOutput.contains("\"lf11\"" + ":" + "\"lf11\""));
-        assertTrue(jsonOutput.contains("\"lst1\"" + ":" + '['));
-        assertTrue(jsonOutput.contains("\"lf11\"" + ":" + "\"lf1_1\""));
-        assertTrue(jsonOutput.contains("\"lf11\"" + ":" + "\"lf1_2\""));
-        assertTrue(jsonOutput.contains("\"lflst1\"" + ":" + "["));
-        assertTrue(jsonOutput.contains("\"lf2\"" + ":" + "\"lf2\""));
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        return new MediaType(MediaType.APPLICATION_XML, null);
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnInstanceIdentifierToXmlTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnInstanceIdentifierToXmlTest.java
deleted file mode 100644 (file)
index db5e4d0..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.nn.to.xml.test;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import com.google.common.collect.Iterables;
-import java.io.ByteArrayOutputStream;
-import java.io.OutputStream;
-import java.net.URISyntaxException;
-import java.util.List;
-import javax.ws.rs.core.MediaType;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.ListNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class NnInstanceIdentifierToXmlTest extends AbstractBodyReaderTest {
-
-    private static SchemaContext schemaContext;
-    NormalizedNodeXmlBodyWriter xmlBodyWriter;
-
-    public NnInstanceIdentifierToXmlTest() throws NoSuchFieldException,
-            SecurityException {
-        super();
-        xmlBodyWriter = new NormalizedNodeXmlBodyWriter();
-    }
-
-    @BeforeClass
-    public static void initialization() throws URISyntaxException {
-        schemaContext = schemaContextLoader("/instanceidentifier/yang",
-                schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void nnAsYangInstanceIdentifierAugmentLeafList() throws Exception {
-        final NormalizedNodeContext normalizedNodeContext = prepareNNCLeafList();
-
-        final OutputStream output = new ByteArrayOutputStream();
-
-        xmlBodyWriter.writeTo(normalizedNodeContext, null, null, null,
-                mediaType, null, output);
-
-        assertNotNull(output);
-
-        final String outputJson = output.toString();
-
-        assertTrue(outputJson.contains("<cont xmlns="));
-        assertTrue(outputJson.contains(
-                '"' + "instance:identifier:module" + '"'));
-        assertTrue(outputJson.contains(">"));
-
-        assertTrue(outputJson.contains("<cont1>"));
-
-        assertTrue(outputJson.contains("<lf11 xmlns="));
-        assertTrue(outputJson.contains(
-                '"' + "augment:module:leaf:list" + '"'));
-        assertTrue(outputJson.contains(">"));
-        assertTrue(outputJson.contains("/instanceidentifier/"));
-        assertTrue(outputJson.contains("</lf11>"));
-
-        assertTrue(outputJson.contains("<lflst11 xmlns="));
-        assertTrue(outputJson.contains(
-                '"' + "augment:module:leaf:list" + '"'));
-        assertTrue(outputJson.contains(">"));
-        assertTrue(outputJson.contains("lflst11 value"));
-        assertTrue(outputJson.contains("</lflst11>"));
-
-        assertTrue(outputJson.contains("</cont1>"));
-        assertTrue(outputJson.contains("</cont>"));
-    }
-
-    private NormalizedNodeContext prepareNNCLeafList()
-            throws URISyntaxException {
-        final QName cont = QName.create("instance:identifier:module", "2014-01-17",
-                "cont");
-        final QName cont1 = QName.create("instance:identifier:module", "2014-01-17",
-                "cont1");
-        final QName lflst11 = QName.create("augment:module:leaf:list", "2014-01-17",
-                "lflst11");
-        final QName lf11 = QName.create("augment:module:leaf:list", "2014-01-17",
-                "lf11");
-
-        final DataSchemaNode schemaCont = schemaContext.getDataChildByName(cont);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> dataCont = Builders
-                .containerBuilder((ContainerSchemaNode) schemaCont);
-
-        final DataSchemaNode schemaCont1 = ((ContainerSchemaNode) schemaCont)
-                .getDataChildByName(cont1);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> dataCont1 = Builders
-                .containerBuilder((ContainerSchemaNode) schemaCont1);
-
-        final List<DataSchemaNode> instanceLfLst11 = ControllerContext
-                .findInstanceDataChildrenByName(
-                        (DataNodeContainer) schemaCont1, lflst11.getLocalName());
-
-        final DataSchemaNode lfLst11Schema = Iterables
-                .getFirst(instanceLfLst11, null);
-        final ListNodeBuilder<Object, LeafSetEntryNode<Object>> lfLst11Data = Builders
-                .leafSetBuilder((LeafListSchemaNode) lfLst11Schema);
-
-        lfLst11Data.withChild(Builders
-                .leafSetEntryBuilder((LeafListSchemaNode) lfLst11Schema)
-                .withValue("lflst11 value").build());
-        dataCont1.withChild(lfLst11Data.build());
-
-        final List<DataSchemaNode> instanceLf11 = ControllerContext
-                .findInstanceDataChildrenByName(
-                        (DataNodeContainer) schemaCont1, lf11.getLocalName());
-        final DataSchemaNode lf11Schema = Iterables.getFirst(instanceLf11, null);
-
-        dataCont1.withChild(Builders.leafBuilder((LeafSchemaNode) lf11Schema)
-                .withValue("/instanceidentifier/").build());
-        dataCont.withChild(dataCont1.build());
-
-        final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext(
-                new InstanceIdentifierContext<DataSchemaNode>(null, schemaCont,
-                        null, schemaContext), dataCont.build());
-
-        return testNormalizedNodeContext;
-    }
-
-    @Test
-    public void nnAsYangInstanceIdentifierAugment() throws Exception {
-
-        final NormalizedNodeContext normalizedNodeContext = preparNNC();
-        final NormalizedNodeXmlBodyWriter xmlBodyWriter = new NormalizedNodeXmlBodyWriter();
-        final OutputStream output = new ByteArrayOutputStream();
-
-        xmlBodyWriter.writeTo(normalizedNodeContext, null, null, null,
-                mediaType, null, output);
-
-        assertNotNull(output);
-
-        final String outputJson = output.toString();
-
-        assertTrue(outputJson.contains("<cont xmlns="));
-        assertTrue(outputJson.contains(
-                '"' + "instance:identifier:module" + '"'));
-        assertTrue(outputJson.contains(">"));
-
-        assertTrue(outputJson.contains("<cont1>"));
-
-        assertTrue(outputJson.contains("<lst11 xmlns="));
-        assertTrue(outputJson.contains('"' + "augment:module" + '"'));
-        assertTrue(outputJson.contains(">"));
-
-        assertTrue(outputJson.contains(
-                "<keyvalue111>keyvalue111</keyvalue111>"));
-        assertTrue(outputJson.contains(
-                "<keyvalue112>keyvalue112</keyvalue112>"));
-
-        assertTrue(outputJson.contains("<lf111 xmlns="));
-        assertTrue(outputJson.contains(
-                '"' + "augment:augment:module" + '"'));
-        assertTrue(outputJson.contains(">/cont/cont1/lf12</lf111>"));
-
-        assertTrue(outputJson.contains("<lf112 xmlns="));
-        assertTrue(outputJson.contains(
-                '"' + "augment:augment:module" + '"'));
-        assertTrue(outputJson.contains(">lf12 value</lf112>"));
-
-        assertTrue(outputJson.contains("</lst11></cont1></cont>"));
-    }
-
-    private NormalizedNodeContext preparNNC() {
-        final QName cont = QName.create("instance:identifier:module", "2014-01-17",
-                "cont");
-        final QName cont1 = QName.create("instance:identifier:module", "2014-01-17",
-                "cont1");
-        final QName lst11 = QName.create("augment:module", "2014-01-17", "lst11");
-        final QName lf11 = QName.create("augment:augment:module", "2014-01-17",
-                "lf111");
-        final QName lf12 = QName.create("augment:augment:module", "2014-01-17",
-                "lf112");
-        final QName keyvalue111 = QName.create("augment:module", "2014-01-17",
-                "keyvalue111");
-        final QName keyvalue112 = QName.create("augment:module", "2014-01-17",
-                "keyvalue112");
-
-        final DataSchemaNode schemaCont = schemaContext.getDataChildByName(cont);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> dataCont = Builders
-                .containerBuilder((ContainerSchemaNode) schemaCont);
-
-        final DataSchemaNode schemaCont1 = ((ContainerSchemaNode) schemaCont)
-                .getDataChildByName(cont1);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> dataCont1 = Builders
-                .containerBuilder((ContainerSchemaNode) schemaCont1);
-
-        final List<DataSchemaNode> instanceLst11 = ControllerContext
-                .findInstanceDataChildrenByName(
-                        (DataNodeContainer) schemaCont1, lst11.getLocalName());
-        final DataSchemaNode lst11Schema = Iterables.getFirst(instanceLst11, null);
-
-        final CollectionNodeBuilder<MapEntryNode, MapNode> dataLst11 = Builders
-                .mapBuilder((ListSchemaNode) lst11Schema);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> dataLst11Vaule = Builders
-                .mapEntryBuilder((ListSchemaNode) lst11Schema);
-
-        dataLst11Vaule.withChild(buildLeaf(lst11Schema, keyvalue111, dataLst11,
-                "keyvalue111"));
-
-        dataLst11Vaule.withChild(buildLeaf(lst11Schema, keyvalue112, dataLst11,
-                "keyvalue112"));
-
-        dataLst11Vaule.withChild(buildLeaf(lst11Schema, lf11, dataLst11,
-                "/cont/cont1/lf12"));
-
-        dataLst11Vaule.withChild(buildLeaf(lst11Schema, lf12, dataLst11,
-                "lf12 value"));
-
-        dataLst11.withChild(dataLst11Vaule.build());
-
-        dataCont1.withChild(dataLst11.build());
-        dataCont.withChild(dataCont1.build());
-
-        final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext(
-                new InstanceIdentifierContext<DataSchemaNode>(null, schemaCont,
-                        null, schemaContext), dataCont.build());
-
-        return testNormalizedNodeContext;
-    }
-
-    private DataContainerChild<?, ?> buildLeaf(final DataSchemaNode lst11Schema,
-            final QName qname,
-            final CollectionNodeBuilder<MapEntryNode, MapNode> dataLst11, final Object value) {
-
-        final List<DataSchemaNode> instanceLf = ControllerContext
-                .findInstanceDataChildrenByName(
-                        (DataNodeContainer) lst11Schema, qname.getLocalName());
-        final DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null);
-
-        return Builders.leafBuilder((LeafSchemaNode) schemaLf).withValue(value)
-                .build();
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        return null;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlNotExistingLeafTypeTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlNotExistingLeafTypeTest.java
deleted file mode 100644 (file)
index 50ca667..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.nn.to.xml.test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.OutputStream;
-import javax.ws.rs.core.MediaType;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.controller.sal.restconf.impl.test.DummyType;
-import org.opendaylight.controller.sal.restconf.impl.test.TestUtils;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.parser.builder.impl.ContainerSchemaNodeBuilder;
-import org.opendaylight.yangtools.yang.parser.builder.impl.LeafSchemaNodeBuilder;
-
-public class NnToXmlNotExistingLeafTypeTest extends AbstractBodyReaderTest {
-
-    public NnToXmlNotExistingLeafTypeTest() throws NoSuchFieldException,
-            SecurityException {
-        super();
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void incorrectTopLevelElementTest() throws Exception {
-        final NormalizedNodeXmlBodyWriter xmlBodyWriter = new NormalizedNodeXmlBodyWriter();
-        final OutputStream output = new ByteArrayOutputStream();
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(prepareDataSchemaNode());
-        xmlBodyWriter.writeTo(normalizedNodeContext, null, null, null,
-                    mediaType, null, output);
-
-    }
-
-    private NormalizedNodeContext prepareNNC(final DataSchemaNode dataSchemaNode) {
-        final QName cont = QName.create("simple:uri", "2012-12-17", "cont");
-        final QName lf = QName.create("simple:uri", "2012-12-17", "lf1");
-
-        final DataSchemaNode contSchema = ((ContainerSchemaNode) dataSchemaNode)
-                .getDataChildByName(cont);
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> dataCont = Builders
-                .containerBuilder((ContainerSchemaNode) contSchema);
-
-        final DataSchemaNode lfSchema = ((ContainerSchemaNode) dataSchemaNode)
-                .getDataChildByName(lf);
-
-        dataCont.withChild(Builders.leafBuilder((LeafSchemaNode) lfSchema)
-                .withValue("any value").build());
-
-        final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext(
-                new InstanceIdentifierContext<DataSchemaNode>(null, contSchema,
-                        null, (SchemaContext) dataSchemaNode), dataCont.build());
-
-        return testNormalizedNodeContext;
-    }
-
-    private DataSchemaNode prepareDataSchemaNode() {
-        final ContainerSchemaNodeBuilder contBuild = new ContainerSchemaNodeBuilder(
-                "module", 1, TestUtils.buildQName("cont", "simple:uri",
-                        "2012-12-17"), null);
-        final LeafSchemaNodeBuilder leafBuild = new LeafSchemaNodeBuilder("module",
-                2, TestUtils.buildQName("lf1", "simple:uri", "2012-12-17"),
-                null);
-        leafBuild.setType(new DummyType());
-        leafBuild.setConfiguration(true);
-
-        contBuild.addChildNode(leafBuild);
-        return contBuild.build();
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        return null;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlTest.java
deleted file mode 100644 (file)
index 941562e..0000000
+++ /dev/null
@@ -1,438 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.nn.to.xml.test;
-
-import static org.junit.Assert.assertTrue;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import java.io.ByteArrayOutputStream;
-import java.io.OutputStream;
-import java.util.List;
-import javax.ws.rs.core.MediaType;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair;
-import org.opendaylight.yangtools.yang.model.util.BinaryType;
-import org.opendaylight.yangtools.yang.model.util.BitsType;
-import org.opendaylight.yangtools.yang.model.util.BooleanType;
-import org.opendaylight.yangtools.yang.model.util.EmptyType;
-import org.opendaylight.yangtools.yang.model.util.EnumerationType;
-import org.opendaylight.yangtools.yang.model.util.Int16;
-import org.opendaylight.yangtools.yang.model.util.Int32;
-import org.opendaylight.yangtools.yang.model.util.Int64;
-import org.opendaylight.yangtools.yang.model.util.Int8;
-import org.opendaylight.yangtools.yang.model.util.StringType;
-import org.opendaylight.yangtools.yang.model.util.Uint16;
-import org.opendaylight.yangtools.yang.model.util.Uint32;
-import org.opendaylight.yangtools.yang.model.util.Uint64;
-import org.opendaylight.yangtools.yang.model.util.Uint8;
-import org.opendaylight.yangtools.yang.model.util.UnionType;
-
-public class NnToXmlTest extends AbstractBodyReaderTest {
-
-    private final NormalizedNodeXmlBodyWriter xmlBodyWriter;
-    private static SchemaContext schemaContext;
-
-    public NnToXmlTest() throws NoSuchFieldException, SecurityException {
-        super();
-        xmlBodyWriter = new NormalizedNodeXmlBodyWriter();
-    }
-
-    @BeforeClass
-    public static void initialization() {
-        schemaContext = schemaContextLoader("/nn-to-xml/yang", schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void nnAsYangIdentityrefToXMLTest() throws Exception {
-        final NormalizedNodeContext normalizedNodeContext = prepareIdrefData(null,
-                true);
-        nnToXml(normalizedNodeContext,
-                "<lf11 xmlns:x=\"referenced:module\">x:iden</lf11>");
-    }
-
-    @Test
-    public void nnAsYangIdentityrefWithQNamePrefixToXMLTest() throws Exception {
-        final NormalizedNodeContext normalizedNodeContext = prepareIdrefData(
-                "prefix", true);
-        nnToXml(normalizedNodeContext, "<lf11 xmlns",
-                "=\"referenced:module\">", ":iden</lf11>");
-    }
-
-    @Test
-    public void nnAsYangIdentityrefWithPrefixToXMLTest() throws Exception {
-        final NormalizedNodeContext normalizedNodeContext = prepareIdrefData(
-                "prefix", false);
-        nnToXml(normalizedNodeContext, "<lf11>no qname value</lf11>");
-    }
-
-    @Test
-    public void nnAsYangLeafrefWithPrefixToXMLTest() throws Exception {
-        final NormalizedNodeContext normalizedNodeContext = prepareLeafrefData();
-        nnToXml(normalizedNodeContext, "<lfBoolean>true</lfBoolean>",
-                "<lfLfref>true</lfLfref>");
-    }
-
-    @Test
-    public void nnAsYangStringToXmlTest() throws Exception {
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(StringType.getInstance())
-                        .deserialize("lfStr value"), "lfStr");
-        nnToXml(normalizedNodeContext, "<lfStr>lfStr value</lfStr>");
-    }
-
-    @Test
-    public void nnAsYangInt8ToXmlTest() throws Exception {
-        final String elName = "lfInt8";
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(Int8.getInstance()).deserialize(
-                        "14"), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">14</" + elName
-                + ">");
-    }
-
-    @Test
-    public void nnAsYangInt16ToXmlTest() throws Exception {
-        final String elName = "lfInt16";
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(Int16.getInstance()).deserialize(
-                        "3000"), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">3000</" + elName
-                + ">");
-    }
-
-    @Test
-    public void nnAsYangInt32ToXmlTest() throws Exception {
-        final String elName = "lfInt32";
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(Int32.getInstance()).deserialize(
-                        "201234"), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">201234</"
-                + elName + ">");
-    }
-
-    @Test
-    public void nnAsYangInt64ToXmlTest() throws Exception {
-        final String elName = "lfInt64";
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(Int64.getInstance()).deserialize(
-                        "5123456789"), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">5123456789</"
-                + elName + ">");
-    }
-
-    @Test
-    public void nnAsYangUint8ToXmlTest() throws Exception {
-        final String elName = "lfUint8";
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(Uint8.getInstance()).deserialize(
-                        "200"), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">200</" + elName
-                + ">");
-    }
-
-    @Test
-    public void snAsYangUint16ToXmlTest() throws Exception {
-        final String elName = "lfUint16";
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(Uint16.getInstance())
-                        .deserialize("4000"), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">4000</" + elName
-                + ">");
-    }
-
-    @Test
-    public void nnAsYangUint32ToXmlTest() throws Exception {
-        final String elName = "lfUint32";
-
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(Uint32.getInstance())
-                        .deserialize("4123456789"), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">4123456789</"
-                + elName + ">");
-    }
-
-    @Test
-    public void snAsYangUint64ToXmlTest() throws Exception {
-        final String elName = "lfUint64";
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(Uint64.getInstance())
-                        .deserialize("5123456789"), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">5123456789</"
-                + elName + ">");
-    }
-
-    @Test
-    public void nnAsYangBinaryToXmlTest() throws Exception {
-        final String elName = "lfBinary";
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec
-                        .from(BinaryType.getInstance())
-                        .deserialize(
-                                "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567"),
-                elName);
-        nnToXml(
-                normalizedNodeContext,
-                "<"
-                        + elName
-                        + ">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567</"
-                        + elName + ">");
-    }
-
-    @Test
-    public void nnAsYangBitsToXmlTest() throws Exception {
-        final BitsTypeDefinition.Bit mockBit1 = Mockito
-                .mock(BitsTypeDefinition.Bit.class);
-        Mockito.when(mockBit1.getName()).thenReturn("one");
-        final BitsTypeDefinition.Bit mockBit2 = Mockito
-                .mock(BitsTypeDefinition.Bit.class);
-        Mockito.when(mockBit2.getName()).thenReturn("two");
-        final List<BitsTypeDefinition.Bit> bitList = Lists.newArrayList(
-                mockBit1, mockBit2);
-
-        final String elName = "lfBits";
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec
-                        .from(BitsType.create(Mockito.mock(SchemaPath.class),
-                                bitList)).deserialize("one two"), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">one two</"
-                + elName + ">");
-    }
-
-    @Test
-    public void nnAsYangEnumerationToXmlTest() throws Exception {
-        final EnumTypeDefinition.EnumPair mockEnum = Mockito
-                .mock(EnumTypeDefinition.EnumPair.class);
-        Mockito.when(mockEnum.getName()).thenReturn("enum2");
-        final List<EnumPair> enumList = Lists.newArrayList(mockEnum);
-
-        final String elName = "lfEnumeration";
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec
-                        .from(EnumerationType.create(
-                                Mockito.mock(SchemaPath.class), enumList,
-                                Optional.<EnumTypeDefinition.EnumPair> absent()))
-                        .deserialize("enum2"), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">enum2</"
-                + elName + ">");
-    }
-
-    @Test
-    public void nnAsYangEmptyToXmlTest() throws Exception {
-        final String elName = "lfEmpty";
-        final NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(EmptyType.getInstance())
-                        .deserialize(null), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + "></" + elName
-                + ">");
-    }
-
-    @Test
-    public void nnAsYangBooleanToXmlTest() throws Exception {
-        final String elName = "lfBoolean";
-        NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(BooleanType.getInstance())
-.deserialize("false"), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">false</"
-                + elName + ">");
-
-        normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(BooleanType.getInstance())
-                        .deserialize("true"), elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">true</" + elName
-                + ">");
-    }
-
-    @Test
-    public void nnAsYangUnionToXmlTest() throws Exception {
-
-        final BitsTypeDefinition.Bit mockBit1 = Mockito
-                .mock(BitsTypeDefinition.Bit.class);
-        Mockito.when(mockBit1.getName()).thenReturn("first");
-        final BitsTypeDefinition.Bit mockBit2 = Mockito
-                .mock(BitsTypeDefinition.Bit.class);
-        Mockito.when(mockBit2.getName()).thenReturn("second");
-        final List<BitsTypeDefinition.Bit> bitList = Lists.newArrayList(
-                mockBit1, mockBit2);
-
-        final List<TypeDefinition<?>> types = Lists
-                .<TypeDefinition<?>> newArrayList(Int8.getInstance(), BitsType
-                        .create(Mockito.mock(SchemaPath.class), bitList),
-                        BooleanType.getInstance());
-        final UnionType unionType = UnionType.create(types);
-
-        final String elName = "lfUnion";
-        final String int8 = "15";
-
-        NormalizedNodeContext normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(unionType).deserialize(int8),
-                elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">15</" + elName
-                + ">");
-
-        final String bits = "first second";
-        normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(unionType).deserialize(bits),
-                elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">first second</"
-                + elName + ">");
-
-        final String bool = "true";
-        normalizedNodeContext = prepareNNC(
-                TypeDefinitionAwareCodec.from(unionType).deserialize(bool),
-                elName);
-        nnToXml(normalizedNodeContext, "<" + elName + ">true</" + elName
-                + ">");
-    }
-
-    private NormalizedNodeContext prepareNNC(final Object object, final String name) {
-        final QName cont = QName.create("basic:module", "2013-12-2", "cont");
-        final QName lf = QName.create("basic:module", "2013-12-2", name);
-
-        final DataSchemaNode contSchema = schemaContext.getDataChildByName(cont);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> contData = Builders
-                .containerBuilder((ContainerSchemaNode) contSchema);
-
-        final List<DataSchemaNode> instanceLf = ControllerContext
-                .findInstanceDataChildrenByName((DataNodeContainer) contSchema,
-                        lf.getLocalName());
-        final DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null);
-
-        contData.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf)
-                .withValue(object).build());
-
-        final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext(
-                new InstanceIdentifierContext<DataSchemaNode>(null, contSchema,
-                        null, schemaContext), contData.build());
-
-        return testNormalizedNodeContext;
-    }
-
-    private void nnToXml(
-            final NormalizedNodeContext normalizedNodeContext,
-            final String... xmlRepresentation)
- throws Exception {
-        final OutputStream output = new ByteArrayOutputStream();
-        xmlBodyWriter.writeTo(normalizedNodeContext, null, null, null,
-                    mediaType, null, output);
-
-        for (int i = 0; i < xmlRepresentation.length; i++) {
-            assertTrue(output.toString().contains(xmlRepresentation[i]));
-        }
-    }
-
-    private NormalizedNodeContext prepareLeafrefData() {
-        final QName cont = QName.create("basic:module", "2013-12-2", "cont");
-        final QName lfBoolean = QName
-                .create("basic:module", "2013-12-2", "lfBoolean");
-        final QName lfLfref = QName.create("basic:module", "2013-12-2", "lfLfref");
-
-        final DataSchemaNode contSchema = schemaContext.getDataChildByName(cont);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> contData = Builders
-                .containerBuilder((ContainerSchemaNode) contSchema);
-
-        List<DataSchemaNode> instanceLf = ControllerContext
-                .findInstanceDataChildrenByName((DataNodeContainer) contSchema,
-                        lfBoolean.getLocalName());
-        DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null);
-
-        contData.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf)
-                .withValue(Boolean.TRUE).build());
-
-        instanceLf = ControllerContext.findInstanceDataChildrenByName(
-                (DataNodeContainer) contSchema, lfLfref.getLocalName());
-        schemaLf = Iterables.getFirst(instanceLf, null);
-
-        contData.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf)
-                .withValue("true").build());
-
-        final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext(
-                new InstanceIdentifierContext<DataSchemaNode>(null, contSchema,
-                        null, schemaContext), contData.build());
-
-        return testNormalizedNodeContext;
-    }
-
-    private NormalizedNodeContext prepareIdrefData(final String prefix,
-            final boolean valueAsQName) {
-        final QName cont = QName.create("basic:module", "2013-12-2", "cont");
-        final QName cont1 = QName.create("basic:module", "2013-12-2", "cont1");
-        final QName lf11 = QName.create("basic:module", "2013-12-2", "lf11");
-
-        final DataSchemaNode contSchema = schemaContext.getDataChildByName(cont);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> contData = Builders
-                .containerBuilder((ContainerSchemaNode) contSchema);
-
-        final DataSchemaNode cont1Schema = ((ContainerSchemaNode) contSchema)
-                .getDataChildByName(cont1);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> cont1Data = Builders
-                .containerBuilder((ContainerSchemaNode) cont1Schema);
-
-        Object value = null;
-        if (valueAsQName) {
-            value = QName.create("referenced:module", "2013-12-2", "iden");
-        } else {
-            value = "no qname value";
-        }
-
-        final List<DataSchemaNode> instanceLf = ControllerContext
-                .findInstanceDataChildrenByName(
-                        (DataNodeContainer) cont1Schema, lf11.getLocalName());
-        final DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null);
-
-        cont1Data.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf)
-                .withValue(value).build());
-
-        contData.withChild(cont1Data.build());
-
-        final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext(
-                new InstanceIdentifierContext<DataSchemaNode>(null, contSchema,
-                        null, schemaContext), contData.build());
-        return testNormalizedNodeContext;
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlWithChoiceTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlWithChoiceTest.java
deleted file mode 100644 (file)
index 943a05c..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.nn.to.xml.test;
-
-import static org.junit.Assert.assertTrue;
-import com.google.common.collect.Iterables;
-import java.io.ByteArrayOutputStream;
-import java.io.OutputStream;
-import java.util.List;
-import javax.ws.rs.core.MediaType;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class NnToXmlWithChoiceTest extends AbstractBodyReaderTest {
-
-    private final NormalizedNodeXmlBodyWriter xmlBodyWriter;
-    private static SchemaContext schemaContext;
-
-    public NnToXmlWithChoiceTest() throws NoSuchFieldException,
-            SecurityException {
-        super();
-        xmlBodyWriter = new NormalizedNodeXmlBodyWriter();
-    }
-
-    @BeforeClass
-    public static void initialization() {
-        schemaContext = schemaContextLoader("/nn-to-xml/choice", schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void cnSnToXmlWithYangChoice() throws Exception {
-        NormalizedNodeContext normalizedNodeContext = prepareNNC("lf1",
-                "String data1");
-        OutputStream output = new ByteArrayOutputStream();
-        xmlBodyWriter.writeTo(normalizedNodeContext, null, null, null,
-                    mediaType, null, output);
-        assertTrue(output.toString().contains("<lf1>String data1</lf1>"));
-
-        normalizedNodeContext = prepareNNC("lf2", "String data2");
-        output = new ByteArrayOutputStream();
-
-        xmlBodyWriter.writeTo(normalizedNodeContext, null, null, null,
-                    mediaType, null, output);
-        assertTrue(output.toString().contains("<lf2>String data2</lf2>"));
-    }
-
-    private NormalizedNodeContext prepareNNC(final String name,
-            final Object value) {
-
-        final QName contQname = QName.create("module:with:choice", "2013-12-18",
-                "cont");
-        final QName lf = QName.create("module:with:choice", "2013-12-18", name);
-        final QName choA = QName.create("module:with:choice", "2013-12-18", "choA");
-
-        final DataSchemaNode contSchemaNode = schemaContext
-                .getDataChildByName(contQname);
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> dataContainerNodeAttrBuilder = Builders
-                .containerBuilder((ContainerSchemaNode) contSchemaNode);
-
-        final DataSchemaNode choiceSchemaNode = ((ContainerSchemaNode) contSchemaNode)
-                .getDataChildByName(choA);
-        assertTrue(choiceSchemaNode instanceof ChoiceSchemaNode);
-
-        final DataContainerNodeBuilder<NodeIdentifier, ChoiceNode> dataChoice = Builders
-                .choiceBuilder((ChoiceSchemaNode) choiceSchemaNode);
-
-        final List<DataSchemaNode> instanceLf = ControllerContext
-                .findInstanceDataChildrenByName(
-                        (DataNodeContainer) contSchemaNode, lf.getLocalName());
-        final DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null);
-
-        dataChoice.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf)
-                .withValue(value).build());
-
-        dataContainerNodeAttrBuilder.withChild(dataChoice.build());
-
-        final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext(
-                new InstanceIdentifierContext<DataSchemaNode>(null,
-                        contSchemaNode, null, schemaContext),
-                dataContainerNodeAttrBuilder.build());
-
-        return testNormalizedNodeContext;
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        return null;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlWithDataFromSeveralModulesTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/nn/to/xml/test/NnToXmlWithDataFromSeveralModulesTest.java
deleted file mode 100644 (file)
index 05d3a55..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.nn.to.xml.test;
-
-import static org.junit.Assert.assertTrue;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Iterables;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.net.URISyntaxException;
-import java.util.List;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class NnToXmlWithDataFromSeveralModulesTest extends
-        AbstractBodyReaderTest {
-
-    private final NormalizedNodeXmlBodyWriter xmlBodyWriter;
-    private static SchemaContext schemaContext;
-
-    public NnToXmlWithDataFromSeveralModulesTest() throws NoSuchFieldException,
-            SecurityException {
-        super();
-        xmlBodyWriter = new NormalizedNodeXmlBodyWriter();
-    }
-
-    @BeforeClass
-    public static void initialize() {
-        schemaContext = schemaContextLoader(
-                "/nn-to-xml/data-of-several-modules/yang", schemaContext);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void dataFromSeveralModulesToXmlTest()
-            throws WebApplicationException, IOException, URISyntaxException {
-        final NormalizedNodeContext normalizedNodeContext = prepareNormalizedNodeContext();
-        final OutputStream output = new ByteArrayOutputStream();
-        xmlBodyWriter.writeTo(normalizedNodeContext, null, null, null,
-                mediaType, null, output);
-
-        final String outputString = output.toString();
-        // data
-        assertTrue(outputString
-                .contains(
-                        "<data xmlns=" + '"'
-                                + "urn:ietf:params:xml:ns:netconf:base:1.0"
-                                + '"' + '>'));
-        // cont m2
-        assertTrue(outputString.contains(
-                "<cont_m2 xmlns=" + '"' + "module:two" + '"' + '>'));
-        assertTrue(outputString.contains("<lf1_m2>lf1 m2 value</lf1_m2>"));
-        assertTrue(outputString.contains("<contB_m2></contB_m2>"));
-        assertTrue(outputString.contains("</cont_m2>"));
-
-        // cont m1
-        assertTrue(outputString.contains(
-                "<cont_m1 xmlns=" + '"' + "module:one" + '"' + '>'));
-        assertTrue(outputString.contains("<contB_m1></contB_m1>"));
-        assertTrue(outputString.contains("<lf1_m1>lf1 m1 value</lf1_m1>"));
-        assertTrue(outputString.contains("</cont_m1>"));
-
-        // end
-        assertTrue(output.toString().contains("</data>"));
-    }
-
-    @Override
-    protected MediaType getMediaType() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    private NormalizedNodeContext prepareNormalizedNodeContext() {
-        final String rev = "2014-01-17";
-
-        final DataSchemaNode schemaContNode = schemaContext;
-
-        assertTrue(schemaContNode instanceof ContainerSchemaNode);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> dataContSchemaContNode = Builders
-                .containerBuilder((ContainerSchemaNode) schemaContNode);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> modul1 = buildContBuilderMod1(
-                "module:one", rev, "cont_m1", "contB_m1", "lf1_m1",
-                "lf1 m1 value");
-        dataContSchemaContNode.withChild(modul1.build());
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> modul2 = buildContBuilderMod1(
-                "module:two", rev, "cont_m2", "contB_m2", "lf1_m2",
-                "lf1 m2 value");
-        dataContSchemaContNode.withChild(modul2.build());
-
-        final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext(
-                new InstanceIdentifierContext<DataSchemaNode>(null,
-                        schemaContNode, null, schemaContext),
-                dataContSchemaContNode.build());
-
-        return testNormalizedNodeContext;
-    }
-
-    private DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> buildContBuilderMod1(
-            final String uri, final String rev, final String cont, final String contB, final String lf1,
-            final String lf1_value) {
-        final QName contQname = QName.create(uri, rev, cont);
-        final QName contBQname = QName.create(uri, rev, contB);
-        final QName lf1Qname = QName.create(contQname, lf1);
-
-        final DataSchemaNode contSchemaNode = schemaContext
-                .getDataChildByName(contQname);
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> dataContainerNodeAttrBuilder = Builders
-                .containerBuilder((ContainerSchemaNode) contSchemaNode);
-
-        Preconditions.checkState(contSchemaNode instanceof ContainerSchemaNode);
-        final List<DataSchemaNode> instanceLf1_m1 = ControllerContext
-                .findInstanceDataChildrenByName(
-                        (DataNodeContainer) contSchemaNode,
-                        lf1Qname.getLocalName());
-        final DataSchemaNode schemaLf1_m1 = Iterables.getFirst(instanceLf1_m1, null);
-
-        dataContainerNodeAttrBuilder.withChild(Builders
-                .leafBuilder((LeafSchemaNode) schemaLf1_m1)
-                .withValue(lf1_value).build());
-
-        final DataSchemaNode contBSchemaNode = ((ContainerSchemaNode) contSchemaNode)
-                .getDataChildByName(contBQname);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> dataContainerB = Builders
-                .containerBuilder((ContainerSchemaNode) contBSchemaNode);
-
-        return dataContainerNodeAttrBuilder.withChild(dataContainerB.build());
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/BrokerFacadeTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/BrokerFacadeTest.java
deleted file mode 100644 (file)
index ff3fca1..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * Copyright (c) 2014, 2015 Brocade Communications 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.Futures;
-import java.util.concurrent.Future;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.mockito.InOrder;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcException;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
-import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError;
-import org.opendaylight.controller.sal.streams.listeners.ListenerAdapter;
-import org.opendaylight.controller.sal.streams.listeners.Notificator;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-
-/**
- * Unit tests for BrokerFacade.
- *
- * @author Thomas Pantelis
- */
-public class BrokerFacadeTest {
-
-    @Mock
-    DOMDataBroker domDataBroker;
-
-    @Mock
-    ConsumerSession context;
-
-    @Mock
-    DOMRpcService mockRpcService;
-
-    @Mock
-    DOMMountPoint mockMountInstance;
-
-    BrokerFacade brokerFacade = BrokerFacade.getInstance();
-
-    NormalizedNode<?, ?> dummyNode = createDummyNode("test:module", "2014-01-09", "interfaces");
-    CheckedFuture<Optional<NormalizedNode<?, ?>>,ReadFailedException> dummyNodeInFuture = wrapDummyNode(dummyNode);
-
-    QName qname = TestUtils.buildQName("interfaces","test:module", "2014-01-09");
-
-    SchemaPath type = SchemaPath.create(true, qname);
-
-    YangInstanceIdentifier instanceID = YangInstanceIdentifier.builder().node(qname).build();
-
-    @Mock
-    DOMDataReadOnlyTransaction rTransaction;
-
-    @Mock
-    DOMDataWriteTransaction wTransaction;
-
-    @Mock
-    DOMDataReadWriteTransaction rwTransaction;
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        // TODO it is started before every test method
-        brokerFacade.setDomDataBroker(domDataBroker);
-        brokerFacade.setRpcService(mockRpcService);
-        brokerFacade.setContext(context);
-        when(domDataBroker.newReadOnlyTransaction()).thenReturn(rTransaction);
-        when(domDataBroker.newWriteOnlyTransaction()).thenReturn(wTransaction);
-        when(domDataBroker.newReadWriteTransaction()).thenReturn(rwTransaction);
-
-        ControllerContext.getInstance().setSchemas(TestUtils.loadSchemaContext("/full-versions/test-module"));
-
-    }
-
-    private CheckedFuture<Optional<NormalizedNode<?, ?>>,ReadFailedException> wrapDummyNode(final NormalizedNode<?, ?> dummyNode) {
-        return  Futures.immediateCheckedFuture(Optional.<NormalizedNode<?, ?>> of(dummyNode));
-    }
-
-    private CheckedFuture<Boolean,ReadFailedException> wrapExistence(final Boolean exists) {
-        return  Futures.immediateCheckedFuture(exists);
-    }
-
-
-    /**
-     * Value of this node shouldn't be important for testing purposes
-     */
-    private NormalizedNode<?, ?> createDummyNode(final String namespace, final String date, final String localName) {
-        return Builders.containerBuilder()
-                .withNodeIdentifier(new NodeIdentifier(QName.create(namespace, date, localName))).build();
-    }
-
-    @Test
-    public void testReadConfigurationData() {
-        when(rTransaction.read(any(LogicalDatastoreType.class), any(YangInstanceIdentifier.class))).thenReturn(
-                dummyNodeInFuture);
-
-        final NormalizedNode<?, ?> actualNode = brokerFacade.readConfigurationData(instanceID);
-
-        assertSame("readConfigurationData", dummyNode, actualNode);
-    }
-
-    @Test
-    public void testReadOperationalData() {
-        when(rTransaction.read(any(LogicalDatastoreType.class), any(YangInstanceIdentifier.class))).thenReturn(
-                dummyNodeInFuture);
-
-        final NormalizedNode<?, ?> actualNode = brokerFacade.readOperationalData(instanceID);
-
-        assertSame("readOperationalData", dummyNode, actualNode);
-    }
-
-    @Test(expected = RestconfDocumentedException.class)
-    public void testReadOperationalDataWithNoDataBroker() {
-        brokerFacade.setDomDataBroker(null);
-
-        brokerFacade.readOperationalData(instanceID);
-    }
-
-    @Test
-    public void testInvokeRpc() throws Exception {
-        final DOMRpcResult expResult = mock(DOMRpcResult.class);
-        final CheckedFuture<DOMRpcResult, DOMRpcException> future = Futures.immediateCheckedFuture(expResult);
-        when(mockRpcService.invokeRpc(type, dummyNode)).thenReturn(future);
-
-        final CheckedFuture<DOMRpcResult, DOMRpcException> actualFuture = brokerFacade.invokeRpc(type, dummyNode);
-        assertNotNull("Future is null", actualFuture);
-        final DOMRpcResult actualResult = actualFuture.get();
-        assertSame("invokeRpc", expResult, actualResult);
-    }
-
-    @Test(expected = RestconfDocumentedException.class)
-    public void testInvokeRpcWithNoConsumerSession() {
-        brokerFacade.setContext(null);
-        brokerFacade.invokeRpc(type, dummyNode);
-    }
-
-    @Ignore
-    @Test
-    public void testCommitConfigurationDataPut() {
-        @SuppressWarnings("unchecked")
-        final CheckedFuture<Void, TransactionCommitFailedException> expFuture = mock(CheckedFuture.class);
-
-        when(wTransaction.submit()).thenReturn(expFuture);
-
-        final Future<Void> actualFuture = brokerFacade.commitConfigurationDataPut((SchemaContext)null, instanceID, dummyNode);
-
-        assertSame("commitConfigurationDataPut", expFuture, actualFuture);
-
-        final InOrder inOrder = inOrder(domDataBroker, wTransaction);
-        inOrder.verify(domDataBroker).newWriteOnlyTransaction();
-        inOrder.verify(wTransaction).put(LogicalDatastoreType.CONFIGURATION, instanceID, dummyNode);
-        inOrder.verify(wTransaction).submit();
-    }
-
-    @Test
-    public void testCommitConfigurationDataPost() {
-        @SuppressWarnings("unchecked")
-        final CheckedFuture<Void, TransactionCommitFailedException> expFuture = mock(CheckedFuture.class);
-
-        when(rwTransaction.exists(eq(LogicalDatastoreType.CONFIGURATION), any(YangInstanceIdentifier.class))).thenReturn(
-            wrapExistence(false));
-
-
-        when(rwTransaction.submit()).thenReturn(expFuture);
-
-        final CheckedFuture<Void, TransactionCommitFailedException> actualFuture = brokerFacade.commitConfigurationDataPost(
-                (SchemaContext)null, instanceID, dummyNode);
-
-        assertSame("commitConfigurationDataPost", expFuture, actualFuture);
-
-        final InOrder inOrder = inOrder(domDataBroker, rwTransaction);
-        inOrder.verify(domDataBroker).newReadWriteTransaction();
-        inOrder.verify(rwTransaction).exists(LogicalDatastoreType.CONFIGURATION, instanceID);
-        inOrder.verify(rwTransaction).put(LogicalDatastoreType.CONFIGURATION, instanceID, dummyNode);
-        inOrder.verify(rwTransaction).submit();
-    }
-
-    @Test(expected = RestconfDocumentedException.class)
-    public void testCommitConfigurationDataPostAlreadyExists() {
-        final CheckedFuture<Boolean, ReadFailedException> successFuture = Futures.immediateCheckedFuture(Boolean.TRUE);
-        when(rwTransaction.exists(eq(LogicalDatastoreType.CONFIGURATION), any(YangInstanceIdentifier.class))).thenReturn(
-                successFuture);
-        try {
-            // Schema context is only necessary for ensuring parent structure
-            brokerFacade.commitConfigurationDataPost((SchemaContext)null, instanceID, dummyNode);
-        } catch (final RestconfDocumentedException e) {
-            assertEquals("getErrorTag", RestconfError.ErrorTag.DATA_EXISTS, e.getErrors().get(0).getErrorTag());
-            throw e;
-        }
-    }
-
-    @Test
-    public void testCommitConfigurationDataDelete() {
-        @SuppressWarnings("unchecked")
-        final CheckedFuture<Void, TransactionCommitFailedException> expFuture = mock(CheckedFuture.class);
-
-        when(wTransaction.submit()).thenReturn(expFuture);
-
-        final CheckedFuture<Void, TransactionCommitFailedException> actualFuture = brokerFacade
-                .commitConfigurationDataDelete(instanceID);
-
-        assertSame("commitConfigurationDataDelete", expFuture, actualFuture);
-
-        final InOrder inOrder = inOrder(domDataBroker, wTransaction);
-        inOrder.verify(domDataBroker).newWriteOnlyTransaction();
-        inOrder.verify(wTransaction).delete(eq(LogicalDatastoreType.CONFIGURATION), any(YangInstanceIdentifier.class));
-        inOrder.verify(wTransaction).submit();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testRegisterToListenDataChanges() {
-        final ListenerAdapter listener = Notificator.createListener(instanceID, "stream");
-
-        final ListenerRegistration<DOMDataChangeListener> mockRegistration = mock(ListenerRegistration.class);
-
-        when(
-                domDataBroker.registerDataChangeListener(any(LogicalDatastoreType.class), eq(instanceID), eq(listener),
-                        eq(DataChangeScope.BASE))).thenReturn(mockRegistration);
-
-        brokerFacade.registerToListenDataChanges(LogicalDatastoreType.CONFIGURATION, DataChangeScope.BASE, listener);
-
-        verify(domDataBroker).registerDataChangeListener(LogicalDatastoreType.CONFIGURATION, instanceID, listener,
-                DataChangeScope.BASE);
-
-        assertEquals("isListening", true, listener.isListening());
-
-        brokerFacade.registerToListenDataChanges(LogicalDatastoreType.CONFIGURATION, DataChangeScope.BASE, listener);
-        verifyNoMoreInteractions(domDataBroker);
-
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/Bug3595Test.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/Bug3595Test.java
deleted file mode 100644 (file)
index 6ab6b85..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2015 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import java.io.FileNotFoundException;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class Bug3595Test {
-
-    private static final QName CONT_QNAME = QName.create("leafref:module", "2014-04-17", "cont");
-    private static final QName LST_WITH_LFREF_KEY_QNAME = QName.create(CONT_QNAME, "lst-with-lfref-key");
-    private static final QName LFREF_KEY_QNAME = QName.create(CONT_QNAME, "lfref-key");
-
-
-    private static ControllerContext controllerContext = ControllerContext.getInstance();
-
-    @BeforeClass
-    public static void initialize() throws FileNotFoundException {
-        SchemaContext schemaContext = TestUtils.loadSchemaContext("/leafref/yang");
-        Module module = TestUtils.findModule(schemaContext.getModules(), "leafref-module");
-        assertNotNull(module);
-        module = TestUtils.findModule(schemaContext.getModules(), "referenced-module");
-        assertNotNull(module);
-
-        controllerContext.setGlobalSchema(schemaContext);
-    }
-
-    @Test
-    public void testLeafrefListKeyDeserializtion() {
-        final YangInstanceIdentifier node1IIexpected = YangInstanceIdentifier.of(CONT_QNAME)
-                .node(LST_WITH_LFREF_KEY_QNAME).node(new YangInstanceIdentifier.NodeIdentifierWithPredicates(
-                        LST_WITH_LFREF_KEY_QNAME, LFREF_KEY_QNAME, "node1"));
-        final InstanceIdentifierContext<?> iiContext =
-                controllerContext.toInstanceIdentifier("leafref-module:cont/lst-with-lfref-key/node1");
-        iiContext.getInstanceIdentifier();
-        assertEquals(node1IIexpected, iiContext.getInstanceIdentifier());
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/CnSnToXmlAndJsonInstanceIdentifierTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/CnSnToXmlAndJsonInstanceIdentifierTest.java
deleted file mode 100644 (file)
index df2b010..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.ByteArrayInputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import javax.xml.stream.XMLEventReader;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.events.StartElement;
-import javax.xml.stream.events.XMLEvent;
-import org.junit.BeforeClass;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-
-public class CnSnToXmlAndJsonInstanceIdentifierTest extends YangAndXmlAndDataSchemaLoader {
-
-    @BeforeClass
-    public static void initialize() {
-        dataLoad("/instanceidentifier/yang", 4, "instance-identifier-module", "cont");
-    }
-
-
-    private void validateXmlOutput(final String xml) throws XMLStreamException {
-        final XMLInputFactory xmlInFactory = XMLInputFactory.newInstance();
-        XMLEventReader eventReader;
-
-        eventReader = xmlInFactory.createXMLEventReader(new ByteArrayInputStream(xml.getBytes()));
-        String aaModulePrefix = null;
-        String aModulePrefix = null;
-        String iiModulePrefix = null;
-        while (eventReader.hasNext()) {
-            final XMLEvent nextEvent = eventReader.nextEvent();
-            if (nextEvent.isStartElement()) {
-                final StartElement startElement = (StartElement) nextEvent;
-                if (startElement.getName().getLocalPart().equals("lf111")) {
-                    final Iterator<?> prefixes = startElement.getNamespaceContext().getPrefixes("augment:augment:module");
-
-                    while (prefixes.hasNext() && aaModulePrefix == null) {
-                        final String prefix = (String) prefixes.next();
-                        if (!prefix.isEmpty()) {
-                            aaModulePrefix = prefix;
-                        }
-                    }
-
-                    aModulePrefix = startElement.getNamespaceContext().getPrefix("augment:module");
-                    iiModulePrefix = startElement.getNamespaceContext().getPrefix("instance:identifier:module");
-                    break;
-                }
-            }
-        }
-
-        assertNotNull(aaModulePrefix);
-        assertNotNull(aModulePrefix);
-        assertNotNull(iiModulePrefix);
-
-        final String instanceIdentifierValue = "/" + iiModulePrefix + ":cont/" + iiModulePrefix + ":cont1/" + aModulePrefix
-                + ":lst11[" + aModulePrefix + ":keyvalue111='value1'][" + aModulePrefix + ":keyvalue112='value2']/"
-                + aaModulePrefix + ":lf112";
-
-        assertTrue(xml.contains(instanceIdentifierValue));
-
-    }
-
-    private void validateXmlOutputWithLeafList(final String xml) throws XMLStreamException {
-        final XMLInputFactory xmlInFactory = XMLInputFactory.newInstance();
-        XMLEventReader eventReader;
-
-        eventReader = xmlInFactory.createXMLEventReader(new ByteArrayInputStream(xml.getBytes()));
-        String aModuleLfLstPrefix = null;
-        String iiModulePrefix = null;
-        while (eventReader.hasNext()) {
-            final XMLEvent nextEvent = eventReader.nextEvent();
-            if (nextEvent.isStartElement()) {
-                final StartElement startElement = (StartElement) nextEvent;
-                if (startElement.getName().getLocalPart().equals("lf111")) {
-                    final Iterator<?> prefixes = startElement.getNamespaceContext().getPrefixes("augment:module:leaf:list");
-
-                    while (prefixes.hasNext() && aModuleLfLstPrefix == null) {
-                        final String prefix = (String) prefixes.next();
-                        if (!prefix.isEmpty()) {
-                            aModuleLfLstPrefix = prefix;
-                        }
-                    }
-                    iiModulePrefix = startElement.getNamespaceContext().getPrefix("instance:identifier:module");
-                    break;
-                }
-            }
-        }
-
-        assertNotNull(aModuleLfLstPrefix);
-        assertNotNull(iiModulePrefix);
-
-        final String instanceIdentifierValue = "/" + iiModulePrefix + ":cont/" + iiModulePrefix + ":cont1/"
-                + aModuleLfLstPrefix + ":lflst11[.='lflst11_1']";
-
-        assertTrue(xml.contains(instanceIdentifierValue));
-
-    }
-
-    private YangInstanceIdentifier createInstanceIdentifier() throws URISyntaxException {
-        final List<PathArgument> pathArguments = new ArrayList<>();
-        pathArguments.add(new NodeIdentifier(new QName(new URI("instance:identifier:module"), "cont")));
-        pathArguments.add(new NodeIdentifier(new QName(new URI("instance:identifier:module"), "cont1")));
-
-        final QName qName = new QName(new URI("augment:module"), "lst11");
-        final Map<QName, Object> keyValues = new HashMap<>();
-        keyValues.put(new QName(new URI("augment:module"), "keyvalue111"), "value1");
-        keyValues.put(new QName(new URI("augment:module"), "keyvalue112"), "value2");
-        final NodeIdentifierWithPredicates nodeIdentifierWithPredicates = new NodeIdentifierWithPredicates(qName, keyValues);
-        pathArguments.add(nodeIdentifierWithPredicates);
-
-        pathArguments.add(new NodeIdentifier(new QName(new URI("augment:augment:module"), "lf112")));
-
-        return YangInstanceIdentifier.create(pathArguments);
-    }
-
-    private YangInstanceIdentifier createInstanceIdentifierWithLeafList() throws URISyntaxException {
-        final List<PathArgument> pathArguments = new ArrayList<>();
-        pathArguments.add(new NodeIdentifier(new QName(new URI("instance:identifier:module"), "cont")));
-        pathArguments.add(new NodeIdentifier(new QName(new URI("instance:identifier:module"), "cont1")));
-        pathArguments.add(new NodeWithValue(new QName(new URI("augment:module:leaf:list"), "lflst11"), "lflst11_1"));
-
-        return YangInstanceIdentifier.create(pathArguments);
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/CodecsExceptionsCatchingTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/CodecsExceptionsCatchingTest.java
deleted file mode 100644 (file)
index 188eda0..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2014, 2015 Brocade Communication Systems, Inc., 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertTrue;
-import java.io.FileNotFoundException;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.glassfish.jersey.server.ResourceConfig;
-import org.glassfish.jersey.test.JerseyTest;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.RestconfDocumentedExceptionMapper;
-import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class CodecsExceptionsCatchingTest extends JerseyTest {
-
-    private static RestconfImpl restConf;
-    private static ControllerContext controllerContext = ControllerContext.getInstance();
-
-    @BeforeClass
-    public static void init() throws FileNotFoundException {
-        restConf = RestconfImpl.getInstance();
-        controllerContext = ControllerContext.getInstance();
-        final SchemaContext schemaContext = TestUtils.loadSchemaContext("/decoding-exception/yang");
-        controllerContext.setGlobalSchema(schemaContext);
-        restConf.setControllerContext(controllerContext);
-    }
-
-    @Override
-    protected Application configure() {
-        /* enable/disable Jersey logs to console */
-        // enable(TestProperties.LOG_TRAFFIC);
-        // enable(TestProperties.DUMP_ENTITY);
-        // enable(TestProperties.RECORD_LOG_LEVEL);
-        // set(TestProperties.RECORD_LOG_LEVEL, Level.ALL.intValue());
-        ResourceConfig resourceConfig = new ResourceConfig();
-        resourceConfig = resourceConfig.registerInstances(restConf, new NormalizedNodeJsonBodyWriter(),
-                new NormalizedNodeXmlBodyWriter(), new XmlNormalizedNodeBodyReader(), new JsonNormalizedNodeBodyReader());
-        resourceConfig.registerClasses(RestconfDocumentedExceptionMapper.class);
-        return resourceConfig;
-    }
-
-    @Test
-    @Ignore // TODO RestconfDocumentedExceptionMapper needs be fixed before
-    public void StringToNumberConversionError() {
-        final Response response = target("/config/number:cont").request(MediaType.APPLICATION_XML).put(
-                Entity.entity("<cont xmlns=\"number\"><lf>3f</lf></cont>", MediaType.APPLICATION_XML));
-        final String exceptionMessage = response.readEntity(String.class);
-        assertTrue(exceptionMessage.contains("invalid-value"));
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/CutDataToCorrectDepthTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/CutDataToCorrectDepthTest.java
deleted file mode 100644 (file)
index 6684bec..0000000
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.Encoded;
-import javax.ws.rs.GET;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-import org.glassfish.jersey.server.ResourceConfig;
-import org.glassfish.jersey.test.JerseyTest;
-import org.junit.BeforeClass;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.RestconfDocumentedExceptionMapper;
-import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.controller.sal.restconf.impl.QueryParametersParser;
-import org.opendaylight.controller.sal.restconf.impl.WriterParameters;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.ListNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class CutDataToCorrectDepthTest extends JerseyTest {
-
-    private static NormalizedNode<?, ?> depth1Cont;
-    private static NormalizedNode<?, ?> depth2Cont1;
-    private NormalizedNode<?, ?> globalPayload;
-    private static SchemaContext schemaContextModules;
-
-    @Path("/")
-    public class RestImpl {
-
-        @GET
-        @Path("/config/{identifier:.+}")
-        @Produces({ "application/json", "application/xml" })
-        public NormalizedNodeContext getData(@Encoded @PathParam("identifier") String identifier,
-                                             @Context UriInfo uriInfo) {
-
-            final InstanceIdentifierContext iiWithData = ControllerContext.getInstance().toInstanceIdentifier(
-                    identifier);
-
-            NormalizedNode<?, ?> data = null;
-            if (identifier.equals("nested-module:depth1-cont/depth2-cont1")) {
-                data = depth2Cont1;
-            } else if (identifier.equals("nested-module:depth1-cont")) {
-                data = depth1Cont;
-            }
-
-            final WriterParameters writerParameters = QueryParametersParser.parseWriterParameters(uriInfo);
-            return new NormalizedNodeContext(iiWithData, data, writerParameters);
-        }
-
-        @GET
-        @Path("/operational/{identifier:.+}")
-        @Produces({ "application/json", "application/xml" })
-        public NormalizedNodeContext getDataOperational(@Encoded @PathParam("identifier") String identifier,
-                                                        @Context UriInfo uriInfo) {
-            return getData(identifier, uriInfo);
-        }
-
-        @PUT
-        @Path("/config/{identifier:.+}")
-        @Consumes({ "application/json", "application/xml" })
-        public void normalizedData(@Encoded @PathParam("identifier") String identifier, NormalizedNodeContext payload) throws InterruptedException {
-            System.out.println(payload);
-            System.out.println(payload.getInstanceIdentifierContext().getInstanceIdentifier());
-            System.out.println(payload.getData());
-            globalPayload = payload.getData();
-        }
-
-        @PUT
-        @Path("/operational/{identifier:.+}")
-        @Consumes({ "application/json", "application/xml" })
-        public void normalizedDataOperational(@Encoded @PathParam("identifier") String identifier,
-                                              NormalizedNodeContext payload) throws InterruptedException {
-            normalizedData(identifier, payload);
-        }
-    }
-
-    @BeforeClass
-    public static void initialize() throws FileNotFoundException {
-        schemaContextModules = TestUtils.loadSchemaContext("/modules");
-        Module module = TestUtils.findModule(schemaContextModules.getModules(), "nested-module");
-        assertNotNull(module);
-
-        UnkeyedListNode listAsUnkeyedList = unkeyedList(
-                "depth2-cont1",
-                unkeyedEntry("depth2-cont1",
-                        container("depth3-cont1",
-                                container("depth4-cont1", leaf("depth5-leaf1", "depth5-leaf1-value")),
-                                leaf("depth4-leaf1", "depth4-leaf1-value")), leaf("depth3-leaf1", "depth3-leaf1-value")));
-
-        MapNode listAsMap = mapNode(
-                "depth2-list2",
-                mapEntryNode("depth2-list2", 2, leaf("depth3-lf1-key", "depth3-lf1-key-value"),
-                        leaf("depth3-lf2-key", "depth3-lf2-key-value"), leaf("depth3-lf3", "depth3-lf3-value")));
-
-        depth1Cont = container(
-                "depth1-cont",
-                listAsUnkeyedList,
-                listAsMap,
-                leafList("depth2-lfLst1", "depth2-lflst1-value1", "depth2-lflst1-value2", "depth2-lflst1-value3"),
-                container(
-                        "depth2-cont2",
-                        container("depth3-cont2",
-                                container("depth4-cont2", leaf("depth5-leaf2", "depth5-leaf2-value")),
-                                leaf("depth4-leaf2", "depth4-leaf2-value")), leaf("depth3-leaf2", "depth3-leaf2-value")),
-                leaf("depth2-leaf1", "depth2-leaf1-value"));
-
-        depth2Cont1 = listAsUnkeyedList;
-    }
-
-    // TODO: These tests should be fixed/rewriten because they fail randomly due to data not being de-serialized
-    // properly in readers
-    //@Test
-    public void getDataWithUriDepthParameterTest() throws WebApplicationException, IOException {
-        getDataWithUriDepthParameter("application/json");
-        getDataWithUriDepthParameter("application/xml");
-    }
-
-    public void getDataWithUriDepthParameter(final String mediaType) throws WebApplicationException, IOException {
-        ControllerContext.getInstance().setGlobalSchema(schemaContextModules);
-        Response response;
-
-        // Test config with depth 1
-        response = target("/config/nested-module:depth1-cont").queryParam("depth", "1").request(mediaType)
-                .get();
-        txtDataToNormalizedNode(response, mediaType, "/config/nested-module:depth1-cont");
-        verifyResponse(nodeDataDepth1());
-
-        // Test config with depth 2
-        response = target("/config/nested-module:depth1-cont").queryParam("depth", "2").request(mediaType)
-                .get();
-        txtDataToNormalizedNode(response, mediaType, "/config/nested-module:depth1-cont");
-        verifyResponse(nodeDataDepth2());
-
-        // Test config with depth 3
-        response = target("/config/nested-module:depth1-cont").queryParam("depth", "3").request(mediaType)
-                .get();
-        txtDataToNormalizedNode(response, mediaType, "/config/nested-module:depth1-cont");
-        verifyResponse(nodeDataDepth3());
-
-        // Test config with depth 4
-        response = target("/config/nested-module:depth1-cont").queryParam("depth", "4").request(mediaType)
-                .get();
-        txtDataToNormalizedNode(response, mediaType, "/config/nested-module:depth1-cont");
-        verifyResponse(nodeDataDepth4());
-
-        // Test config with depth 5
-        response = target("/config/nested-module:depth1-cont").queryParam("depth", "5").request(mediaType)
-                .get();
-        txtDataToNormalizedNode(response, mediaType, "/config/nested-module:depth1-cont");
-        verifyResponse(nodeDataDepth5());
-
-        // Test config with depth unbounded
-
-        response = target("/config/nested-module:depth1-cont").queryParam("depth", "unbounded")
-                .request(mediaType).get();
-        txtDataToNormalizedNode(response, mediaType, "/config/nested-module:depth1-cont");
-        verifyResponse(nodeDataDepth5());
-    }
-
-    private void txtDataToNormalizedNode(final Response response, final String mediaType, final String uri) {
-        String responseStr = response.readEntity(String.class);
-        System.out.println(responseStr);
-        target(uri).request(mediaType).put(Entity.entity(responseStr, mediaType));
-    }
-
-    private void verifyResponse(final NormalizedNode<?, ?> nodeData) throws WebApplicationException, IOException {
-        assertNotNull(globalPayload);
-        assertEquals(globalPayload, nodeData);
-        globalPayload = null;
-    }
-
-    @Override
-    protected Application configure() {
-        ResourceConfig resourceConfig = new ResourceConfig();
-        resourceConfig = resourceConfig.registerInstances(new RestImpl());
-        resourceConfig.registerClasses(XmlNormalizedNodeBodyReader.class, NormalizedNodeXmlBodyWriter.class,
-                JsonNormalizedNodeBodyReader.class, NormalizedNodeJsonBodyWriter.class,
-                RestconfDocumentedExceptionMapper.class);
-        return resourceConfig;
-    }
-
-    private static LeafNode<?> leaf(final String localName, final Object value) {
-        return Builders.leafBuilder().withNodeIdentifier(toIdentifier(localName)).withValue(value).build();
-    }
-
-    private static ContainerNode container(final String localName, final DataContainerChild<?, ?>... children) {
-        DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> containerBuilder = Builders.containerBuilder();
-        for (DataContainerChild<?, ?> child : children) {
-            containerBuilder.withChild(child);
-        }
-        containerBuilder.withNodeIdentifier(toIdentifier(localName));
-        return containerBuilder.build();
-    }
-
-    private static UnkeyedListNode unkeyedList(
-            final String localName,
-            final UnkeyedListEntryNode... entryNodes) {
-        CollectionNodeBuilder<UnkeyedListEntryNode, UnkeyedListNode> builder = Builders.unkeyedListBuilder();
-        final NodeIdentifier identifier = toIdentifier(localName);
-        builder.withNodeIdentifier(identifier);
-        for (UnkeyedListEntryNode unkeyedListEntryNode : entryNodes) {
-            builder.withChild(unkeyedListEntryNode);
-        }
-        return builder.build();
-    }
-
-    private static UnkeyedListEntryNode unkeyedEntry(final String localName,
-                                                     final DataContainerChild<?, ?>... children) {
-        DataContainerNodeAttrBuilder<NodeIdentifier, UnkeyedListEntryNode> builder = Builders.unkeyedListEntryBuilder();
-        builder.withNodeIdentifier(toIdentifier(localName));
-        for (DataContainerChild<?, ?> child : children) {
-            builder.withChild(child);
-        }
-        return builder.build();
-    }
-
-    private static MapNode mapNode(final String localName, final MapEntryNode... entryNodes) {
-        CollectionNodeBuilder<MapEntryNode, MapNode> builder = Builders.mapBuilder();
-        builder.withNodeIdentifier(toIdentifier(localName));
-        for (MapEntryNode mapEntryNode : entryNodes) {
-            builder.withChild(mapEntryNode);
-        }
-        return builder.build();
-    }
-
-    private static MapEntryNode mapEntryNode(final String localName, final int keysNumber,
-                                             final DataContainerChild<?, ?>... children) {
-        DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> builder = Builders.mapEntryBuilder();
-        Map<QName, Object> keys = new HashMap<>();
-        for (int i = 0; i < keysNumber; i++) {
-            keys.put(children[i].getNodeType(), children[i].getValue());
-        }
-        builder.withNodeIdentifier(toIdentifier(localName, keys));
-
-        for (DataContainerChild<?, ?> child : children) {
-            builder.withChild(child);
-        }
-        return builder.build();
-    }
-
-    private static LeafSetNode<?> leafList(final String localName, final String... children) {
-        ListNodeBuilder<Object, LeafSetEntryNode<Object>> builder = Builders.leafSetBuilder();
-        builder.withNodeIdentifier(toIdentifier(localName));
-        for (String child : children) {
-            builder.withChild(Builders.leafSetEntryBuilder().withNodeIdentifier(toIdentifier(localName, child))
-                    .withValue(child).build());
-        }
-        return builder.build();
-    }
-
-    private static NodeIdentifier toIdentifier(String localName) {
-        return new NodeIdentifier(QName.create("urn:nested:module", "2014-06-3", localName));
-    }
-
-    private static NodeIdentifierWithPredicates toIdentifier(String localName, Map<QName, Object> keys) {
-        return new NodeIdentifierWithPredicates(QName.create("urn:nested:module", "2014-06-3", localName),
-                keys);
-    }
-
-    private static NodeWithValue toIdentifier(final String localName, final Object value) {
-        return new NodeWithValue(QName.create("urn:nested:module", "2014-06-3", localName), value);
-    }
-
-
-
-    private UnkeyedListEntryNode nodeDataDepth3Operational() {
-        return unkeyedEntry("depth2-cont1",
-                container("depth3-cont1", container("depth4-cont1"), leaf("depth4-leaf1", "depth4-leaf1-value")),
-                leaf("depth3-leaf1", "depth3-leaf1-value"));
-    }
-
-    private ContainerNode nodeDataDepth5() {
-        return container(
-                "depth1-cont",
-                unkeyedList(
-                        "depth2-cont1",
-                        unkeyedEntry("depth2-cont1",
-                                container("depth3-cont1",
-                                        container("depth4-cont1", leaf("depth5-leaf1", "depth5-leaf1-value")),
-                                        leaf("depth4-leaf1", "depth4-leaf1-value")),
-                                leaf("depth3-leaf1", "depth3-leaf1-value"))),
-                mapNode("depth2-list2",
-                        mapEntryNode("depth2-list2", 2, leaf("depth3-lf1-key", "depth3-lf1-key-value"),
-                                leaf("depth3-lf2-key", "depth3-lf2-key-value"), leaf("depth3-lf3", "depth3-lf3-value"))),
-                leafList("depth2-lfLst1", "depth2-lflst1-value1", "depth2-lflst1-value2", "depth2-lflst1-value3"),
-                container(
-                        "depth2-cont2",
-                        container("depth3-cont2",
-                                container("depth4-cont2", leaf("depth5-leaf2", "depth5-leaf2-value")),
-                                leaf("depth4-leaf2", "depth4-leaf2-value")), leaf("depth3-leaf2", "depth3-leaf2-value")),
-                leaf("depth2-leaf1", "depth2-leaf1-value"));
-    }
-
-    private ContainerNode nodeDataDepth4() {
-        return container(
-                "depth1-cont",
-                unkeyedList("depth2-cont1", nodeDataDepth3Operational()),
-                mapNode("depth2-list2",
-                        mapEntryNode("depth2-list2", 2, leaf("depth3-lf1-key", "depth3-lf1-key-value"),
-                                leaf("depth3-lf2-key", "depth3-lf2-key-value"), leaf("depth3-lf3", "depth3-lf3-value"))),
-                leafList("depth2-lfLst1", "depth2-lflst1-value1", "depth2-lflst1-value2", "depth2-lflst1-value3"),
-                container(
-                        "depth2-cont2",
-                        container("depth3-cont2", container("depth4-cont2"), leaf("depth4-leaf2", "depth4-leaf2-value")),
-                        leaf("depth3-leaf2", "depth3-leaf2-value")), leaf("depth2-leaf1", "depth2-leaf1-value"));
-    }
-
-    private ContainerNode nodeDataDepth3() {
-        return container(
-                "depth1-cont",
-                unkeyedList("depth2-cont1",
-                        unkeyedEntry("depth2-cont1", container("depth3-cont1"), leaf("depth3-leaf1", "depth3-leaf1-value"))),
-                mapNode("depth2-list2",
-                        mapEntryNode("depth2-list2", 2, leaf("depth3-lf1-key", "depth3-lf1-key-value"),
-                                leaf("depth3-lf2-key", "depth3-lf2-key-value"), leaf("depth3-lf3", "depth3-lf3-value"))),
-                leafList("depth2-lfLst1", "depth2-lflst1-value1", "depth2-lflst1-value2", "depth2-lflst1-value3"),
-                container("depth2-cont2", container("depth3-cont2"), leaf("depth3-leaf2", "depth3-leaf2-value")),
-                leaf("depth2-leaf1", "depth2-leaf1-value"));
-    }
-
-    private ContainerNode nodeDataDepth2() {
-        return container(
-                "depth1-cont",
-                unkeyedList("depth2-cont1", unkeyedEntry("depth2-cont1")),
-                mapNode("depth2-list2",
-                        mapEntryNode("depth2-list2", 2, leaf("depth3-lf1-key", "depth3-lf1-key-value"),
-                                leaf("depth3-lf2-key", "depth3-lf2-key-value"))), container("depth2-cont2"),
-//                leafList("depth2-lfLst1"),
-                leaf("depth2-leaf1", "depth2-leaf1-value"));
-    }
-
-    private ContainerNode nodeDataDepth1() {
-        return container("depth1-cont");
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/DummyFuture.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/DummyFuture.java
deleted file mode 100644 (file)
index 8ae8d0b..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-
-public class DummyFuture<T> implements Future<RpcResult<T>> {
-
-    private final boolean cancel;
-    private final boolean isCancelled;
-    private final boolean isDone;
-    private final RpcResult<T> result;
-
-    public DummyFuture() {
-        cancel = false;
-        isCancelled = false;
-        isDone = false;
-        result = null;
-    }
-
-    private DummyFuture(final Builder<T> builder) {
-        cancel = builder.cancel;
-        isCancelled = builder.isCancelled;
-        isDone = builder.isDone;
-        result = builder.result;
-    }
-
-    @Override
-    public boolean cancel(final boolean mayInterruptIfRunning) {
-        return cancel;
-    }
-
-    @Override
-    public boolean isCancelled() {
-        return isCancelled;
-    }
-
-    @Override
-    public boolean isDone() {
-        return isDone;
-    }
-
-    @Override
-    public RpcResult<T> get() throws InterruptedException, ExecutionException {
-        return result;
-    }
-
-    @Override
-    public RpcResult<T> get(final long timeout, final TimeUnit unit) throws InterruptedException, ExecutionException,
-            TimeoutException {
-        return result;
-    }
-
-    public static class Builder<T> {
-
-        private boolean cancel;
-        private boolean isCancelled;
-        private boolean isDone;
-        private RpcResult<T> result;
-
-        public Builder<T> cancel(final boolean cancel) {
-            this.cancel = cancel;
-            return this;
-        }
-
-        public Builder<T> isCancelled(final boolean isCancelled) {
-            this.isCancelled = isCancelled;
-            return this;
-        }
-
-        public Builder<T> isDone(final boolean isDone) {
-            this.isDone = isDone;
-            return this;
-        }
-
-        public Builder<T> rpcResult(final RpcResult<T> result) {
-            this.result = result;
-            return this;
-        }
-
-        public Future<RpcResult<T>> build() {
-            return new DummyFuture<T>(this);
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/DummyRpcResult.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/DummyRpcResult.java
deleted file mode 100644 (file)
index 3c545c0..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import java.util.Collection;
-import org.opendaylight.yangtools.yang.common.RpcError;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-
-public class DummyRpcResult<T> implements RpcResult<T> {
-
-    private final boolean isSuccessful;
-    private final T result;
-    private final Collection<RpcError> errors;
-
-    public DummyRpcResult() {
-        isSuccessful = false;
-        result = null;
-        errors = null;
-    }
-
-    private DummyRpcResult(final Builder<T> builder) {
-        isSuccessful = builder.isSuccessful;
-        result = builder.result;
-        errors = builder.errors;
-    }
-
-    @Override
-    public boolean isSuccessful() {
-        return isSuccessful;
-    }
-
-    @Override
-    public T getResult() {
-        return result;
-    }
-
-    @Override
-    public Collection<RpcError> getErrors() {
-        return errors;
-    }
-
-    public static class Builder<T> {
-        private boolean isSuccessful;
-        private T result;
-        private Collection<RpcError> errors;
-
-        public Builder<T> isSuccessful(final boolean isSuccessful) {
-            this.isSuccessful = isSuccessful;
-            return this;
-        }
-
-        public Builder<T> result(final T result) {
-            this.result = result;
-            return this;
-        }
-
-        public Builder<T> errors(final Collection<RpcError> errors) {
-            this.errors = errors;
-            return this;
-        }
-
-        public RpcResult<T> build() {
-            return new DummyRpcResult<T>(this);
-        }
-
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/DummyType.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/DummyType.java
deleted file mode 100644 (file)
index 008fda4..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import java.util.List;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.api.Status;
-import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
-
-public class DummyType implements TypeDefinition<DummyType> {
-    QName dummyQName = TestUtils.buildQName("dummy type", "simple:uri", "2012-12-17");
-
-    @Override
-    public QName getQName() {
-        return dummyQName;
-    }
-
-    @Override
-    public SchemaPath getPath() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public String getDescription() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public String getReference() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Status getStatus() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public List<UnknownSchemaNode> getUnknownSchemaNodes() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public DummyType getBaseType() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public String getUnits() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Object getDefaultValue() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/InvokeRpcMethodTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/InvokeRpcMethodTest.java
deleted file mode 100644 (file)
index ded3397..0000000
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * Copyright (c) 2013, 2015 Brocade Communication Systems, Inc., 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.Futures;
-import java.io.FileNotFoundException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.UriInfo;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcException;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementationNotAvailableException;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
-import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.RpcError;
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.util.SchemaNodeUtils;
-
-public class InvokeRpcMethodTest {
-
-    private RestconfImpl restconfImpl = null;
-    private static ControllerContext controllerContext = null;
-    private static UriInfo uriInfo;
-
-
-    @BeforeClass
-    public static void init() throws FileNotFoundException {
-        final Set<Module> allModules = new HashSet<Module>(TestUtils.loadModulesFrom("/full-versions/yangs"));
-        allModules.addAll(TestUtils.loadModulesFrom("/invoke-rpc"));
-        assertNotNull(allModules);
-        final Module module = TestUtils.resolveModule("invoke-rpc-module", allModules);
-        assertNotNull(module);
-        final SchemaContext schemaContext = TestUtils.loadSchemaContext(allModules);
-        controllerContext = spy(ControllerContext.getInstance());
-        controllerContext.setSchemas(schemaContext);
-        uriInfo = mock(UriInfo.class);
-        final MultivaluedMap<String, String> map = new MultivaluedHashMap<>();
-        map.put("prettyPrint", Collections.singletonList("true"));
-        when(uriInfo.getQueryParameters(any(Boolean.class))).thenReturn(map);
-    }
-
-    @Before
-    public void initMethod() {
-        restconfImpl = RestconfImpl.getInstance();
-        restconfImpl.setControllerContext(controllerContext);
-    }
-
-    /**
-     * Test method invokeRpc in RestconfImpl class tests if composite node as input parameter of method invokeRpc
-     * (second argument) is wrapped to parent composite node which has QName equals to QName of rpc (resolved from
-     * string - first argument).
-     */
-    @Test
-    @Ignore
-    public void invokeRpcMethodTest() {
-        final ControllerContext contContext = controllerContext;
-        try {
-            contContext.findModuleNameByNamespace(new URI("invoke:rpc:module"));
-        } catch (final URISyntaxException e) {
-            assertTrue("Uri wasn't created sucessfuly", false);
-        }
-
-        final BrokerFacade mockedBrokerFacade = mock(BrokerFacade.class);
-
-        final RestconfImpl restconf = RestconfImpl.getInstance();
-        restconf.setBroker(mockedBrokerFacade);
-        restconf.setControllerContext(contContext);
-
-        final NormalizedNodeContext payload = prepareDomPayload();
-
-        final NormalizedNodeContext rpcResponse = restconf.invokeRpc("invoke-rpc-module:rpc-test", payload, uriInfo);
-        assertTrue(rpcResponse != null);
-        assertTrue(rpcResponse.getData() == null);
-
-    }
-
-    private NormalizedNodeContext prepareDomPayload() {
-        final SchemaContext schema = controllerContext.getGlobalSchema();
-        final Module rpcModule = schema.findModuleByName("invoke-rpc-module", null);
-        assertNotNull(rpcModule);
-        final QName rpcQName = QName.create(rpcModule.getQNameModule(), "rpc-test");
-        final QName rpcInputQName = QName.create(rpcModule.getQNameModule(),"input");
-        final Set<RpcDefinition> setRpcs = rpcModule.getRpcs();
-        ContainerSchemaNode rpcInputSchemaNode = null;
-        for (final RpcDefinition rpc : setRpcs) {
-            if (rpcQName.isEqualWithoutRevision(rpc.getQName())) {
-                rpcInputSchemaNode = SchemaNodeUtils.getRpcDataSchema(rpc, rpcInputQName);
-                break;
-            }
-        }
-        assertNotNull(rpcInputSchemaNode);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> container = Builders.containerBuilder(rpcInputSchemaNode);
-
-        final QName contQName = QName.create(rpcModule.getQNameModule(), "cont");
-        final DataSchemaNode contSchemaNode = rpcInputSchemaNode.getDataChildByName(contQName);
-        assertTrue(contSchemaNode instanceof ContainerSchemaNode);
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> contNode = Builders.containerBuilder((ContainerSchemaNode) contSchemaNode);
-
-        final QName lfQName = QName.create(rpcModule.getQNameModule(), "lf");
-        final DataSchemaNode lfSchemaNode = ((ContainerSchemaNode) contSchemaNode).getDataChildByName(lfQName);
-        assertTrue(lfSchemaNode instanceof LeafSchemaNode);
-        final LeafNode<Object> lfNode = (Builders.leafBuilder((LeafSchemaNode) lfSchemaNode).withValue("any value")).build();
-        contNode.withChild(lfNode);
-        container.withChild(contNode.build());
-
-        return new NormalizedNodeContext(new InstanceIdentifierContext<>(null, rpcInputSchemaNode, null, schema), container.build());
-    }
-
-    @Test
-    public void testInvokeRpcWithNoPayloadRpc_FailNoErrors() {
-        final DOMRpcException exception = new DOMRpcImplementationNotAvailableException("testExeption");
-        final CheckedFuture<DOMRpcResult, DOMRpcException> future = Futures.immediateFailedCheckedFuture(exception);
-
-        final BrokerFacade brokerFacade = mock(BrokerFacade.class);
-
-        final QName qname = QName.create("(http://netconfcentral.org/ns/toaster?revision=2009-11-20)cancel-toast");
-        final SchemaPath type = SchemaPath.create(true, qname);
-
-        when(brokerFacade.invokeRpc(eq(type), any(NormalizedNode.class))).thenReturn(future);
-
-        restconfImpl.setBroker(brokerFacade);
-
-        try {
-            restconfImpl.invokeRpc("toaster:cancel-toast", "", uriInfo);
-            fail("Expected an exception to be thrown.");
-        } catch (final RestconfDocumentedException e) {
-            verifyRestconfDocumentedException(e, 0, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED,
-                    Optional.<String> absent(), Optional.<String> absent());
-        }
-    }
-
-    void verifyRestconfDocumentedException(final RestconfDocumentedException e, final int index,
-            final ErrorType expErrorType, final ErrorTag expErrorTag, final Optional<String> expErrorMsg,
-            final Optional<String> expAppTag) {
-        RestconfError actual = null;
-        try {
-            actual = e.getErrors().get(index);
-        } catch (final ArrayIndexOutOfBoundsException ex) {
-            fail("RestconfError not found at index " + index);
-        }
-
-        assertEquals("getErrorType", expErrorType, actual.getErrorType());
-        assertEquals("getErrorTag", expErrorTag, actual.getErrorTag());
-        assertNotNull("getErrorMessage is null", actual.getErrorMessage());
-
-        if (expErrorMsg.isPresent()) {
-            assertEquals("getErrorMessage", expErrorMsg.get(), actual.getErrorMessage());
-        }
-
-        if (expAppTag.isPresent()) {
-            assertEquals("getErrorAppTag", expAppTag.get(), actual.getErrorAppTag());
-        }
-    }
-
-    @Test
-    public void testInvokeRpcWithNoPayloadRpc_FailWithRpcError() {
-        final List<RpcError> rpcErrors = Arrays.asList(
-            RpcResultBuilder.newError( RpcError.ErrorType.TRANSPORT, "bogusTag", "foo" ),
-            RpcResultBuilder.newWarning( RpcError.ErrorType.RPC, "in-use", "bar",
-                                         "app-tag", null, null ) );
-
-        final DOMRpcResult resutl = new DefaultDOMRpcResult(rpcErrors);
-        final CheckedFuture<DOMRpcResult, DOMRpcException> future = Futures.immediateCheckedFuture(resutl);
-
-        final SchemaPath path = SchemaPath.create(true,
-                QName.create("(http://netconfcentral.org/ns/toaster?revision=2009-11-20)cancel-toast"));
-
-        final BrokerFacade brokerFacade = mock(BrokerFacade.class);
-        when(brokerFacade.invokeRpc(eq(path), any(NormalizedNode.class))).thenReturn(future);
-
-        restconfImpl.setBroker(brokerFacade);
-
-        try {
-            restconfImpl.invokeRpc("toaster:cancel-toast", "", uriInfo);
-            fail("Expected an exception to be thrown.");
-        } catch (final RestconfDocumentedException e) {
-            verifyRestconfDocumentedException(e, 0, ErrorType.TRANSPORT, ErrorTag.OPERATION_FAILED, Optional.of("foo"),
-                    Optional.<String> absent());
-            verifyRestconfDocumentedException(e, 1, ErrorType.RPC, ErrorTag.IN_USE, Optional.of("bar"),
-                    Optional.of("app-tag"));
-        }
-    }
-
-    @Test
-    public void testInvokeRpcWithNoPayload_Success() {
-        final NormalizedNode<?, ?> resultObj = null;
-        final DOMRpcResult expResult = new DefaultDOMRpcResult(resultObj);
-        final CheckedFuture<DOMRpcResult, DOMRpcException> future = Futures.immediateCheckedFuture(expResult);
-
-        final QName qname = QName.create("(http://netconfcentral.org/ns/toaster?revision=2009-11-20)cancel-toast");
-        final SchemaPath path = SchemaPath.create(true, qname);
-
-        final BrokerFacade brokerFacade = mock(BrokerFacade.class);
-        when(brokerFacade.invokeRpc(eq(path), any (NormalizedNode.class))).thenReturn(future);
-
-        restconfImpl.setBroker(brokerFacade);
-
-        final NormalizedNodeContext output = restconfImpl.invokeRpc("toaster:cancel-toast", "", uriInfo);
-        assertNotNull(output);
-        assertEquals(null, output.getData());
-        // additional validation in the fact that the restconfImpl does not
-        // throw an exception.
-    }
-
-    @Test
-    public void testInvokeRpcMethodExpectingNoPayloadButProvidePayload() {
-        try {
-            restconfImpl.invokeRpc("toaster:cancel-toast", " a payload ", uriInfo);
-            fail("Expected an exception");
-        } catch (final RestconfDocumentedException e) {
-            verifyRestconfDocumentedException(e, 0, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE,
-                    Optional.<String> absent(), Optional.<String> absent());
-        }
-    }
-
-    @Test
-    public void testInvokeRpcMethodWithBadMethodName() {
-        try {
-            restconfImpl.invokeRpc("toaster:bad-method", "", uriInfo);
-            fail("Expected an exception");
-        } catch (final RestconfDocumentedException e) {
-            verifyRestconfDocumentedException(e, 0, ErrorType.RPC, ErrorTag.UNKNOWN_ELEMENT,
-                    Optional.<String> absent(), Optional.<String> absent());
-        }
-    }
-
-    @Test
-    @Ignore
-    public void testInvokeRpcMethodWithInput() {
-        final DOMRpcResult expResult = mock(DOMRpcResult.class);
-        final CheckedFuture<DOMRpcResult, DOMRpcException> future = Futures.immediateCheckedFuture(expResult);
-        final SchemaPath path = SchemaPath.create(true,
-                QName.create("(http://netconfcentral.org/ns/toaster?revision=2009-11-20)make-toast"));
-
-        final SchemaContext schemaContext = controllerContext.getGlobalSchema();
-        final Module rpcModule = schemaContext.findModuleByName("toaster", null);
-        assertNotNull(rpcModule);
-        final QName rpcQName = QName.create(rpcModule.getQNameModule(), "make-toast");
-        final QName rpcInputQName = QName.create(rpcModule.getQNameModule(),"input");
-
-        final Set<RpcDefinition> setRpcs = rpcModule.getRpcs();
-        RpcDefinition rpcDef = null;
-        ContainerSchemaNode rpcInputSchemaNode = null;
-
-        for (final RpcDefinition rpc : setRpcs) {
-            if (rpcQName.isEqualWithoutRevision(rpc.getQName())) {
-                rpcInputSchemaNode = SchemaNodeUtils.getRpcDataSchema(rpc, rpcInputQName);
-                rpcDef = rpc;
-                break;
-            }
-        }
-
-        assertNotNull(rpcDef);
-        assertNotNull(rpcInputSchemaNode);
-        assertTrue(rpcInputSchemaNode instanceof ContainerSchemaNode);
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> containerBuilder =
-                Builders.containerBuilder(rpcInputSchemaNode);
-
-        final NormalizedNodeContext payload = new NormalizedNodeContext(new InstanceIdentifierContext<>(null, rpcInputSchemaNode,
-                null, schemaContext), containerBuilder.build());
-
-        final BrokerFacade brokerFacade = mock(BrokerFacade.class);
-        when(brokerFacade.invokeRpc(eq(path), any(NormalizedNode.class))).thenReturn(future);
-        restconfImpl.setBroker(brokerFacade);
-
-        final NormalizedNodeContext output = restconfImpl.invokeRpc("toaster:make-toast", payload, uriInfo);
-        assertNotNull(output);
-        assertEquals(null, output.getData());
-        // additional validation in the fact that the restconfImpl does not
-        // throw an exception.
-    }
-
-    @Test
-    public void testThrowExceptionWhenSlashInModuleName() {
-        try {
-            restconfImpl.invokeRpc("toaster/slash", "", uriInfo);
-            fail("Expected an exception.");
-        } catch (final RestconfDocumentedException e) {
-            verifyRestconfDocumentedException(e, 0, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE,
-                    Optional.<String> absent(), Optional.<String> absent());
-        }
-    }
-
-    @Test
-    public void testInvokeRpcWithNoPayloadWithOutput_Success() {
-        final SchemaContext schema = controllerContext.getGlobalSchema();
-        final Module rpcModule = schema.findModuleByName("toaster", null);
-        assertNotNull(rpcModule);
-        final QName rpcQName = QName.create(rpcModule.getQNameModule(), "testOutput");
-        final QName rpcOutputQName = QName.create(rpcModule.getQNameModule(),"output");
-
-        final Set<RpcDefinition> setRpcs = rpcModule.getRpcs();
-        RpcDefinition rpcDef = null;
-        ContainerSchemaNode rpcOutputSchemaNode = null;
-        for (final RpcDefinition rpc : setRpcs) {
-            if (rpcQName.isEqualWithoutRevision(rpc.getQName())) {
-                rpcOutputSchemaNode = SchemaNodeUtils.getRpcDataSchema(rpc, rpcOutputQName);
-                rpcDef = rpc;
-                break;
-            }
-        }
-        assertNotNull(rpcDef);
-        assertNotNull(rpcOutputSchemaNode);
-        assertTrue(rpcOutputSchemaNode instanceof ContainerSchemaNode);
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> containerBuilder =
-                Builders.containerBuilder(rpcOutputSchemaNode);
-        final DataSchemaNode leafSchema = rpcOutputSchemaNode
-                .getDataChildByName(QName.create(rpcModule.getQNameModule(), "textOut"));
-        assertTrue(leafSchema instanceof LeafSchemaNode);
-        final NormalizedNodeAttrBuilder<NodeIdentifier, Object, LeafNode<Object>> leafBuilder =
-                Builders.leafBuilder((LeafSchemaNode) leafSchema);
-        leafBuilder.withValue("brm");
-        containerBuilder.withChild(leafBuilder.build());
-        final ContainerNode container = containerBuilder.build();
-
-        final DOMRpcResult result = new DefaultDOMRpcResult(container);
-        final CheckedFuture<DOMRpcResult, DOMRpcException> future = Futures.immediateCheckedFuture(result);
-
-        final BrokerFacade brokerFacade = mock(BrokerFacade.class);
-        when(brokerFacade.invokeRpc(eq(rpcDef.getPath()), any(NormalizedNode.class))).thenReturn(future);
-
-        restconfImpl.setBroker(brokerFacade);
-
-        final NormalizedNodeContext output = restconfImpl.invokeRpc("toaster:testOutput", "", uriInfo);
-        assertNotNull(output);
-        assertNotNull(output.getData());
-        assertSame(container, output.getData());
-        assertNotNull(output.getInstanceIdentifierContext());
-        assertNotNull(output.getInstanceIdentifierContext().getSchemaContext());
-    }
-
-    /**
-     *
-     * Tests calling of RestConfImpl method invokeRpc. In the method there is searched rpc in remote schema context.
-     * This rpc is then executed.
-     *
-     * I wasn't able to simulate calling of rpc on remote device therefore this testing method raise method when rpc is
-     * invoked.
-     */
-    @Test
-    @Ignore // FIXME find how to use mockito for it
-    public void testMountedRpcCallNoPayload_Success() throws Exception {
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/MediaTypesTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/MediaTypesTest.java
deleted file mode 100644 (file)
index a00b0d1..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.opendaylight.controller.sal.restconf.impl.test.RestOperationUtils.JSON;
-import static org.opendaylight.controller.sal.restconf.impl.test.RestOperationUtils.XML;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.UriInfo;
-import org.glassfish.jersey.server.ResourceConfig;
-import org.glassfish.jersey.test.JerseyTest;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.api.Draft02;
-import org.opendaylight.controller.sal.rest.api.RestconfService;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.RestconfDocumentedExceptionMapper;
-import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-
-public class MediaTypesTest extends JerseyTest {
-
-    private static RestconfService restconfService;
-    private static String jsonData;
-    private static String xmlData;
-
-    @BeforeClass
-    public static void init() throws IOException {
-        restconfService = mock(RestconfService.class);
-        final String jsonPath = RestconfImplTest.class.getResource("/parts/ietf-interfaces_interfaces.json").getPath();
-        jsonData = TestUtils.loadTextFile(jsonPath);
-        final InputStream xmlStream = RestconfImplTest.class.getResourceAsStream("/parts/ietf-interfaces_interfaces.xml");
-        xmlData = TestUtils.getDocumentInPrintableForm(TestUtils.loadDocumentFrom(xmlStream));
-    }
-
-    @Override
-    protected Application configure() {
-        /* enable/disable Jersey logs to console */
-        // enable(TestProperties.LOG_TRAFFIC);
-        // enable(TestProperties.DUMP_ENTITY);
-        // enable(TestProperties.RECORD_LOG_LEVEL);
-        // set(TestProperties.RECORD_LOG_LEVEL, Level.ALL.intValue());
-        ResourceConfig resourceConfig = new ResourceConfig();
-        resourceConfig = resourceConfig.registerInstances(restconfService,  new NormalizedNodeJsonBodyWriter(),
-                new NormalizedNodeXmlBodyWriter(), new XmlNormalizedNodeBodyReader(), new JsonNormalizedNodeBodyReader());
-        resourceConfig.registerClasses(RestconfDocumentedExceptionMapper.class);
-        return resourceConfig;
-    }
-
-    @Test
-    @Ignore
-    public void testPostOperationsWithInputDataMediaTypes() throws UnsupportedEncodingException {
-        final String uriPrefix = "/operations/";
-        final String uriPath = "ietf-interfaces:interfaces";
-        final String uri = uriPrefix + uriPath;
-        when(restconfService.invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class))).thenReturn(null);
-        post(uri, Draft02.MediaTypes.OPERATION + JSON, Draft02.MediaTypes.OPERATION + JSON, jsonData);
-        verify(restconfService, times(1)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, Draft02.MediaTypes.OPERATION + XML, Draft02.MediaTypes.OPERATION + XML, xmlData);
-        verify(restconfService, times(2)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON, jsonData);
-        verify(restconfService, times(3)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, MediaType.APPLICATION_XML, MediaType.APPLICATION_XML, xmlData);
-        verify(restconfService, times(4)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, MediaType.TEXT_XML, MediaType.TEXT_XML, xmlData);
-        verify(restconfService, times(5)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, null, MediaType.TEXT_XML, xmlData);
-        verify(restconfService, times(6)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class));
-
-        // negative tests
-        post(uri, MediaType.TEXT_PLAIN, MediaType.TEXT_XML, xmlData);
-        verify(restconfService, times(6)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, MediaType.TEXT_XML, MediaType.TEXT_PLAIN, xmlData);
-        verify(restconfService, times(6)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class));
-    }
-
-    @Test
-    public void testGetConfigMediaTypes() throws UnsupportedEncodingException {
-        final String uriPrefix = "/config/";
-        final String uriPath = "ietf-interfaces:interfaces";
-        final String uri = uriPrefix + uriPath;
-        when(restconfService.readConfigurationData(eq(uriPath), any(UriInfo.class))).thenReturn(null);
-        get(uri, Draft02.MediaTypes.DATA + JSON);
-        verify(restconfService, times(1)).readConfigurationData(eq(uriPath), any(UriInfo.class));
-        get(uri, Draft02.MediaTypes.DATA + XML);
-        verify(restconfService, times(2)).readConfigurationData(eq(uriPath), any(UriInfo.class));
-        get(uri, MediaType.APPLICATION_JSON);
-        verify(restconfService, times(3)).readConfigurationData(eq(uriPath), any(UriInfo.class));
-        get(uri, MediaType.APPLICATION_XML);
-        verify(restconfService, times(4)).readConfigurationData(eq(uriPath), any(UriInfo.class));
-        get(uri, MediaType.TEXT_XML);
-        verify(restconfService, times(5)).readConfigurationData(eq(uriPath), any(UriInfo.class));
-
-        // negative tests
-        get(uri, MediaType.TEXT_PLAIN);
-        verify(restconfService, times(5)).readConfigurationData(eq(uriPath), any(UriInfo.class));
-    }
-
-    @Test
-    public void testGetOperationalMediaTypes() throws UnsupportedEncodingException {
-        final String uriPrefix = "/operational/";
-        final String uriPath = "ietf-interfaces:interfaces";
-        final String uri = uriPrefix + uriPath;
-        when(restconfService.readOperationalData(eq(uriPath), any(UriInfo.class))).thenReturn(null);
-        get(uri, Draft02.MediaTypes.DATA + JSON);
-        verify(restconfService, times(1)).readOperationalData(eq(uriPath), any(UriInfo.class));
-        get(uri, Draft02.MediaTypes.DATA + XML);
-        verify(restconfService, times(2)).readOperationalData(eq(uriPath), any(UriInfo.class));
-        get(uri, MediaType.APPLICATION_JSON);
-        verify(restconfService, times(3)).readOperationalData(eq(uriPath), any(UriInfo.class));
-        get(uri, MediaType.APPLICATION_XML);
-        verify(restconfService, times(4)).readOperationalData(eq(uriPath), any(UriInfo.class));
-        get(uri, MediaType.TEXT_XML);
-        verify(restconfService, times(5)).readOperationalData(eq(uriPath), any(UriInfo.class));
-
-        // negative tests
-        get(uri, MediaType.TEXT_PLAIN);
-        verify(restconfService, times(5)).readOperationalData(eq(uriPath), any(UriInfo.class));
-    }
-
-    @Test
-    @Ignore
-    public void testPutConfigMediaTypes() throws UnsupportedEncodingException {
-        final String uriPrefix = "/config/";
-        final String uriPath = "ietf-interfaces:interfaces";
-        final String uri = uriPrefix + uriPath;
-        when(restconfService.updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class))).thenReturn(null);
-        put(uri, null, Draft02.MediaTypes.DATA + JSON, jsonData);
-        verify(restconfService, times(1)).updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class));
-        put(uri, null, Draft02.MediaTypes.DATA + XML, xmlData);
-        verify(restconfService, times(2)).updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class));
-        put(uri, null, MediaType.APPLICATION_JSON, jsonData);
-        verify(restconfService, times(3)).updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class));
-        put(uri, null, MediaType.APPLICATION_XML, xmlData);
-        verify(restconfService, times(4)).updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class));
-        put(uri, null, MediaType.TEXT_XML, xmlData);
-        verify(restconfService, times(5)).updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class));
-        put(uri, "fooMediaType", MediaType.TEXT_XML, xmlData);
-        verify(restconfService, times(6)).updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class));
-    }
-
-    @Test
-    @Ignore
-    public void testPostConfigWithPathMediaTypes() throws UnsupportedEncodingException {
-        final String uriPrefix = "/config/";
-        final String uriPath = "ietf-interfaces:interfaces";
-        final String uri = uriPrefix + uriPath;
-        when(restconfService.createConfigurationData(eq(uriPath), any(NormalizedNodeContext.class),
-                any(UriInfo.class))).thenReturn(null);
-        post(uri, null, Draft02.MediaTypes.DATA + JSON, jsonData);
-        verify(restconfService, times(1)).createConfigurationData(eq(uriPath),
-                any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, null, Draft02.MediaTypes.DATA + XML, xmlData);
-        verify(restconfService, times(2)).createConfigurationData(eq(uriPath),
-                any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, null, MediaType.APPLICATION_JSON, jsonData);
-        verify(restconfService, times(3)).createConfigurationData(eq(uriPath),
-                any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, null, MediaType.APPLICATION_XML, xmlData);
-        verify(restconfService, times(4)).createConfigurationData(eq(uriPath),
-                any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, null, MediaType.TEXT_XML, xmlData);
-        verify(restconfService, times(5)).createConfigurationData(eq(uriPath),
-                any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, "fooMediaType", MediaType.TEXT_XML, xmlData);
-        verify(restconfService, times(6)).createConfigurationData(eq(uriPath),
-                any(NormalizedNodeContext.class), any(UriInfo.class));
-    }
-
-    @Test
-    @Ignore
-    public void testPostConfigMediaTypes() throws UnsupportedEncodingException {
-        final String uriPrefix = "/config/";
-        final String uri = uriPrefix;
-        when(restconfService.createConfigurationData(any(NormalizedNodeContext.class),
-                any(UriInfo.class))).thenReturn(null);
-        post(uri, null, Draft02.MediaTypes.DATA + JSON, jsonData);
-        verify(restconfService, times(1)).createConfigurationData(
-                any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, null, Draft02.MediaTypes.DATA + XML, xmlData);
-        verify(restconfService, times(2)).createConfigurationData(
-                any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, null, MediaType.APPLICATION_JSON, jsonData);
-        verify(restconfService, times(3)).createConfigurationData(
-                any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, null, MediaType.APPLICATION_XML, xmlData);
-        verify(restconfService, times(4)).createConfigurationData(
-                any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, null, MediaType.TEXT_XML, xmlData);
-        verify(restconfService, times(5)).createConfigurationData(
-                any(NormalizedNodeContext.class), any(UriInfo.class));
-        post(uri, "fooMediaType", MediaType.TEXT_XML, xmlData);
-        verify(restconfService, times(6)).createConfigurationData(
-                any(NormalizedNodeContext.class), any(UriInfo.class));
-    }
-
-    @Test
-    public void testDeleteConfigMediaTypes() throws UnsupportedEncodingException {
-        final String uriPrefix = "/config/";
-        final String uriPath = "ietf-interfaces:interfaces";
-        final String uri = uriPrefix + uriPath;
-        when(restconfService.deleteConfigurationData(eq(uriPath))).thenReturn(null);
-        target(uri).request("fooMediaType").delete();
-        verify(restconfService, times(1)).deleteConfigurationData(uriPath);
-    }
-
-    private int get(final String uri, final String acceptMediaType) {
-        return target(uri).request(acceptMediaType).get().getStatus();
-    }
-
-    private int put(final String uri, final String acceptMediaType, final String contentTypeMediaType, final String data) {
-        if (acceptMediaType == null) {
-            return target(uri).request().put(Entity.entity(data, contentTypeMediaType)).getStatus();
-        }
-        return target(uri).request(acceptMediaType).put(Entity.entity(data, contentTypeMediaType)).getStatus();
-    }
-
-    private int post(final String uri, final String acceptMediaType, final String contentTypeMediaType, final String data) {
-        if (acceptMediaType == null) {
-            if (contentTypeMediaType == null || data == null) {
-                return target(uri).request().post(null).getStatus();
-            }
-            return target(uri).request().post(Entity.entity(data, contentTypeMediaType)).getStatus();
-        }
-        if (contentTypeMediaType == null || data == null) {
-            return target(uri).request(acceptMediaType).post(null).getStatus();
-        }
-        return target(uri).request(acceptMediaType).post(Entity.entity(data, contentTypeMediaType)).getStatus();
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/MultipleEqualNamesForDataNodesTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/MultipleEqualNamesForDataNodesTest.java
deleted file mode 100644 (file)
index 8c01734..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-
-/**
- * If more then one data element with equal name exists where container or leaf schema node should be present the
- * RestconfDocumentedException has to be raised
- *
- * Tests for BUG 1204
- */
-public class MultipleEqualNamesForDataNodesTest {
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/NormalizeNodeTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/NormalizeNodeTest.java
deleted file mode 100644 (file)
index a2aff72..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import org.junit.BeforeClass;
-
-public class NormalizeNodeTest extends YangAndXmlAndDataSchemaLoader {
-
-    @BeforeClass
-    public static void initialization() {
-        dataLoad("/normalize-node/yang/");
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestCodecExceptionsTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestCodecExceptionsTest.java
deleted file mode 100644 (file)
index 4000c7c..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.mockito.Mockito.mock;
-
-import java.util.Collections;
-import org.junit.Test;
-import org.opendaylight.controller.sal.restconf.impl.RestCodec;
-import org.opendaylight.yangtools.concepts.Codec;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit;
-import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
-import org.opendaylight.yangtools.yang.model.util.BitsType;
-
-public class RestCodecExceptionsTest {
-
-    private static final SchemaPath PATH = SchemaPath.create(true, QName.create("test", "2014-05-30", "test"));
-
-    @Test
-    public void serializeExceptionTest() {
-        Codec<Object, Object> codec = RestCodec.from(BitsType.create(PATH, Collections.<Bit> emptyList()), null);
-        String serializedValue = (String) codec.serialize("incorrect value"); // set
-                                                                              // expected
-        assertEquals("incorrect value", serializedValue);
-    }
-
-    @Test
-    public void deserializeExceptionTest() {
-        IdentityrefTypeDefinition mockedIidentityrefType = mock(IdentityrefTypeDefinition.class);
-
-        Codec<Object, Object> codec = RestCodec.from(mockedIidentityrefType, null);
-        assertNull(codec.deserialize("incorrect value"));
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestDeleteOperationTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestDeleteOperationTest.java
deleted file mode 100644 (file)
index 519680b..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import com.google.common.util.concurrent.CheckedFuture;
-import java.io.FileNotFoundException;
-import java.io.UnsupportedEncodingException;
-import java.util.Set;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.glassfish.jersey.server.ResourceConfig;
-import org.glassfish.jersey.test.JerseyTest;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.RestconfDocumentedExceptionMapper;
-import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class RestDeleteOperationTest extends JerseyTest {
-
-    private static ControllerContext controllerContext;
-    private static BrokerFacade brokerFacade;
-    private static RestconfImpl restconfImpl;
-
-    @BeforeClass
-    public static void init() throws FileNotFoundException {
-        final Set<Module> allModules = TestUtils.loadModulesFrom("/test-config-data/yang1");
-        assertNotNull(allModules);
-        final SchemaContext schemaContext = TestUtils.loadSchemaContext(allModules);
-        controllerContext = ControllerContext.getInstance();
-        controllerContext.setSchemas(schemaContext);
-        brokerFacade = mock(BrokerFacade.class);
-        restconfImpl = RestconfImpl.getInstance();
-        restconfImpl.setBroker(brokerFacade);
-        restconfImpl.setControllerContext(controllerContext);
-    }
-
-    @Override
-    protected Application configure() {
-        /* enable/disable Jersey logs to console */
-        // enable(TestProperties.LOG_TRAFFIC);
-        // enable(TestProperties.DUMP_ENTITY);
-        // enable(TestProperties.RECORD_LOG_LEVEL);
-        // set(TestProperties.RECORD_LOG_LEVEL, Level.ALL.intValue());
-        ResourceConfig resourceConfig = new ResourceConfig();
-        resourceConfig = resourceConfig.registerInstances(restconfImpl, new NormalizedNodeJsonBodyWriter(),
-                new NormalizedNodeXmlBodyWriter(), new XmlNormalizedNodeBodyReader(), new JsonNormalizedNodeBodyReader());
-        resourceConfig.registerClasses(RestconfDocumentedExceptionMapper.class);
-        return resourceConfig;
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void deleteConfigStatusCodes() throws UnsupportedEncodingException {
-        final String uri = "/config/test-interface:interfaces";
-        when(brokerFacade.commitConfigurationDataDelete(any(YangInstanceIdentifier.class))).thenReturn(
-                mock(CheckedFuture.class));
-        Response response = target(uri).request(MediaType.APPLICATION_XML).delete();
-        assertEquals(200, response.getStatus());
-
-        doThrow(RestconfDocumentedException.class).when(brokerFacade).commitConfigurationDataDelete(
-                any(YangInstanceIdentifier.class));
-        response = target(uri).request(MediaType.APPLICATION_XML).delete();
-        assertEquals(500, response.getStatus());
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestGetAugmentedElementWhenEqualNamesTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestGetAugmentedElementWhenEqualNamesTest.java
deleted file mode 100644 (file)
index 746ae50..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.FileNotFoundException;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class RestGetAugmentedElementWhenEqualNamesTest {
-
-    private static ControllerContext controllerContext = ControllerContext.getInstance();
-
-    @Rule
-    public ExpectedException exception = ExpectedException.none();
-
-    @BeforeClass
-    public static void init() throws FileNotFoundException {
-        final SchemaContext schemaContextTestModule = TestUtils.loadSchemaContext("/common/augment/yang");
-        controllerContext.setSchemas(schemaContextTestModule);
-    }
-
-    @Test
-    public void augmentedNodesInUri() {
-        InstanceIdentifierContext<?> iiWithData = controllerContext.toInstanceIdentifier("main:cont/augment-main-a:cont1");
-        assertEquals("ns:augment:main:a", iiWithData.getSchemaNode().getQName().getNamespace().toString());
-        iiWithData = controllerContext.toInstanceIdentifier("main:cont/augment-main-b:cont1");
-        assertEquals("ns:augment:main:b", iiWithData.getSchemaNode().getQName().getNamespace().toString());
-    }
-
-    @Test
-    public void nodeWithoutNamespaceHasMoreAugments() {
-        try {
-            controllerContext.toInstanceIdentifier("main:cont/cont1");
-            fail("Expected exception");
-        } catch (final RestconfDocumentedException e) {
-            assertTrue(e.getErrors().get(0).getErrorMessage().contains("is added as augment from more than one module"));
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestGetOperationTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestGetOperationTest.java
deleted file mode 100644 (file)
index cbc8e27..0000000
+++ /dev/null
@@ -1,813 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
-import java.io.FileNotFoundException;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-import org.glassfish.jersey.server.ResourceConfig;
-import org.glassfish.jersey.test.JerseyTest;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.RestconfApplication;
-import org.opendaylight.controller.sal.rest.impl.RestconfDocumentedExceptionMapper;
-import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-public class RestGetOperationTest extends JerseyTest {
-
-    static class NodeData {
-        Object key;
-        Object data; // List for a CompositeNode, value Object for a SimpleNode
-
-        NodeData(final Object key, final Object data) {
-            this.key = key;
-            this.data = data;
-        }
-    }
-
-    private static BrokerFacade brokerFacade;
-    private static RestconfImpl restconfImpl;
-    private static SchemaContext schemaContextYangsIetf;
-    private static SchemaContext schemaContextTestModule;
-    @SuppressWarnings("rawtypes")
-    private static NormalizedNode answerFromGet;
-
-    private static SchemaContext schemaContextModules;
-    private static SchemaContext schemaContextBehindMountPoint;
-
-    private static final String RESTCONF_NS = "urn:ietf:params:xml:ns:yang:ietf-restconf";
-
-    @BeforeClass
-    public static void init() throws FileNotFoundException, ParseException {
-        schemaContextYangsIetf = TestUtils.loadSchemaContext("/full-versions/yangs");
-        schemaContextTestModule = TestUtils.loadSchemaContext("/full-versions/test-module");
-        brokerFacade = mock(BrokerFacade.class);
-        restconfImpl = RestconfImpl.getInstance();
-        restconfImpl.setBroker(brokerFacade);
-        answerFromGet = TestUtils.prepareNormalizedNodeWithIetfInterfacesInterfacesData();
-
-        schemaContextModules = TestUtils.loadSchemaContext("/modules");
-        schemaContextBehindMountPoint = TestUtils.loadSchemaContext("/modules/modules-behind-mount-point");
-    }
-
-    @Override
-    protected Application configure() {
-        /* enable/disable Jersey logs to console */
-        // enable(TestProperties.LOG_TRAFFIC);
-        // enable(TestProperties.DUMP_ENTITY);
-        // enable(TestProperties.RECORD_LOG_LEVEL);
-        // set(TestProperties.RECORD_LOG_LEVEL, Level.ALL.intValue());
-        ResourceConfig resourceConfig = new ResourceConfig();
-        resourceConfig = resourceConfig.registerInstances(restconfImpl, new NormalizedNodeJsonBodyWriter(),
-                new NormalizedNodeXmlBodyWriter(), new XmlNormalizedNodeBodyReader(), new JsonNormalizedNodeBodyReader());
-        resourceConfig.registerClasses(RestconfDocumentedExceptionMapper.class);
-        resourceConfig.registerClasses(new RestconfApplication().getClasses());
-        return resourceConfig;
-    }
-
-    private void setControllerContext(final SchemaContext schemaContext) {
-        final ControllerContext controllerContext = ControllerContext.getInstance();
-        controllerContext.setSchemas(schemaContext);
-        restconfImpl.setControllerContext(controllerContext);
-    }
-
-    /**
-     * Tests of status codes for "/operational/{identifier}".
-     */
-    @Test
-    public void getOperationalStatusCodes() throws UnsupportedEncodingException {
-        setControllerContext(schemaContextYangsIetf);
-        mockReadOperationalDataMethod();
-        String uri = "/operational/ietf-interfaces:interfaces/interface/eth0";
-        assertEquals(200, get(uri, MediaType.APPLICATION_XML));
-
-        uri = "/operational/wrong-module:interfaces/interface/eth0";
-        assertEquals(400, get(uri, MediaType.APPLICATION_XML));
-    }
-
-    /**
-     * Tests of status codes for "/config/{identifier}".
-     */
-    @Test
-    public void getConfigStatusCodes() throws UnsupportedEncodingException {
-        setControllerContext(schemaContextYangsIetf);
-        mockReadConfigurationDataMethod();
-        String uri = "/config/ietf-interfaces:interfaces/interface/eth0";
-        assertEquals(200, get(uri, MediaType.APPLICATION_XML));
-
-        uri = "/config/wrong-module:interfaces/interface/eth0";
-        assertEquals(400, get(uri, MediaType.APPLICATION_XML));
-    }
-
-    /**
-     * MountPoint test. URI represents mount point.
-     */
-    @SuppressWarnings("unchecked")
-    @Test
-    public void getDataWithUrlMountPoint() throws UnsupportedEncodingException, URISyntaxException, ParseException {
-        when(brokerFacade.readConfigurationData(any(DOMMountPoint.class), any(YangInstanceIdentifier.class))).thenReturn(
-                prepareCnDataForMountPointTest(false));
-        final DOMMountPoint mountInstance = mock(DOMMountPoint.class);
-        when(mountInstance.getSchemaContext()).thenReturn(schemaContextTestModule);
-        final DOMMountPointService mockMountService = mock(DOMMountPointService.class);
-        when(mockMountService.getMountPoint(any(YangInstanceIdentifier.class))).thenReturn(Optional.of(mountInstance));
-
-        ControllerContext.getInstance().setMountService(mockMountService);
-
-        String uri = "/config/ietf-interfaces:interfaces/interface/0/yang-ext:mount/test-module:cont/cont1";
-        assertEquals(200, get(uri, MediaType.APPLICATION_XML));
-
-        uri = "/config/ietf-interfaces:interfaces/yang-ext:mount/test-module:cont/cont1";
-        assertEquals(200, get(uri, MediaType.APPLICATION_XML));
-    }
-
-    /**
-     * MountPoint test. URI represents mount point.
-     *
-     * Slashes in URI behind mount point. lst1 element with key GigabitEthernet0%2F0%2F0%2F0 (GigabitEthernet0/0/0/0) is
-     * requested via GET HTTP operation. It is tested whether %2F character is replaced with simple / in
-     * InstanceIdentifier parameter in method
-     * {@link BrokerFacade#readConfigurationData(DOMMountPoint, YangInstanceIdentifier)} which is called in
-     * method {@link RestconfImpl#readConfigurationData}
-     *
-     * @throws ParseException
-     */
-    @Test
-    public void getDataWithSlashesBehindMountPoint() throws Exception {
-        final YangInstanceIdentifier awaitedInstanceIdentifier = prepareInstanceIdentifierForList();
-        when(brokerFacade.readConfigurationData(any(DOMMountPoint.class), eq(awaitedInstanceIdentifier))).thenReturn(
-                prepareCnDataForSlashesBehindMountPointTest());
-        final DOMMountPoint mountInstance = mock(DOMMountPoint.class);
-        when(mountInstance.getSchemaContext()).thenReturn(schemaContextTestModule);
-        final DOMMountPointService mockMountService = mock(DOMMountPointService.class);
-        when(mockMountService.getMountPoint(any(YangInstanceIdentifier.class))).thenReturn(Optional.of(mountInstance));
-
-        ControllerContext.getInstance().setMountService(mockMountService);
-
-        final String uri = "/config/ietf-interfaces:interfaces/interface/0/yang-ext:mount/test-module:cont/lst1/GigabitEthernet0%2F0%2F0%2F0";
-        assertEquals(200, get(uri, MediaType.APPLICATION_XML));
-    }
-
-    private YangInstanceIdentifier prepareInstanceIdentifierForList() throws Exception {
-        final List<PathArgument> parameters = new ArrayList<>();
-
-        final QName qNameCont = newTestModuleQName("cont");
-        final QName qNameList = newTestModuleQName("lst1");
-        final QName qNameKeyList = newTestModuleQName("lf11");
-
-        parameters.add(new YangInstanceIdentifier.NodeIdentifier(qNameCont));
-        parameters.add(new YangInstanceIdentifier.NodeIdentifier(qNameList));
-        parameters.add(new YangInstanceIdentifier.NodeIdentifierWithPredicates(qNameList, qNameKeyList,
-                "GigabitEthernet0/0/0/0"));
-        return YangInstanceIdentifier.create(parameters);
-    }
-
-    private QName newTestModuleQName(String localPart) throws Exception {
-        final Date revision = new SimpleDateFormat("yyyy-MM-dd").parse("2014-01-09");
-        final URI uri = new URI("test:module");
-        return QName.create(uri, revision, localPart);
-    }
-
-    @Test
-    public void getDataMountPointIntoHighestElement() throws UnsupportedEncodingException, URISyntaxException,
-            ParseException {
-        when(brokerFacade.readConfigurationData(any(DOMMountPoint.class), any(YangInstanceIdentifier.class))).thenReturn(
-                prepareCnDataForMountPointTest(true));
-        final DOMMountPoint mountInstance = mock(DOMMountPoint.class);
-        when(mountInstance.getSchemaContext()).thenReturn(schemaContextTestModule);
-        final DOMMountPointService mockMountService = mock(DOMMountPointService.class);
-        when(mockMountService.getMountPoint(any(YangInstanceIdentifier.class))).thenReturn(Optional.of(mountInstance));
-
-        ControllerContext.getInstance().setMountService(mockMountService);
-
-        final String uri = "/config/ietf-interfaces:interfaces/interface/0/yang-ext:mount/test-module:cont";
-        assertEquals(200, get(uri, MediaType.APPLICATION_XML));
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void getDataWithIdentityrefInURL() throws Exception {
-        setControllerContext(schemaContextTestModule);
-
-        QName moduleQN = newTestModuleQName("module");
-        ImmutableMap<QName, Object> keyMap = ImmutableMap.<QName, Object>builder()
-                .put(newTestModuleQName("type"), newTestModuleQName("test-identity"))
-                .put(newTestModuleQName("name"), "foo").build();
-        YangInstanceIdentifier iid = YangInstanceIdentifier.builder().node(newTestModuleQName("modules"))
-                .node(moduleQN).nodeWithKey(moduleQN, keyMap).build();
-        @SuppressWarnings("rawtypes")
-        NormalizedNode data = ImmutableMapNodeBuilder.create().withNodeIdentifier(
-                new NodeIdentifier(moduleQN)).withChild(ImmutableNodes.mapEntryBuilder()
-                        .withNodeIdentifier(new NodeIdentifierWithPredicates(moduleQN, keyMap))
-                        .withChild(ImmutableNodes.leafNode(newTestModuleQName("type"), newTestModuleQName("test-identity")))
-                        .withChild(ImmutableNodes.leafNode(newTestModuleQName("name"), "foo"))
-                        .withChild(ImmutableNodes.leafNode(newTestModuleQName("data"), "bar")).build()).build();
-        when(brokerFacade.readConfigurationData(iid)).thenReturn(data);
-
-        String uri = "/config/test-module:modules/module/test-module:test-identity/foo";
-        assertEquals(200, get(uri, MediaType.APPLICATION_XML));
-    }
-
-    // /modules
-    @Test
-    public void getModulesTest() throws UnsupportedEncodingException, FileNotFoundException {
-        final ControllerContext controllerContext = ControllerContext.getInstance();
-        controllerContext.setGlobalSchema(schemaContextModules);
-        restconfImpl.setControllerContext(controllerContext);
-
-        final String uri = "/modules";
-
-        Response response = target(uri).request("application/yang.api+json").get();
-        validateModulesResponseJson(response);
-
-        response = target(uri).request("application/yang.api+xml").get();
-        validateModulesResponseXml(response,schemaContextModules);
-    }
-
-    // /streams/
-    @Test
-    @Ignore // FIXME : find why it is fail by in gerrit build
-    public void getStreamsTest() throws UnsupportedEncodingException, FileNotFoundException {
-        setControllerContext(schemaContextModules);
-
-        final String uri = "/streams";
-
-        Response response = target(uri).request("application/yang.api+json").get();
-        final String responseBody = response.readEntity(String.class);
-        assertEquals(200, response.getStatus());
-        assertNotNull(responseBody);
-        assertTrue(responseBody.contains("streams"));
-
-        response = target(uri).request("application/yang.api+xml").get();
-        assertEquals(200, response.getStatus());
-        final Document responseXmlBody = response.readEntity(Document.class);
-        assertNotNull(responseXmlBody);
-        final Element rootNode = responseXmlBody.getDocumentElement();
-
-        assertEquals("streams", rootNode.getLocalName());
-        assertEquals(RESTCONF_NS, rootNode.getNamespaceURI());
-    }
-
-    // /modules/module
-    @Test
-    public void getModuleTest() throws FileNotFoundException, UnsupportedEncodingException {
-        setControllerContext(schemaContextModules);
-
-        final String uri = "/modules/module/module2/2014-01-02";
-
-        Response response = target(uri).request("application/yang.api+xml").get();
-        assertEquals(200, response.getStatus());
-        final Document responseXml = response.readEntity(Document.class);
-
-        final QName qname = assertedModuleXmlToModuleQName(responseXml.getDocumentElement());
-        assertNotNull(qname);
-
-        assertEquals("module2", qname.getLocalName());
-        assertEquals("module:2", qname.getNamespace().toString());
-        assertEquals("2014-01-02", qname.getFormattedRevision());
-
-        response = target(uri).request("application/yang.api+json").get();
-        assertEquals(200, response.getStatus());
-        final String responseBody = response.readEntity(String.class);
-        assertTrue("Module2 in json wasn't found", prepareJsonRegex("module2", "2014-01-02", "module:2", responseBody)
-                .find());
-        final String[] split = responseBody.split("\"module\"");
-        assertEquals("\"module\" element is returned more then once", 2, split.length);
-
-    }
-
-    // /operations
-    @Test
-    public void getOperationsTest() throws FileNotFoundException, UnsupportedEncodingException {
-        setControllerContext(schemaContextModules);
-
-        final String uri = "/operations";
-
-        Response response = target(uri).request("application/yang.api+xml").get();
-        assertEquals(200, response.getStatus());
-        final Document responseDoc = response.readEntity(Document.class);
-        validateOperationsResponseXml(responseDoc, schemaContextModules);
-
-        response = target(uri).request("application/yang.api+json").get();
-        assertEquals(200, response.getStatus());
-        final String responseBody = response.readEntity(String.class);
-        assertTrue("Json response for /operations dummy-rpc1-module1 is incorrect",
-                validateOperationsResponseJson(responseBody, "dummy-rpc1-module1", "module1").find());
-        assertTrue("Json response for /operations dummy-rpc2-module1 is incorrect",
-                validateOperationsResponseJson(responseBody, "dummy-rpc2-module1", "module1").find());
-        assertTrue("Json response for /operations dummy-rpc1-module2 is incorrect",
-                validateOperationsResponseJson(responseBody, "dummy-rpc1-module2", "module2").find());
-        assertTrue("Json response for /operations dummy-rpc2-module2 is incorrect",
-                validateOperationsResponseJson(responseBody, "dummy-rpc2-module2", "module2").find());
-
-    }
-
-    private void validateOperationsResponseXml(final Document responseDoc, final SchemaContext schemaContext) {
-
-        final Element operationsElem = responseDoc.getDocumentElement();
-        assertEquals(RESTCONF_NS, operationsElem.getNamespaceURI());
-        assertEquals("operations", operationsElem.getLocalName());
-
-        final NodeList operationsList = operationsElem.getChildNodes();
-        final HashSet<String> foundOperations = new HashSet<>();
-
-        for (int i = 0; i < operationsList.getLength(); i++) {
-            final org.w3c.dom.Node operation = operationsList.item(i);
-            foundOperations.add(operation.getLocalName());
-        }
-
-        for (final RpcDefinition schemaOp : schemaContext.getOperations()) {
-            assertTrue(foundOperations.contains(schemaOp.getQName().getLocalName()));
-        }
-    }
-
-    // /operations/pathToMountPoint/yang-ext:mount
-    @Test
-    public void getOperationsBehindMountPointTest() throws FileNotFoundException, UnsupportedEncodingException {
-        setControllerContext(schemaContextModules);
-
-        final DOMMountPoint mountInstance = mock(DOMMountPoint.class);
-        when(mountInstance.getSchemaContext()).thenReturn(schemaContextBehindMountPoint);
-        final DOMMountPointService mockMountService = mock(DOMMountPointService.class);
-        when(mockMountService.getMountPoint(any(YangInstanceIdentifier.class))).thenReturn(Optional.of(mountInstance));
-
-        ControllerContext.getInstance().setMountService(mockMountService);
-
-        final String uri = "/operations/ietf-interfaces:interfaces/interface/0/yang-ext:mount/";
-
-        Response response = target(uri).request("application/yang.api+xml").get();
-        assertEquals(200, response.getStatus());
-
-        final Document responseDoc = response.readEntity(Document.class);
-        validateOperationsResponseXml(responseDoc, schemaContextBehindMountPoint);
-
-        response = target(uri).request("application/yang.api+json").get();
-        assertEquals(200, response.getStatus());
-        final String responseBody = response.readEntity(String.class);
-        assertTrue("Json response for /operations/mount_point rpc-behind-module1 is incorrect",
-                validateOperationsResponseJson(responseBody, "rpc-behind-module1", "module1-behind-mount-point").find());
-        assertTrue("Json response for /operations/mount_point rpc-behind-module2 is incorrect",
-                validateOperationsResponseJson(responseBody, "rpc-behind-module2", "module2-behind-mount-point").find());
-
-    }
-
-    private Matcher validateOperationsResponseJson(final String searchIn, final String rpcName, final String moduleName) {
-        final StringBuilder regex = new StringBuilder();
-        regex.append(".*\"" + rpcName + "\"");
-        final Pattern ptrn = Pattern.compile(regex.toString(), Pattern.DOTALL);
-        return ptrn.matcher(searchIn);
-
-    }
-
-    private Matcher validateOperationsResponseXml(final String searchIn, final String rpcName, final String namespace) {
-        final StringBuilder regex = new StringBuilder();
-
-        regex.append("^");
-
-        regex.append(".*<operations");
-        regex.append(".*xmlns=\"urn:ietf:params:xml:ns:yang:ietf-restconf\"");
-        regex.append(".*>");
-
-        regex.append(".*<");
-        regex.append(".*" + rpcName);
-        regex.append(".*" + namespace);
-        regex.append(".*/");
-        regex.append(".*>");
-
-        regex.append(".*</operations.*");
-        regex.append(".*>");
-
-        regex.append(".*");
-        regex.append("$");
-        final Pattern ptrn = Pattern.compile(regex.toString(), Pattern.DOTALL);
-        return ptrn.matcher(searchIn);
-    }
-
-    // /restconf/modules/pathToMountPoint/yang-ext:mount
-    @Test
-    public void getModulesBehindMountPoint() throws FileNotFoundException, UnsupportedEncodingException {
-        setControllerContext(schemaContextModules);
-
-        final DOMMountPoint mountInstance = mock(DOMMountPoint.class);
-        when(mountInstance.getSchemaContext()).thenReturn(schemaContextBehindMountPoint);
-        final DOMMountPointService mockMountService = mock(DOMMountPointService.class);
-        when(mockMountService.getMountPoint(any(YangInstanceIdentifier.class))).thenReturn(Optional.of(mountInstance));
-
-        ControllerContext.getInstance().setMountService(mockMountService);
-
-        final String uri = "/modules/ietf-interfaces:interfaces/interface/0/yang-ext:mount/";
-
-        Response response = target(uri).request("application/yang.api+json").get();
-        assertEquals(200, response.getStatus());
-        final String responseBody = response.readEntity(String.class);
-
-        assertTrue(
-                "module1-behind-mount-point in json wasn't found",
-                prepareJsonRegex("module1-behind-mount-point", "2014-02-03", "module:1:behind:mount:point",
-                        responseBody).find());
-        assertTrue(
-                "module2-behind-mount-point in json wasn't found",
-                prepareJsonRegex("module2-behind-mount-point", "2014-02-04", "module:2:behind:mount:point",
-                        responseBody).find());
-
-        response = target(uri).request("application/yang.api+xml").get();
-        assertEquals(200, response.getStatus());
-        validateModulesResponseXml(response, schemaContextBehindMountPoint);
-
-    }
-
-    // /restconf/modules/module/pathToMountPoint/yang-ext:mount/moduleName/revision
-    @Test
-    public void getModuleBehindMountPoint() throws FileNotFoundException, UnsupportedEncodingException {
-        setControllerContext(schemaContextModules);
-
-        final DOMMountPoint mountInstance = mock(DOMMountPoint.class);
-        when(mountInstance.getSchemaContext()).thenReturn(schemaContextBehindMountPoint);
-        final DOMMountPointService mockMountService = mock(DOMMountPointService.class);
-        when(mockMountService.getMountPoint(any(YangInstanceIdentifier.class))).thenReturn(Optional.of(mountInstance));
-
-        ControllerContext.getInstance().setMountService(mockMountService);
-
-        final String uri = "/modules/module/ietf-interfaces:interfaces/interface/0/yang-ext:mount/module1-behind-mount-point/2014-02-03";
-
-        Response response = target(uri).request("application/yang.api+json").get();
-        assertEquals(200, response.getStatus());
-        final String responseBody = response.readEntity(String.class);
-
-        assertTrue(
-                "module1-behind-mount-point in json wasn't found",
-                prepareJsonRegex("module1-behind-mount-point", "2014-02-03", "module:1:behind:mount:point",
-                        responseBody).find());
-        final String[] split = responseBody.split("\"module\"");
-        assertEquals("\"module\" element is returned more then once", 2, split.length);
-
-        response = target(uri).request("application/yang.api+xml").get();
-        assertEquals(200, response.getStatus());
-        final Document responseXml = response.readEntity(Document.class);
-
-        final QName module = assertedModuleXmlToModuleQName(responseXml.getDocumentElement());
-
-        assertEquals("module1-behind-mount-point", module.getLocalName());
-        assertEquals("2014-02-03", module.getFormattedRevision());
-        assertEquals("module:1:behind:mount:point", module.getNamespace().toString());
-
-
-    }
-
-    private void validateModulesResponseXml(final Response response, final SchemaContext schemaContext) {
-        assertEquals(200, response.getStatus());
-        final Document responseBody = response.readEntity(Document.class);
-        final NodeList moduleNodes = responseBody.getDocumentElement().getElementsByTagNameNS(RESTCONF_NS, "module");
-
-        assertTrue(moduleNodes.getLength() > 0);
-
-        final HashSet<QName> foundModules = new HashSet<>();
-
-        for(int i=0;i < moduleNodes.getLength();i++) {
-            final org.w3c.dom.Node module = moduleNodes.item(i);
-
-            final QName name = assertedModuleXmlToModuleQName(module);
-            foundModules.add(name);
-        }
-
-        assertAllModules(foundModules,schemaContext);
-    }
-
-    private void assertAllModules(final Set<QName> foundModules, final SchemaContext schemaContext) {
-        for(final Module module : schemaContext.getModules()) {
-            final QName current = QName.create(module.getQNameModule(),module.getName());
-            assertTrue("Module not found in response.",foundModules.contains(current));
-        }
-
-    }
-
-    private QName assertedModuleXmlToModuleQName(final org.w3c.dom.Node module) {
-        assertEquals("module", module.getLocalName());
-        assertEquals(RESTCONF_NS, module.getNamespaceURI());
-        String revision = null;
-        String namespace = null;
-        String name = null;
-
-
-        final NodeList childNodes = module.getChildNodes();
-
-        for(int i =0;i < childNodes.getLength(); i++) {
-            final org.w3c.dom.Node child = childNodes.item(i);
-            assertEquals(RESTCONF_NS, child.getNamespaceURI());
-
-            switch(child.getLocalName()) {
-                case "name":
-                    assertNull("Name element appeared multiple times",name);
-                    name = child.getTextContent().trim();
-                    break;
-                case "revision":
-                    assertNull("Revision element appeared multiple times",revision);
-                    revision = child.getTextContent().trim();
-                    break;
-
-                case "namespace":
-                    assertNull("Namespace element appeared multiple times",namespace);
-                    namespace = child.getTextContent().trim();
-                    break;
-            }
-        }
-
-        assertNotNull("Revision was not part of xml",revision);
-        assertNotNull("Module namespace was not part of xml",namespace);
-        assertNotNull("Module identiffier was not part of xml",name);
-
-
-        // TODO Auto-generated method stub
-
-        return QName.create(namespace,revision,name);
-    }
-
-    private void validateModulesResponseJson(final Response response) {
-        assertEquals(200, response.getStatus());
-        final String responseBody = response.readEntity(String.class);
-
-        assertTrue("Module1 in json wasn't found", prepareJsonRegex("module1", "2014-01-01", "module:1", responseBody)
-                .find());
-        assertTrue("Module2 in json wasn't found", prepareJsonRegex("module2", "2014-01-02", "module:2", responseBody)
-                .find());
-        assertTrue("Module3 in json wasn't found", prepareJsonRegex("module3", "2014-01-03", "module:3", responseBody)
-                .find());
-    }
-
-    private Matcher prepareJsonRegex(final String module, final String revision, final String namespace,
-            final String searchIn) {
-        final StringBuilder regex = new StringBuilder();
-        regex.append("^");
-
-        regex.append(".*\\{");
-        regex.append(".*\"name\"");
-        regex.append(".*:");
-        regex.append(".*\"" + module + "\",");
-
-        regex.append(".*\"revision\"");
-        regex.append(".*:");
-        regex.append(".*\"" + revision + "\",");
-
-        regex.append(".*\"namespace\"");
-        regex.append(".*:");
-        regex.append(".*\"" + namespace + "\"");
-
-        regex.append(".*\\}");
-
-        regex.append(".*");
-        regex.append("$");
-        final Pattern ptrn = Pattern.compile(regex.toString(), Pattern.DOTALL);
-        return ptrn.matcher(searchIn);
-
-    }
-
-
-    private int get(final String uri, final String mediaType) {
-        return target(uri).request(mediaType).get().getStatus();
-    }
-
-    /**
-    container cont {
-        container cont1 {
-            leaf lf11 {
-                type string;
-            }
-    */
-    @SuppressWarnings("rawtypes")
-    private NormalizedNode prepareCnDataForMountPointTest(final boolean wrapToCont) throws URISyntaxException, ParseException {
-        final String testModuleDate = "2014-01-09";
-        final ContainerNode contChild = Builders
-                .containerBuilder()
-                .withNodeIdentifier(TestUtils.getNodeIdentifier("cont1", "test:module", testModuleDate))
-                .withChild(
-                        Builders.leafBuilder()
-                                .withNodeIdentifier(TestUtils.getNodeIdentifier("lf11", "test:module", testModuleDate))
-                                .withValue("lf11 value").build()).build();
-
-        if (wrapToCont) {
-            return Builders.containerBuilder()
-                    .withNodeIdentifier(TestUtils.getNodeIdentifier("cont", "test:module", testModuleDate))
-                    .withChild(contChild).build();
-        }
-        return contChild;
-
-    }
-
-    @SuppressWarnings("unchecked")
-    private void mockReadOperationalDataMethod() {
-        when(brokerFacade.readOperationalData(any(YangInstanceIdentifier.class))).thenReturn(answerFromGet);
-    }
-
-    @SuppressWarnings("unchecked")
-    private void mockReadConfigurationDataMethod() {
-        when(brokerFacade.readConfigurationData(any(YangInstanceIdentifier.class))).thenReturn(answerFromGet);
-    }
-
-    @SuppressWarnings("rawtypes")
-    private NormalizedNode prepareCnDataForSlashesBehindMountPointTest() throws ParseException {
-        return ImmutableMapEntryNodeBuilder
-                .create()
-                .withNodeIdentifier(
-                        TestUtils.getNodeIdentifierPredicate("lst1", "test:module", "2014-01-09", "lf11",
-                                "GigabitEthernet0/0/0/0"))
-                .withChild(
-                        ImmutableLeafNodeBuilder.create()
-                                .withNodeIdentifier(TestUtils.getNodeIdentifier("lf11", "test:module", "2014-01-09"))
-                                .withValue("GigabitEthernet0/0/0/0").build()).build();
-
-    }
-
-    /**
-     * If includeWhiteChars URI parameter is set to false then no white characters can be included in returned output
-     *
-     * @throws UnsupportedEncodingException
-     */
-    @Test
-    public void getDataWithUriIncludeWhiteCharsParameterTest() throws UnsupportedEncodingException {
-        getDataWithUriIncludeWhiteCharsParameter("config");
-        getDataWithUriIncludeWhiteCharsParameter("operational");
-    }
-
-    private void getDataWithUriIncludeWhiteCharsParameter(final String target) throws UnsupportedEncodingException {
-        mockReadConfigurationDataMethod();
-        mockReadOperationalDataMethod();
-        final String uri = "/" + target + "/ietf-interfaces:interfaces/interface/eth0";
-        Response response = target(uri).queryParam("prettyPrint", "false").request("application/xml").get();
-        final String xmlData = response.readEntity(String.class);
-
-        Pattern pattern = Pattern.compile(".*(>\\s+|\\s+<).*", Pattern.DOTALL);
-        Matcher matcher = pattern.matcher(xmlData);
-        // XML element can't surrounded with white character (e.g ">    " or
-        // "    <")
-        assertFalse(matcher.matches());
-
-        response = target(uri).queryParam("prettyPrint", "false").request("application/json").get();
-        final String jsonData = response.readEntity(String.class);
-        pattern = Pattern.compile(".*(\\}\\s+|\\s+\\{|\\]\\s+|\\s+\\[|\\s+:|:\\s+).*", Pattern.DOTALL);
-        matcher = pattern.matcher(jsonData);
-        // JSON element can't surrounded with white character (e.g "} ", " {",
-        // "] ", " [", " :" or ": ")
-        assertFalse(matcher.matches());
-    }
-
-    /**
-     * Tests behavior when invalid value of depth URI parameter
-     */
-    @Test
-    @Ignore
-    public void getDataWithInvalidDepthParameterTest() {
-        setControllerContext(schemaContextModules);
-
-        final MultivaluedMap<String, String> paramMap = new MultivaluedHashMap<>();
-        paramMap.putSingle("depth", "1o");
-        final UriInfo mockInfo = mock(UriInfo.class);
-        when(mockInfo.getQueryParameters(false)).thenAnswer(new Answer<MultivaluedMap<String, String>>() {
-            @Override
-            public MultivaluedMap<String, String> answer(final InvocationOnMock invocation) {
-                return paramMap;
-            }
-        });
-
-        getDataWithInvalidDepthParameterTest(mockInfo);
-
-        paramMap.putSingle("depth", "0");
-        getDataWithInvalidDepthParameterTest(mockInfo);
-
-        paramMap.putSingle("depth", "-1");
-        getDataWithInvalidDepthParameterTest(mockInfo);
-    }
-
-    @SuppressWarnings({"rawtypes", "unchecked"})
-    private void getDataWithInvalidDepthParameterTest(final UriInfo uriInfo) {
-        try {
-            final QName qNameDepth1Cont = QName.create("urn:nested:module", "2014-06-3", "depth1-cont");
-            final YangInstanceIdentifier ii = YangInstanceIdentifier.builder().node(qNameDepth1Cont).build();
-            final NormalizedNode value = (Builders.containerBuilder().withNodeIdentifier(new NodeIdentifier(qNameDepth1Cont)).build());
-            when(brokerFacade.readConfigurationData(eq(ii))).thenReturn(value);
-            restconfImpl.readConfigurationData("nested-module:depth1-cont", uriInfo);
-            fail("Expected RestconfDocumentedException");
-        } catch (final RestconfDocumentedException e) {
-            assertTrue("Unexpected error message: " + e.getErrors().get(0).getErrorMessage(), e.getErrors().get(0)
-                    .getErrorMessage().contains("depth"));
-        }
-    }
-
-    @SuppressWarnings("unused")
-    private void verifyXMLResponse(final Response response, final NodeData nodeData) {
-        final Document doc = response.readEntity(Document.class);
-//        Document doc = TestUtils.loadDocumentFrom((InputStream) response.getEntity());
-//        System.out.println();
-        assertNotNull("Could not parse XML document", doc);
-
-        // System.out.println(TestUtils.getDocumentInPrintableForm( doc ));
-
-        verifyContainerElement(doc.getDocumentElement(), nodeData);
-    }
-
-    @SuppressWarnings("unchecked")
-    private void verifyContainerElement(final Element element, final NodeData nodeData) {
-
-        assertEquals("Element local name", nodeData.key, element.getLocalName());
-
-        final NodeList childNodes = element.getChildNodes();
-        if (nodeData.data == null) { // empty container
-            assertTrue("Expected no child elements for \"" + element.getLocalName() + "\"", childNodes.getLength() == 0);
-            return;
-        }
-
-        final Map<String, NodeData> expChildMap = Maps.newHashMap();
-        for (final NodeData expChild : (List<NodeData>) nodeData.data) {
-            expChildMap.put(expChild.key.toString(), expChild);
-        }
-
-        for (int i = 0; i < childNodes.getLength(); i++) {
-            final org.w3c.dom.Node actualChild = childNodes.item(i);
-            if (!(actualChild instanceof Element)) {
-                continue;
-            }
-
-            final Element actualElement = (Element) actualChild;
-            final NodeData expChild = expChildMap.remove(actualElement.getLocalName());
-            assertNotNull(
-                    "Unexpected child element for parent \"" + element.getLocalName() + "\": "
-                            + actualElement.getLocalName(), expChild);
-
-            if (expChild.data == null || expChild.data instanceof List) {
-                verifyContainerElement(actualElement, expChild);
-            } else {
-                assertEquals("Text content for element: " + actualElement.getLocalName(), expChild.data,
-                        actualElement.getTextContent());
-            }
-        }
-
-        if (!expChildMap.isEmpty()) {
-            fail("Missing elements for parent \"" + element.getLocalName() + "\": " + expChildMap.keySet());
-        }
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestOperationUtils.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestOperationUtils.java
deleted file mode 100644 (file)
index 7bf4782..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-public class RestOperationUtils {
-
-    public static final String JSON = "+json";
-    public static final String XML = "+xml";
-
-    private RestOperationUtils() {
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPostOperationTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPostOperationTest.java
deleted file mode 100644 (file)
index bb731a3..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.opendaylight.controller.sal.restconf.impl.test.RestOperationUtils.XML;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.Futures;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URISyntaxException;
-import java.text.ParseException;
-import java.util.Set;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import org.glassfish.jersey.server.ResourceConfig;
-import org.glassfish.jersey.test.JerseyTest;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.sal.rest.api.Draft02;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.RestconfDocumentedExceptionMapper;
-import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class RestPostOperationTest extends JerseyTest {
-
-    private static String xmlDataAbsolutePath;
-    private static String xmlDataInterfaceAbsolutePath;
-    private static String xmlDataRpcInput;
-    private static String xmlBlockData;
-    private static String xmlTestInterface;
-    private static String xmlData3;
-    private static String xmlData4;
-
-    private static BrokerFacade brokerFacade;
-    private static RestconfImpl restconfImpl;
-    private static SchemaContext schemaContextYangsIetf;
-    private static SchemaContext schemaContextTestModule;
-    private static SchemaContext schemaContext;
-
-    private static DOMMountPointService mountService;
-
-    @BeforeClass
-    public static void init() throws URISyntaxException, IOException {
-        schemaContextYangsIetf = TestUtils.loadSchemaContext("/full-versions/yangs");
-        schemaContextTestModule = TestUtils.loadSchemaContext("/full-versions/test-module");
-        brokerFacade = mock(BrokerFacade.class);
-        restconfImpl = RestconfImpl.getInstance();
-        restconfImpl.setBroker(brokerFacade);
-
-        final Set<Module> modules = TestUtils.loadModulesFrom("/test-config-data/yang1");
-        schemaContext = TestUtils.loadSchemaContext(modules);
-
-        loadData();
-    }
-
-    @Override
-    protected Application configure() {
-        /* enable/disable Jersey logs to console */
-        // enable(TestProperties.LOG_TRAFFIC);
-        // enable(TestProperties.DUMP_ENTITY);
-        // enable(TestProperties.RECORD_LOG_LEVEL);
-        // set(TestProperties.RECORD_LOG_LEVEL, Level.ALL.intValue());
-        ResourceConfig resourceConfig = new ResourceConfig();
-        resourceConfig = resourceConfig.registerInstances(restconfImpl, new XmlNormalizedNodeBodyReader(),
-                new NormalizedNodeXmlBodyWriter(), new JsonNormalizedNodeBodyReader(), new NormalizedNodeJsonBodyWriter());
-        resourceConfig.registerClasses(RestconfDocumentedExceptionMapper.class);
-        return resourceConfig;
-    }
-
-    private void setSchemaControllerContext(final SchemaContext schema) {
-        final ControllerContext context = ControllerContext.getInstance();
-        context.setSchemas(schema);
-        restconfImpl.setControllerContext(context);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    @Ignore /// xmlData* need netconf-yang
-    public void postDataViaUrlMountPoint() throws UnsupportedEncodingException {
-        setSchemaControllerContext(schemaContextYangsIetf);
-        when(
-                brokerFacade.commitConfigurationDataPost(any(DOMMountPoint.class), any(YangInstanceIdentifier.class),
-                        any(NormalizedNode.class))).thenReturn(mock(CheckedFuture.class));
-
-        final DOMMountPoint mountInstance = mock(DOMMountPoint.class);
-        when(mountInstance.getSchemaContext()).thenReturn(schemaContextTestModule);
-        final DOMMountPointService mockMountService = mock(DOMMountPointService.class);
-        when(mockMountService.getMountPoint(any(YangInstanceIdentifier.class))).thenReturn(Optional.of(mountInstance));
-
-        ControllerContext.getInstance().setMountService(mockMountService);
-
-        String uri = "/config/ietf-interfaces:interfaces/interface/0/";
-        assertEquals(204, post(uri, Draft02.MediaTypes.DATA + XML, xmlData4));
-        uri = "/config/ietf-interfaces:interfaces/interface/0/yang-ext:mount/test-module:cont";
-        assertEquals(204, post(uri, Draft02.MediaTypes.DATA + XML, xmlData3));
-
-        assertEquals(400, post(uri, MediaType.APPLICATION_JSON, ""));
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    @Ignore //jenkins has problem with JerseyTest - we expecting problems with singletons ControllerContext as schemaContext holder
-    public void createConfigurationDataTest() throws UnsupportedEncodingException, ParseException {
-        initMocking();
-        final RpcResult<TransactionStatus> rpcResult = new DummyRpcResult.Builder<TransactionStatus>().result(
-                TransactionStatus.COMMITED).build();
-
-        when(brokerFacade.commitConfigurationDataPost((SchemaContext)null, any(YangInstanceIdentifier.class), any(NormalizedNode.class)))
-                .thenReturn(mock(CheckedFuture.class));
-
-        final ArgumentCaptor<YangInstanceIdentifier> instanceIdCaptor = ArgumentCaptor.forClass(YangInstanceIdentifier.class);
-        @SuppressWarnings("rawtypes")
-        final ArgumentCaptor<NormalizedNode> compNodeCaptor = ArgumentCaptor.forClass(NormalizedNode.class);
-
-
-        // FIXME : identify who is set the schemaContext
-//        final String URI_1 = "/config";
-//        assertEquals(204, post(URI_1, Draft02.MediaTypes.DATA + XML, xmlTestInterface));
-//        verify(brokerFacade).commitConfigurationDataPost(instanceIdCaptor.capture(), compNodeCaptor.capture());
-        final String identifier = "[(urn:ietf:params:xml:ns:yang:test-interface?revision=2014-07-01)interfaces]";
-//        assertEquals(identifier, ImmutableList.copyOf(instanceIdCaptor.getValue().getPathArguments()).toString());
-
-        final String URI_2 = "/config/test-interface:interfaces";
-        assertEquals(204, post(URI_2, Draft02.MediaTypes.DATA + XML, xmlBlockData));
-        // FIXME : NEVER test a nr. of call some service in complex test suite
-//        verify(brokerFacade, times(2))
-        verify(brokerFacade, times(1))
-                .commitConfigurationDataPost((SchemaContext)null, instanceIdCaptor.capture(), compNodeCaptor.capture());
-//        identifier = "[(urn:ietf:params:xml:ns:yang:test-interface?revision=2014-07-01)interfaces, (urn:ietf:params:xml:ns:yang:test-interface?revision=2014-07-01)block]";
-        assertEquals(identifier, ImmutableList.copyOf(instanceIdCaptor.getValue().getPathArguments()).toString());
-    }
-
-    @Test
-    public void createConfigurationDataNullTest() throws UnsupportedEncodingException {
-        initMocking();
-
-        when(brokerFacade.commitConfigurationDataPost(any(SchemaContext.class), any(YangInstanceIdentifier.class),any(NormalizedNode.class)))
-                .thenReturn(Futures.<Void, TransactionCommitFailedException>immediateCheckedFuture(null));
-
-        //FIXME : find who is set schemaContext
-//        final String URI_1 = "/config";
-//        assertEquals(204, post(URI_1, Draft02.MediaTypes.DATA + XML, xmlTestInterface));
-
-        final String URI_2 = "/config/test-interface:interfaces";
-        assertEquals(204, post(URI_2, Draft02.MediaTypes.DATA + XML, xmlBlockData));
-    }
-
-    private static void initMocking() {
-        final ControllerContext controllerContext = ControllerContext.getInstance();
-        controllerContext.setSchemas(schemaContext);
-        mountService = mock(DOMMountPointService.class);
-        controllerContext.setMountService(mountService);
-        brokerFacade = mock(BrokerFacade.class);
-        restconfImpl = RestconfImpl.getInstance();
-        restconfImpl.setBroker(brokerFacade);
-        restconfImpl.setControllerContext(controllerContext);
-    }
-
-    private int post(final String uri, final String mediaType, final String data) {
-        return target(uri).request(mediaType).post(Entity.entity(data, mediaType)).getStatus();
-    }
-
-    private static void loadData() throws IOException, URISyntaxException {
-        InputStream xmlStream = RestconfImplTest.class
-                .getResourceAsStream("/parts/ietf-interfaces_interfaces_absolute_path.xml");
-        xmlDataAbsolutePath = TestUtils.getDocumentInPrintableForm(TestUtils.loadDocumentFrom(xmlStream));
-        xmlStream = RestconfImplTest.class
-                .getResourceAsStream("/parts/ietf-interfaces_interfaces_interface_absolute_path.xml");
-        xmlDataInterfaceAbsolutePath = TestUtils.getDocumentInPrintableForm(TestUtils.loadDocumentFrom(xmlStream));
-        final String xmlPathRpcInput = RestconfImplTest.class.getResource("/full-versions/test-data2/data-rpc-input.xml")
-                .getPath();
-        xmlDataRpcInput = TestUtils.loadTextFile(xmlPathRpcInput);
-        final String xmlPathBlockData = RestconfImplTest.class.getResource("/test-config-data/xml/block-data.xml").getPath();
-        xmlBlockData = TestUtils.loadTextFile(xmlPathBlockData);
-        final String xmlPathTestInterface = RestconfImplTest.class.getResource("/test-config-data/xml/test-interface.xml")
-                .getPath();
-        xmlTestInterface = TestUtils.loadTextFile(xmlPathTestInterface);
-//        cnSnDataOutput = prepareCnSnRpcOutput();
-        final String data3Input = RestconfImplTest.class.getResource("/full-versions/test-data2/data3.xml").getPath();
-        xmlData3 = TestUtils.loadTextFile(data3Input);
-        final String data4Input = RestconfImplTest.class.getResource("/full-versions/test-data2/data7.xml").getPath();
-        xmlData4 = TestUtils.loadTextFile(data4Input);
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPutConfigTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPutConfigTest.java
deleted file mode 100644 (file)
index 634b63c..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/**
- * Copyright (c) 2015 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.sal.restconf.impl.test;
-
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.Futures;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.controller.md.sal.rest.common.TestRestconfUtils;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-/**
- * sal-rest-connector
- * org.opendaylight.controller.sal.restconf.impl.test
- *
- *
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
- * Created: May 14, 2015
- */
-@RunWith(MockitoJUnitRunner.class)
-public class RestPutConfigTest {
-
-    private RestconfImpl restconfService;
-    private ControllerContext controllerCx;
-    private SchemaContext schemaCx;
-
-    @Mock
-    private BrokerFacade brokerFacade;
-
-    @Before
-    public void init() {
-        restconfService = RestconfImpl.getInstance();
-        controllerCx = ControllerContext.getInstance();
-        schemaCx = TestRestconfUtils.loadSchemaContext("/test-config-data/yang1/", null);
-        controllerCx.setSchemas(schemaCx);
-        restconfService.setControllerContext(controllerCx);
-    }
-
-    @Test
-    public void testPutConfigData() {
-        final String identifier = "test-interface:interfaces/interface/key";
-        final InstanceIdentifierContext<?> iiCx = controllerCx.toInstanceIdentifier(identifier);
-        final MapEntryNode data = Mockito.mock(MapEntryNode.class);
-        final QName qName = QName.create("urn:ietf:params:xml:ns:yang:test-interface", "2014-07-01", "interface");
-        final QName qNameKey = QName.create("urn:ietf:params:xml:ns:yang:test-interface", "2014-07-01", "name");
-        final NodeIdentifierWithPredicates identWithPredicates = new NodeIdentifierWithPredicates(qName, qNameKey, "key");
-        Mockito.when(data.getNodeType()).thenReturn(qName);
-        Mockito.when(data.getIdentifier()).thenReturn(identWithPredicates);
-        final NormalizedNodeContext payload = new NormalizedNodeContext(iiCx, data);
-
-        mockingBrokerPut(iiCx.getInstanceIdentifier(), data);
-
-        restconfService.updateConfigurationData(identifier, payload);
-    }
-
-    @Test
-    public void testPutConfigDataCheckOnlyLastElement() {
-        final String identifier = "test-interface:interfaces/interface/key/sub-interface/subkey";
-        final InstanceIdentifierContext<?> iiCx = controllerCx.toInstanceIdentifier(identifier);
-        final MapEntryNode data = Mockito.mock(MapEntryNode.class);
-        final QName qName = QName.create("urn:ietf:params:xml:ns:yang:test-interface", "2014-07-01", "sub-interface");
-        final QName qNameSubKey = QName.create("urn:ietf:params:xml:ns:yang:test-interface", "2014-07-01", "sub-name");
-        final NodeIdentifierWithPredicates identWithPredicates = new NodeIdentifierWithPredicates(qName, qNameSubKey, "subkey");
-        Mockito.when(data.getNodeType()).thenReturn(qName);
-        Mockito.when(data.getIdentifier()).thenReturn(identWithPredicates);
-        final NormalizedNodeContext payload = new NormalizedNodeContext(iiCx, data);
-
-        mockingBrokerPut(iiCx.getInstanceIdentifier(), data);
-
-        restconfService.updateConfigurationData(identifier, payload);
-    }
-
-    @Test(expected=RestconfDocumentedException.class)
-    public void testPutConfigDataMissingUriKey() {
-        final String identifier = "test-interface:interfaces/interface";
-        controllerCx.toInstanceIdentifier(identifier);
-    }
-
-    @Test(expected=RestconfDocumentedException.class)
-    public void testPutConfigDataDiferentKey() {
-        final String identifier = "test-interface:interfaces/interface/key";
-        final InstanceIdentifierContext<?> iiCx = controllerCx.toInstanceIdentifier(identifier);
-        final MapEntryNode data = Mockito.mock(MapEntryNode.class);
-        final QName qName = QName.create("urn:ietf:params:xml:ns:yang:test-interface", "2014-07-01", "interface");
-        final QName qNameKey = QName.create("urn:ietf:params:xml:ns:yang:test-interface", "2014-07-01", "name");
-        final NodeIdentifierWithPredicates identWithPredicates = new NodeIdentifierWithPredicates(qName, qNameKey, "notSameKey");
-        Mockito.when(data.getNodeType()).thenReturn(qName);
-        Mockito.when(data.getIdentifier()).thenReturn(identWithPredicates);
-        final NormalizedNodeContext payload = new NormalizedNodeContext(iiCx, data);
-
-        mockingBrokerPut(iiCx.getInstanceIdentifier(), data);
-
-        restconfService.updateConfigurationData(identifier, payload);
-    }
-
-    private void mockingBrokerPut(final YangInstanceIdentifier yii, final NormalizedNode<?, ?> data) {
-        final CheckedFuture<Void, TransactionCommitFailedException> checkedFuture = Futures.immediateCheckedFuture(null);
-        Mockito.when(brokerFacade.commitConfigurationDataPut(schemaCx, yii, data)).thenReturn(checkedFuture);
-        restconfService.setBroker(brokerFacade);
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPutOperationTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestPutOperationTest.java
deleted file mode 100644 (file)
index f70af4e..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URISyntaxException;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.glassfish.jersey.server.ResourceConfig;
-import org.glassfish.jersey.test.JerseyTest;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.RestconfDocumentedExceptionMapper;
-import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-@Ignore
-public class RestPutOperationTest extends JerseyTest {
-
-    private static String xmlData;
-    private static String xmlData2;
-    private static String xmlData3;
-
-    private static BrokerFacade brokerFacade;
-    private static RestconfImpl restconfImpl;
-    private static SchemaContext schemaContextYangsIetf;
-    private static SchemaContext schemaContextTestModule;
-
-    @BeforeClass
-    public static void init() throws IOException {
-        schemaContextYangsIetf = TestUtils.loadSchemaContext("/full-versions/yangs");
-        schemaContextTestModule = TestUtils.loadSchemaContext("/full-versions/test-module");
-        final ControllerContext controllerContext = ControllerContext.getInstance();
-        controllerContext.setSchemas(schemaContextYangsIetf);
-        brokerFacade = mock(BrokerFacade.class);
-        restconfImpl = RestconfImpl.getInstance();
-        restconfImpl.setBroker(brokerFacade);
-        restconfImpl.setControllerContext(controllerContext);
-        loadData();
-    }
-
-    private static void loadData() throws IOException {
-        final InputStream xmlStream = RestconfImplTest.class.getResourceAsStream("/parts/ietf-interfaces_interfaces.xml");
-        xmlData = TestUtils.getDocumentInPrintableForm(TestUtils.loadDocumentFrom(xmlStream));
-        final InputStream xmlStream2 = RestconfImplTest.class.getResourceAsStream("/full-versions/test-data2/data2.xml");
-        xmlData2 = TestUtils.getDocumentInPrintableForm(TestUtils.loadDocumentFrom(xmlStream2));
-        final InputStream xmlStream3 = RestconfImplTest.class.getResourceAsStream("/full-versions/test-data2/data7.xml");
-        xmlData3 = TestUtils.getDocumentInPrintableForm(TestUtils.loadDocumentFrom(xmlStream3));
-    }
-
-    @Override
-    protected Application configure() {
-        /* enable/disable Jersey logs to console */
-        // enable(TestProperties.LOG_TRAFFIC);
-        // enable(TestProperties.DUMP_ENTITY);
-        // enable(TestProperties.RECORD_LOG_LEVEL);
-        // set(TestProperties.RECORD_LOG_LEVEL, Level.ALL.intValue());
-        ResourceConfig resourceConfig = new ResourceConfig();
-        resourceConfig = resourceConfig.registerInstances(restconfImpl,new XmlNormalizedNodeBodyReader(),
-                new NormalizedNodeXmlBodyWriter(), new JsonNormalizedNodeBodyReader(), new NormalizedNodeJsonBodyWriter());
-        resourceConfig.registerClasses(RestconfDocumentedExceptionMapper.class);
-        return resourceConfig;
-    }
-
-    /**
-     * Tests of status codes for "/config/{identifier}".
-     */
-    @Test
-    public void putConfigStatusCodes() throws UnsupportedEncodingException {
-        final String uri = "/config/ietf-interfaces:interfaces/interface/eth0";
-        mockCommitConfigurationDataPutMethod(true);
-        assertEquals(200, put(uri, MediaType.APPLICATION_XML, xmlData));
-
-        mockCommitConfigurationDataPutMethod(false);
-        assertEquals(500, put(uri, MediaType.APPLICATION_XML, xmlData));
-
-        assertEquals(400, put(uri, MediaType.APPLICATION_JSON, ""));
-    }
-
-    @Test
-    public void putConfigStatusCodesEmptyBody() throws UnsupportedEncodingException {
-        final String uri = "/config/ietf-interfaces:interfaces/interface/eth0";
-        @SuppressWarnings("unused")
-        final Response resp = target(uri).request(MediaType.APPLICATION_JSON).put(
-                Entity.entity("", MediaType.APPLICATION_JSON));
-        assertEquals(400, put(uri, MediaType.APPLICATION_JSON, ""));
-    }
-
-    @Test
-    @Ignore // jenkins has problem with JerseyTest - we expecting problems with singletons ControllerContext as schemaContext holder
-    public void testRpcResultCommitedToStatusCodesWithMountPoint() throws UnsupportedEncodingException,
-            FileNotFoundException, URISyntaxException {
-
-        @SuppressWarnings("unchecked")
-        final CheckedFuture<Void, TransactionCommitFailedException> dummyFuture = mock(CheckedFuture.class);
-
-        when(
-                brokerFacade.commitConfigurationDataPut(any(DOMMountPoint.class), any(YangInstanceIdentifier.class),
-                        any(NormalizedNode.class))).thenReturn(dummyFuture);
-
-        final DOMMountPoint mountInstance = mock(DOMMountPoint.class);
-        when(mountInstance.getSchemaContext()).thenReturn(schemaContextTestModule);
-        final DOMMountPointService mockMountService = mock(DOMMountPointService.class);
-        when(mockMountService.getMountPoint(any(YangInstanceIdentifier.class))).thenReturn(Optional.of(mountInstance));
-
-        ControllerContext.getInstance().setMountService(mockMountService);
-
-        String uri = "/config/ietf-interfaces:interfaces/interface/0/yang-ext:mount/test-module:cont";
-        assertEquals(200, put(uri, MediaType.APPLICATION_XML, xmlData2));
-
-        uri = "/config/ietf-interfaces:interfaces/yang-ext:mount/test-module:cont";
-        assertEquals(200, put(uri, MediaType.APPLICATION_XML, xmlData2));
-    }
-
-    @Test
-    public void putDataMountPointIntoHighestElement() throws UnsupportedEncodingException, URISyntaxException {
-        @SuppressWarnings("unchecked")
-        final CheckedFuture<Void, TransactionCommitFailedException> dummyFuture = mock(CheckedFuture.class);
-        when(
-                brokerFacade.commitConfigurationDataPut(any(DOMMountPoint.class), any(YangInstanceIdentifier.class),
-                        any(NormalizedNode.class))).thenReturn(dummyFuture);
-
-        final DOMMountPoint mountInstance = mock(DOMMountPoint.class);
-        when(mountInstance.getSchemaContext()).thenReturn(schemaContextTestModule);
-        final DOMMountPointService mockMountService = mock(DOMMountPointService.class);
-        when(mockMountService.getMountPoint(any(YangInstanceIdentifier.class))).thenReturn(Optional.of(mountInstance));
-
-        ControllerContext.getInstance().setMountService(mockMountService);
-
-        final String uri = "/config/ietf-interfaces:interfaces/yang-ext:mount";
-        assertEquals(200, put(uri, MediaType.APPLICATION_XML, xmlData3));
-    }
-
-    @Test
-    public void putWithOptimisticLockFailedException() throws UnsupportedEncodingException {
-
-        final String uri = "/config/ietf-interfaces:interfaces/interface/eth0";
-
-        doThrow(OptimisticLockFailedException.class).
-            when(brokerFacade).commitConfigurationDataPut(
-                any(SchemaContext.class), any(YangInstanceIdentifier.class), any(NormalizedNode.class));
-
-        assertEquals(500, put(uri, MediaType.APPLICATION_XML, xmlData));
-
-        doThrow(OptimisticLockFailedException.class).doReturn(mock(CheckedFuture.class)).
-            when(brokerFacade).commitConfigurationDataPut(
-                any(SchemaContext.class), any(YangInstanceIdentifier.class), any(NormalizedNode.class));
-
-        assertEquals(200, put(uri, MediaType.APPLICATION_XML, xmlData));
-    }
-
-    @Test
-    @Ignore // jenkins has problem with JerseyTest - we expecting problems with singletons ControllerContext as schemaContext holder
-    public void putWithTransactionCommitFailedException() throws UnsupportedEncodingException {
-
-        final String uri = "/config/ietf-interfaces:interfaces/interface/eth0";
-
-        doThrow(TransactionCommitFailedException.class).
-            when(brokerFacade).commitConfigurationDataPut(
-                (SchemaContext)null, any(YangInstanceIdentifier.class), any(NormalizedNode.class));
-
-        assertEquals(500, put(uri, MediaType.APPLICATION_XML, xmlData));
-    }
-
-    private int put(final String uri, final String mediaType, final String data) throws UnsupportedEncodingException {
-        return target(uri).request(mediaType).put(Entity.entity(data, mediaType)).getStatus();
-    }
-
-    private void mockCommitConfigurationDataPutMethod(final boolean noErrors) {
-        if (noErrors) {
-            doReturn(mock(CheckedFuture.class)).when(brokerFacade).commitConfigurationDataPut(
-                    any(SchemaContext.class), any(YangInstanceIdentifier.class), any(NormalizedNode.class));
-        } else {
-            doThrow(RestconfDocumentedException.class).when(brokerFacade).commitConfigurationDataPut(
-                    any(SchemaContext.class), any(YangInstanceIdentifier.class), any(NormalizedNode.class));
-        }
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfDocumentedExceptionMapperTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfDocumentedExceptionMapperTest.java
deleted file mode 100644 (file)
index 9edd952..0000000
+++ /dev/null
@@ -1,830 +0,0 @@
-/*
- * Copyright (c) 2014 Brocade Communications 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.when;
-import com.google.common.collect.Maps;
-import com.google.common.io.ByteStreams;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.UriInfo;
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpression;
-import javax.xml.xpath.XPathFactory;
-import org.glassfish.jersey.server.ResourceConfig;
-import org.glassfish.jersey.test.JerseyTest;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.api.Draft02;
-import org.opendaylight.controller.sal.rest.api.RestconfService;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.RestconfDocumentedExceptionMapper;
-import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * Unit tests for RestconfDocumentedExceptionMapper.
- *
- * @author Thomas Pantelis
- */
-public class RestconfDocumentedExceptionMapperTest extends JerseyTest {
-
-    interface ErrorInfoVerifier {
-        void verifyXML(Node errorInfoNode);
-
-        void verifyJson(JsonElement errorInfoElement);
-    }
-
-    static class SimpleErrorInfoVerifier implements ErrorInfoVerifier {
-
-        String expTextContent;
-
-        public SimpleErrorInfoVerifier(final String expErrorInfo) {
-            expTextContent = expErrorInfo;
-        }
-
-        void verifyContent(final String actualContent) {
-            assertNotNull("Actual \"error-info\" text content is null", actualContent);
-            assertTrue("", actualContent.contains(expTextContent));
-        }
-
-        @Override
-        public void verifyXML(final Node errorInfoNode) {
-            verifyContent(errorInfoNode.getTextContent());
-        }
-
-        @Override
-        public void verifyJson(final JsonElement errorInfoElement) {
-            verifyContent(errorInfoElement.getAsString());
-        }
-    }
-
-    static RestconfService mockRestConf = mock(RestconfService.class);
-
-    static XPath XPATH = XPathFactory.newInstance().newXPath();
-    static XPathExpression ERROR_LIST;
-    static XPathExpression ERROR_TYPE;
-    static XPathExpression ERROR_TAG;
-    static XPathExpression ERROR_MESSAGE;
-    static XPathExpression ERROR_APP_TAG;
-    static XPathExpression ERROR_INFO;
-
-    @BeforeClass
-    public static void init() throws Exception {
-        ControllerContext.getInstance().setGlobalSchema(TestUtils.loadSchemaContext("/modules"));
-
-        final NamespaceContext nsContext = new NamespaceContext() {
-            @Override
-            public Iterator<?> getPrefixes(final String namespaceURI) {
-                return null;
-            }
-
-            @Override
-            public String getPrefix(final String namespaceURI) {
-                return null;
-            }
-
-            @Override
-            public String getNamespaceURI(final String prefix) {
-                return "ietf-restconf".equals(prefix) ? Draft02.RestConfModule.NAMESPACE : null;
-            }
-        };
-
-        XPATH.setNamespaceContext(nsContext);
-        ERROR_LIST = XPATH.compile("ietf-restconf:errors/ietf-restconf:error");
-        ERROR_TYPE = XPATH.compile("ietf-restconf:error-type");
-        ERROR_TAG = XPATH.compile("ietf-restconf:error-tag");
-        ERROR_MESSAGE = XPATH.compile("ietf-restconf:error-message");
-        ERROR_APP_TAG = XPATH.compile("ietf-restconf:error-app-tag");
-        ERROR_INFO = XPATH.compile("ietf-restconf:error-info");
-    }
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        reset(mockRestConf);
-        super.setUp();
-    }
-
-    @Override
-    protected Application configure() {
-        ResourceConfig resourceConfig = new ResourceConfig();
-        resourceConfig = resourceConfig.registerInstances(mockRestConf, new XmlNormalizedNodeBodyReader(),
-                new JsonNormalizedNodeBodyReader(), new NormalizedNodeJsonBodyWriter(), new NormalizedNodeXmlBodyWriter());
-        resourceConfig.registerClasses(RestconfDocumentedExceptionMapper.class);
-        return resourceConfig;
-    }
-
-    void stageMockEx(final RestconfDocumentedException ex) {
-        reset(mockRestConf);
-        when(mockRestConf.readOperationalData(any(String.class), any(UriInfo.class))).thenThrow(ex);
-    }
-
-    void testJsonResponse(final RestconfDocumentedException ex, final Status expStatus, final ErrorType expErrorType,
-            final ErrorTag expErrorTag, final String expErrorMessage, final String expErrorAppTag,
-            final ErrorInfoVerifier errorInfoVerifier) throws Exception {
-
-        stageMockEx(ex);
-
-        final Response resp = target("/operational/foo").request(MediaType.APPLICATION_JSON).get();
-
-        final InputStream stream = verifyResponse(resp, MediaType.APPLICATION_JSON, expStatus);
-
-        verifyJsonResponseBody(stream, expErrorType, expErrorTag, expErrorMessage, expErrorAppTag, errorInfoVerifier);
-    }
-
-    @Test
-    public void testToJsonResponseWithMessageOnly() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error"), Status.INTERNAL_SERVER_ERROR,
-                ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED, "mock error", null, null);
-
-
-        // To test verification code
-        // String json =
-        // "{ errors: {" +
-        // "    error: [{" +
-        // "      error-tag : \"operation-failed\"" +
-        // "      ,error-type : \"application\"" +
-        // "      ,error-message : \"An error occurred\"" +
-        // "      ,error-info : {" +
-        // "        session-id: \"123\"" +
-        // "        ,address: \"1.2.3.4\"" +
-        // "      }" +
-        // "    }]" +
-        // "  }" +
-        // "}";
-        //
-        // verifyJsonResponseBody( new java.io.StringBufferInputStream(json ),
-        // ErrorType.APPLICATION,
-        // ErrorTag.OPERATION_FAILED, "An error occurred", null,
-        // com.google.common.collect.ImmutableMap.of( "session-id", "123",
-        // "address", "1.2.3.4" ) );
-    }
-
-    @Test
-    public void testToJsonResponseWithInUseErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.IN_USE),
-                Status.CONFLICT, ErrorType.PROTOCOL, ErrorTag.IN_USE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithInvalidValueErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.RPC, ErrorTag.INVALID_VALUE),
-                Status.BAD_REQUEST, ErrorType.RPC, ErrorTag.INVALID_VALUE, "mock error", null, null);
-
-    }
-
-    @Test
-    public void testToJsonResponseWithTooBigErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.TRANSPORT, ErrorTag.TOO_BIG),
-                Status.REQUEST_ENTITY_TOO_LARGE, ErrorType.TRANSPORT, ErrorTag.TOO_BIG, "mock error", null, null);
-
-    }
-
-    @Test
-    public void testToJsonResponseWithMissingAttributeErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.MISSING_ATTRIBUTE),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.MISSING_ATTRIBUTE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithBadAttributeErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.BAD_ATTRIBUTE),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.BAD_ATTRIBUTE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithUnknownAttributeErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ATTRIBUTE),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ATTRIBUTE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithBadElementErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.BAD_ELEMENT),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.BAD_ELEMENT, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithUnknownElementErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithUnknownNamespaceErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.UNKNOWN_NAMESPACE),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.UNKNOWN_NAMESPACE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithMalformedMessageErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithAccessDeniedErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.ACCESS_DENIED),
-                Status.FORBIDDEN, ErrorType.PROTOCOL, ErrorTag.ACCESS_DENIED, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithLockDeniedErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.LOCK_DENIED),
-                Status.CONFLICT, ErrorType.PROTOCOL, ErrorTag.LOCK_DENIED, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithResourceDeniedErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.RESOURCE_DENIED),
-                Status.CONFLICT, ErrorType.PROTOCOL, ErrorTag.RESOURCE_DENIED, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithRollbackFailedErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.ROLLBACK_FAILED),
-                Status.INTERNAL_SERVER_ERROR, ErrorType.PROTOCOL, ErrorTag.ROLLBACK_FAILED, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithDataExistsErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.DATA_EXISTS),
-                Status.CONFLICT, ErrorType.PROTOCOL, ErrorTag.DATA_EXISTS, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithDataMissingErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.DATA_MISSING),
-                Status.NOT_FOUND, ErrorType.PROTOCOL, ErrorTag.DATA_MISSING, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithOperationNotSupportedErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL,
-                ErrorTag.OPERATION_NOT_SUPPORTED), Status.NOT_IMPLEMENTED, ErrorType.PROTOCOL,
-                ErrorTag.OPERATION_NOT_SUPPORTED, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithOperationFailedErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.OPERATION_FAILED),
-                Status.INTERNAL_SERVER_ERROR, ErrorType.PROTOCOL, ErrorTag.OPERATION_FAILED, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithPartialOperationErrorTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.PARTIAL_OPERATION),
-                Status.INTERNAL_SERVER_ERROR, ErrorType.PROTOCOL, ErrorTag.PARTIAL_OPERATION, "mock error", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithErrorAppTag() throws Exception {
-
-        testJsonResponse(new RestconfDocumentedException(new RestconfError(ErrorType.APPLICATION,
-                ErrorTag.INVALID_VALUE, "mock error", "mock-app-tag")), Status.BAD_REQUEST, ErrorType.APPLICATION,
-                ErrorTag.INVALID_VALUE, "mock error", "mock-app-tag", null);
-    }
-
-    @Test
-    @Ignore // FIXME : find why it return "error-type" RPC no expected APPLICATION
-    public void testToJsonResponseWithMultipleErrors() throws Exception {
-
-        final List<RestconfError> errorList = Arrays.asList(new RestconfError(ErrorType.APPLICATION, ErrorTag.LOCK_DENIED,
-                "mock error1"), new RestconfError(ErrorType.RPC, ErrorTag.ROLLBACK_FAILED, "mock error2"));
-        stageMockEx(new RestconfDocumentedException("mock", null, errorList));
-
-        final Response resp = target("/operational/foo").request(MediaType.APPLICATION_JSON).get();
-
-        final InputStream stream = verifyResponse(resp, MediaType.APPLICATION_JSON, Status.CONFLICT);
-
-        final JsonArray arrayElement = parseJsonErrorArrayElement(stream);
-
-        assertEquals("\"error\" Json array element length", 2, arrayElement.size());
-
-        verifyJsonErrorNode(arrayElement.get(0), ErrorType.APPLICATION, ErrorTag.LOCK_DENIED, "mock error1", null, null);
-
-        verifyJsonErrorNode(arrayElement.get(1), ErrorType.RPC, ErrorTag.ROLLBACK_FAILED, "mock error2", null, null);
-    }
-
-    @Test
-    public void testToJsonResponseWithErrorInfo() throws Exception {
-
-        final String errorInfo = "<address>1.2.3.4</address> <session-id>123</session-id>";
-        testJsonResponse(new RestconfDocumentedException(new RestconfError(ErrorType.APPLICATION,
-                ErrorTag.INVALID_VALUE, "mock error", "mock-app-tag", errorInfo)), Status.BAD_REQUEST,
-                ErrorType.APPLICATION, ErrorTag.INVALID_VALUE, "mock error", "mock-app-tag",
-                new SimpleErrorInfoVerifier(errorInfo));
-    }
-
-    @Test
-    public void testToJsonResponseWithExceptionCause() throws Exception {
-
-        final Exception cause = new Exception("mock exception cause");
-        testJsonResponse(new RestconfDocumentedException("mock error", cause), Status.INTERNAL_SERVER_ERROR,
-                ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED, "mock error", null,
-                new SimpleErrorInfoVerifier(cause.getMessage()));
-    }
-
-    void testXMLResponse(final RestconfDocumentedException ex, final Status expStatus, final ErrorType expErrorType,
-            final ErrorTag expErrorTag, final String expErrorMessage, final String expErrorAppTag,
-            final ErrorInfoVerifier errorInfoVerifier) throws Exception {
-        stageMockEx(ex);
-
-        final Response resp = target("/operational/foo").request(MediaType.APPLICATION_XML).get();
-
-        final InputStream stream = verifyResponse(resp, MediaType.APPLICATION_XML, expStatus);
-
-        verifyXMLResponseBody(stream, expErrorType, expErrorTag, expErrorMessage, expErrorAppTag, errorInfoVerifier);
-    }
-
-    @Test
-    public void testToXMLResponseWithMessageOnly() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error"), Status.INTERNAL_SERVER_ERROR,
-                ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED, "mock error", null, null);
-
-     // To test verification code
-        // String xml =
-        // "<errors xmlns=\"urn:ietf:params:xml:ns:yang:ietf-restconf\">"+
-        // "  <error>" +
-        // "    <error-type>application</error-type>"+
-        // "    <error-tag>operation-failed</error-tag>"+
-        // "    <error-message>An error occurred</error-message>"+
-        // "    <error-info>" +
-        // "      <session-id>123</session-id>" +
-        // "      <address>1.2.3.4</address>" +
-        // "    </error-info>" +
-        // "  </error>" +
-        // "</errors>";
-        //
-        // verifyXMLResponseBody( new java.io.StringBufferInputStream(xml),
-        // ErrorType.APPLICATION,
-        // ErrorTag.OPERATION_FAILED, "An error occurred", null,
-        // com.google.common.collect.ImmutableMap.of( "session-id", "123",
-        // "address", "1.2.3.4" ) );
-    }
-
-    @Test
-    public void testToXMLResponseWithInUseErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.IN_USE),
-                Status.CONFLICT, ErrorType.PROTOCOL, ErrorTag.IN_USE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithInvalidValueErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.RPC, ErrorTag.INVALID_VALUE),
-                Status.BAD_REQUEST, ErrorType.RPC, ErrorTag.INVALID_VALUE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithTooBigErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.TRANSPORT, ErrorTag.TOO_BIG),
-                Status.REQUEST_ENTITY_TOO_LARGE, ErrorType.TRANSPORT, ErrorTag.TOO_BIG, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithMissingAttributeErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.MISSING_ATTRIBUTE),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.MISSING_ATTRIBUTE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithBadAttributeErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.BAD_ATTRIBUTE),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.BAD_ATTRIBUTE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithUnknownAttributeErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ATTRIBUTE),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ATTRIBUTE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithBadElementErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.BAD_ELEMENT),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.BAD_ELEMENT, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithUnknownElementErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithUnknownNamespaceErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.UNKNOWN_NAMESPACE),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.UNKNOWN_NAMESPACE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithMalformedMessageErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE),
-                Status.BAD_REQUEST, ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithAccessDeniedErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.ACCESS_DENIED),
-                Status.FORBIDDEN, ErrorType.PROTOCOL, ErrorTag.ACCESS_DENIED, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithLockDeniedErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.LOCK_DENIED),
-                Status.CONFLICT, ErrorType.PROTOCOL, ErrorTag.LOCK_DENIED, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithResourceDeniedErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.RESOURCE_DENIED),
-                Status.CONFLICT, ErrorType.PROTOCOL, ErrorTag.RESOURCE_DENIED, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithRollbackFailedErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.ROLLBACK_FAILED),
-                Status.INTERNAL_SERVER_ERROR, ErrorType.PROTOCOL, ErrorTag.ROLLBACK_FAILED, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithDataExistsErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.DATA_EXISTS),
-                Status.CONFLICT, ErrorType.PROTOCOL, ErrorTag.DATA_EXISTS, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithDataMissingErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.DATA_MISSING),
-                Status.NOT_FOUND, ErrorType.PROTOCOL, ErrorTag.DATA_MISSING, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithOperationNotSupportedErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL,
-                ErrorTag.OPERATION_NOT_SUPPORTED), Status.NOT_IMPLEMENTED, ErrorType.PROTOCOL,
-                ErrorTag.OPERATION_NOT_SUPPORTED, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithOperationFailedErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.OPERATION_FAILED),
-                Status.INTERNAL_SERVER_ERROR, ErrorType.PROTOCOL, ErrorTag.OPERATION_FAILED, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithPartialOperationErrorTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException("mock error", ErrorType.PROTOCOL, ErrorTag.PARTIAL_OPERATION),
-                Status.INTERNAL_SERVER_ERROR, ErrorType.PROTOCOL, ErrorTag.PARTIAL_OPERATION, "mock error", null, null);
-    }
-
-    @Test
-    public void testToXMLResponseWithErrorAppTag() throws Exception {
-
-        testXMLResponse(new RestconfDocumentedException(new RestconfError(ErrorType.APPLICATION,
-                ErrorTag.INVALID_VALUE, "mock error", "mock-app-tag")), Status.BAD_REQUEST, ErrorType.APPLICATION,
-                ErrorTag.INVALID_VALUE, "mock error", "mock-app-tag", null);
-    }
-
-    @Test
-    public void testToXMLResponseWithErrorInfo() throws Exception {
-
-        final String errorInfo = "<address>1.2.3.4</address> <session-id>123</session-id>";
-        testXMLResponse(new RestconfDocumentedException(new RestconfError(ErrorType.APPLICATION,
-                ErrorTag.INVALID_VALUE, "mock error", "mock-app-tag", errorInfo)), Status.BAD_REQUEST,
-                ErrorType.APPLICATION, ErrorTag.INVALID_VALUE, "mock error", "mock-app-tag",
-                new SimpleErrorInfoVerifier(errorInfo));
-    }
-
-    @Test
-    public void testToXMLResponseWithExceptionCause() throws Exception {
-
-        final Exception cause = new Exception("mock exception cause");
-        testXMLResponse(new RestconfDocumentedException("mock error", cause), Status.INTERNAL_SERVER_ERROR,
-                ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED, "mock error", null,
-                new SimpleErrorInfoVerifier(cause.getMessage()));
-    }
-
-    @Test
-    @Ignore // FIXME : find why it return error-type as RPC no APPLICATION
-    public void testToXMLResponseWithMultipleErrors() throws Exception {
-
-        final List<RestconfError> errorList = Arrays.asList(new RestconfError(ErrorType.APPLICATION, ErrorTag.LOCK_DENIED,
-                "mock error1"), new RestconfError(ErrorType.RPC, ErrorTag.ROLLBACK_FAILED, "mock error2"));
-        stageMockEx(new RestconfDocumentedException("mock", null, errorList));
-
-        final Response resp = target("/operational/foo").request(MediaType.APPLICATION_XML).get();
-
-        final InputStream stream = verifyResponse(resp, MediaType.APPLICATION_XML, Status.CONFLICT);
-
-        final Document doc = parseXMLDocument(stream);
-
-        final NodeList children = getXMLErrorList(doc, 2);
-
-        verifyXMLErrorNode(children.item(0), ErrorType.APPLICATION, ErrorTag.LOCK_DENIED, "mock error1", null, null);
-
-        verifyXMLErrorNode(children.item(1), ErrorType.RPC, ErrorTag.ROLLBACK_FAILED, "mock error2", null, null);
-    }
-
-    @Test
-    public void testToResponseWithAcceptHeader() throws Exception {
-
-        stageMockEx(new RestconfDocumentedException("mock error"));
-
-        final Response resp = target("/operational/foo").request().header("Accept", MediaType.APPLICATION_JSON).get();
-
-        final InputStream stream = verifyResponse(resp, MediaType.APPLICATION_JSON, Status.INTERNAL_SERVER_ERROR);
-
-        verifyJsonResponseBody(stream, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED, "mock error", null, null);
-    }
-
-    @Test
-    @Ignore
-    public void testToResponseWithStatusOnly() throws Exception {
-
-        // The StructuredDataToJsonProvider should throw a
-        // RestconfDocumentedException with no data
-
-        when(mockRestConf.readOperationalData(any(String.class), any(UriInfo.class))).thenReturn(
-                new NormalizedNodeContext(null, null));
-
-        final Response resp = target("/operational/foo").request(MediaType.APPLICATION_JSON).get();
-
-        verifyResponse(resp, MediaType.TEXT_PLAIN, Status.NOT_FOUND);
-    }
-
-    InputStream verifyResponse(final Response resp, final String expMediaType, final Status expStatus) {
-        assertEquals("getMediaType", MediaType.valueOf(expMediaType), resp.getMediaType());
-        assertEquals("getStatus", expStatus.getStatusCode(), resp.getStatus());
-
-        final Object entity = resp.getEntity();
-        assertEquals("Response entity", true, entity instanceof InputStream);
-        final InputStream stream = (InputStream) entity;
-        return stream;
-    }
-
-    void verifyJsonResponseBody(final InputStream stream, final ErrorType expErrorType, final ErrorTag expErrorTag,
-            final String expErrorMessage, final String expErrorAppTag, final ErrorInfoVerifier errorInfoVerifier)
-            throws Exception {
-
-        final JsonArray arrayElement = parseJsonErrorArrayElement(stream);
-
-        assertEquals("\"error\" Json array element length", 1, arrayElement.size());
-
-        verifyJsonErrorNode(arrayElement.get(0), expErrorType, expErrorTag, expErrorMessage, expErrorAppTag,
-                errorInfoVerifier);
-    }
-
-    private JsonArray parseJsonErrorArrayElement(final InputStream stream) throws IOException {
-        final ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        ByteStreams.copy(stream, bos);
-
-        System.out.println("JSON: " + bos.toString());
-
-        final JsonParser parser = new JsonParser();
-        JsonElement rootElement;
-
-        try {
-            rootElement = parser.parse(new InputStreamReader(new ByteArrayInputStream(bos.toByteArray())));
-        } catch (final Exception e) {
-            throw new IllegalArgumentException("Invalid JSON response:\n" + bos.toString(), e);
-        }
-
-        assertTrue("Root element of Json is not an Object", rootElement.isJsonObject());
-
-        final Set<Entry<String, JsonElement>> errorsEntrySet = rootElement.getAsJsonObject().entrySet();
-        assertEquals("Json Object element set count", 1, errorsEntrySet.size());
-
-        final Entry<String, JsonElement> errorsEntry = errorsEntrySet.iterator().next();
-        final JsonElement errorsElement = errorsEntry.getValue();
-        assertEquals("First Json element name", "errors", errorsEntry.getKey());
-        assertTrue("\"errors\" Json element is not an Object", errorsElement.isJsonObject());
-
-        final Set<Entry<String, JsonElement>> errorListEntrySet = errorsElement.getAsJsonObject().entrySet();
-        assertEquals("Root \"errors\" element child count", 1, errorListEntrySet.size());
-
-        final JsonElement errorListElement = errorListEntrySet.iterator().next().getValue();
-        assertEquals("\"errors\" child Json element name", "error", errorListEntrySet.iterator().next().getKey());
-        assertTrue("\"error\" Json element is not an Array", errorListElement.isJsonArray());
-
-        // As a final check, make sure there aren't multiple "error" array
-        // elements. Unfortunately,
-        // the call above to getAsJsonObject().entrySet() will out duplicate
-        // "error" elements. So
-        // we'll use regex on the json string to verify this.
-
-        final Matcher matcher = Pattern.compile("\"error\"[ ]*:[ ]*\\[", Pattern.DOTALL).matcher(bos.toString());
-        assertTrue("Expected 1 \"error\" element", matcher.find());
-        assertFalse("Found multiple \"error\" elements", matcher.find());
-
-        return errorListElement.getAsJsonArray();
-    }
-
-    void verifyJsonErrorNode(final JsonElement errorEntryElement, final ErrorType expErrorType,
-            final ErrorTag expErrorTag, final String expErrorMessage, final String expErrorAppTag,
-            final ErrorInfoVerifier errorInfoVerifier) {
-
-        JsonElement errorInfoElement = null;
-        final Map<String, String> leafMap = Maps.newHashMap();
-        for (final Entry<String, JsonElement> entry : errorEntryElement.getAsJsonObject().entrySet()) {
-            final String leafName = entry.getKey();
-            final JsonElement leafElement = entry.getValue();
-
-            if ("error-info".equals(leafName)) {
-                assertNotNull("Found unexpected \"error-info\" element", errorInfoVerifier);
-                errorInfoElement = leafElement;
-            } else {
-                assertTrue("\"error\" leaf Json element " + leafName + " is not a Primitive",
-                        leafElement.isJsonPrimitive());
-
-                leafMap.put(leafName, leafElement.getAsString());
-            }
-        }
-
-        assertEquals("error-type", expErrorType.getErrorTypeTag(), leafMap.remove("error-type"));
-        assertEquals("error-tag", expErrorTag.getTagValue(), leafMap.remove("error-tag"));
-
-        verifyOptionalJsonLeaf(leafMap.remove("error-message"), expErrorMessage, "error-message");
-        verifyOptionalJsonLeaf(leafMap.remove("error-app-tag"), expErrorAppTag, "error-app-tag");
-
-        if (!leafMap.isEmpty()) {
-            fail("Found unexpected Json leaf elements for \"error\" element: " + leafMap);
-        }
-
-        if (errorInfoVerifier != null) {
-            assertNotNull("Missing \"error-info\" element", errorInfoElement);
-            errorInfoVerifier.verifyJson(errorInfoElement);
-        }
-    }
-
-    void verifyOptionalJsonLeaf(final String actualValue, final String expValue, final String tagName) {
-        if (expValue != null) {
-            assertEquals(tagName, expValue, actualValue);
-        } else {
-            assertNull("Found unexpected \"error\" leaf entry for: " + tagName, actualValue);
-        }
-    }
-
-    void verifyXMLResponseBody(final InputStream stream, final ErrorType expErrorType, final ErrorTag expErrorTag,
-            final String expErrorMessage, final String expErrorAppTag, final ErrorInfoVerifier errorInfoVerifier)
-            throws Exception {
-
-        final Document doc = parseXMLDocument(stream);
-
-        final NodeList children = getXMLErrorList(doc, 1);
-
-        verifyXMLErrorNode(children.item(0), expErrorType, expErrorTag, expErrorMessage, expErrorAppTag,
-                errorInfoVerifier);
-    }
-
-    private Document parseXMLDocument(final InputStream stream) throws IOException {
-        final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        factory.setNamespaceAware(true);
-        factory.setCoalescing(true);
-        factory.setIgnoringElementContentWhitespace(true);
-        factory.setIgnoringComments(true);
-
-        final ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        ByteStreams.copy(stream, bos);
-
-        System.out.println("XML: " + bos.toString());
-
-        Document doc = null;
-        try {
-            doc = factory.newDocumentBuilder().parse(new ByteArrayInputStream(bos.toByteArray()));
-        } catch (final Exception e) {
-            throw new IllegalArgumentException("Invalid XML response:\n" + bos.toString(), e);
-        }
-        return doc;
-    }
-
-    void verifyXMLErrorNode(final Node errorNode, final ErrorType expErrorType, final ErrorTag expErrorTag,
-            final String expErrorMessage, final String expErrorAppTag, final ErrorInfoVerifier errorInfoVerifier)
-            throws Exception {
-
-        final String errorType = (String) ERROR_TYPE.evaluate(errorNode, XPathConstants.STRING);
-        assertEquals("error-type", expErrorType.getErrorTypeTag(), errorType);
-
-        final String errorTag = (String) ERROR_TAG.evaluate(errorNode, XPathConstants.STRING);
-        assertEquals("error-tag", expErrorTag.getTagValue(), errorTag);
-
-        verifyOptionalXMLLeaf(errorNode, ERROR_MESSAGE, expErrorMessage, "error-message");
-        verifyOptionalXMLLeaf(errorNode, ERROR_APP_TAG, expErrorAppTag, "error-app-tag");
-
-        final Node errorInfoNode = (Node) ERROR_INFO.evaluate(errorNode, XPathConstants.NODE);
-        if (errorInfoVerifier != null) {
-            assertNotNull("Missing \"error-info\" node", errorInfoNode);
-
-            errorInfoVerifier.verifyXML(errorInfoNode);
-        } else {
-            assertNull("Found unexpected \"error-info\" node", errorInfoNode);
-        }
-    }
-
-    void verifyOptionalXMLLeaf(final Node fromNode, final XPathExpression xpath, final String expValue,
-            final String tagName) throws Exception {
-        if (expValue != null) {
-            final String actual = (String) xpath.evaluate(fromNode, XPathConstants.STRING);
-            assertEquals(tagName, expValue, actual);
-        } else {
-            assertNull("Found unexpected \"error\" leaf entry for: " + tagName,
-                    xpath.evaluate(fromNode, XPathConstants.NODE));
-        }
-    }
-
-    NodeList getXMLErrorList(final Node fromNode, final int count) throws Exception {
-        final NodeList errorList = (NodeList) ERROR_LIST.evaluate(fromNode, XPathConstants.NODESET);
-        assertNotNull("Root errors node is empty", errorList);
-        assertEquals("Root errors node child count", count, errorList.getLength());
-        return errorList;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfErrorTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfErrorTest.java
deleted file mode 100644 (file)
index 010572d..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright (c) 2014 Brocade Communications 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.sal.restconf.impl.test;
-
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.junit.Test;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorTag;
-import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType;
-import org.opendaylight.yangtools.yang.common.RpcError;
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
-
-/**
- * Unit tests for RestconfError.
- *
- * @author Devin Avery
- * @author Thomas Pantelis
- *
- */
-public class RestconfErrorTest {
-
-    static class Contains extends BaseMatcher<String> {
-
-        private final String text;
-
-        public Contains(String text) {
-            this.text = text;
-        }
-
-        @Override
-        public void describeTo(Description desc) {
-            desc.appendText("contains ").appendValue(text);
-        }
-
-        @Override
-        public boolean matches(Object arg) {
-            return arg != null && arg.toString().contains(text);
-        }
-    }
-
-    @Test
-    public void testErrorTagValueOf() {
-        assertEquals(ErrorTag.IN_USE, ErrorTag.valueOfCaseInsensitive(ErrorTag.IN_USE.getTagValue()));
-    }
-
-    @Test
-    public void testErrorTagValueOfIsLowercase() {
-        assertEquals("in-use", ErrorTag.IN_USE.getTagValue());
-    }
-
-    @Test
-    public void testErrorTypeGetErrorTypeTagIsLowerCase() {
-        assertEquals(ErrorType.APPLICATION.name().toLowerCase(), ErrorType.APPLICATION.getErrorTypeTag());
-    }
-
-    @Test
-    public void testErrorTypeValueOf() {
-        assertEquals(ErrorType.APPLICATION, ErrorType.valueOfCaseInsensitive(ErrorType.APPLICATION.getErrorTypeTag()));
-    }
-
-    @Test
-    public void testErrorTagStatusCodes() {
-        Map<String, Integer> lookUpMap = new HashMap<String, Integer>();
-
-        lookUpMap.put("in-use", 409);
-        lookUpMap.put("invalid-value", 400);
-        lookUpMap.put("too-big", 413);
-        lookUpMap.put("missing-attribute", 400);
-        lookUpMap.put("bad-attribute", 400);
-        lookUpMap.put("unknown-attribute", 400);
-        lookUpMap.put("bad-element", 400);
-        lookUpMap.put("unknown-element", 400);
-        lookUpMap.put("unknown-namespace", 400);
-        lookUpMap.put("access-denied", 403);
-        lookUpMap.put("lock-denied", 409);
-        lookUpMap.put("resource-denied", 409);
-        lookUpMap.put("rollback-failed", 500);
-        lookUpMap.put("data-exists", 409);
-        lookUpMap.put("data-missing", 404);
-        lookUpMap.put("operation-not-supported", 501);
-        lookUpMap.put("operation-failed", 500);
-        lookUpMap.put("partial-operation", 500);
-        lookUpMap.put("malformed-message", 400);
-
-        for (ErrorTag tag : ErrorTag.values()) {
-            Integer expectedStatusCode = lookUpMap.get(tag.getTagValue());
-            assertNotNull("Failed to find " + tag.getTagValue(), expectedStatusCode);
-            assertEquals("Status Code does not match", expectedStatusCode, Integer.valueOf(tag.getStatusCode()));
-        }
-    }
-
-    @Test
-    public void testRestConfDocumentedException_NoCause() {
-        String expectedMessage = "Message";
-        ErrorType expectedErrorType = ErrorType.RPC;
-        ErrorTag expectedErrorTag = ErrorTag.IN_USE;
-        RestconfError e = new RestconfError(expectedErrorType, expectedErrorTag, expectedMessage);
-
-        validateRestConfError(expectedMessage, expectedErrorType, expectedErrorTag, null, (String) null, e);
-    }
-
-    @Test
-    public void testRestConfDocumentedException_WithAppTag() {
-        String expectedMessage = "Message";
-        ErrorType expectedErrorType = ErrorType.RPC;
-        ErrorTag expectedErrorTag = ErrorTag.IN_USE;
-        String expectedErrorAppTag = "application.tag";
-
-        RestconfError e = new RestconfError(expectedErrorType, expectedErrorTag, expectedMessage, expectedErrorAppTag);
-
-        validateRestConfError(expectedMessage, expectedErrorType, expectedErrorTag, expectedErrorAppTag, (String) null,
-                e);
-    }
-
-    @Test
-    public void testRestConfDocumentedException_WithAppTagErrorInfo() {
-        String expectedMessage = "Message";
-        ErrorType expectedErrorType = ErrorType.RPC;
-        ErrorTag expectedErrorTag = ErrorTag.IN_USE;
-        String expectedErrorAppTag = "application.tag";
-        String errorInfo = "<extra><sessionid>session.id</sessionid></extra>";
-
-        RestconfError e = new RestconfError(expectedErrorType, expectedErrorTag, expectedMessage, expectedErrorAppTag,
-                errorInfo);
-
-        validateRestConfError(expectedMessage, expectedErrorType, expectedErrorTag, expectedErrorAppTag, errorInfo, e);
-    }
-
-    @Test
-    public void testRestConfErrorWithRpcError() {
-
-        // All fields set
-        RpcError rpcError = RpcResultBuilder.newError(
-                RpcError.ErrorType.PROTOCOL, ErrorTag.BAD_ATTRIBUTE.getTagValue(), "mock error-message",
-                "mock app-tag", "mock error-info", new Exception( "mock cause" ) );
-
-        validateRestConfError("mock error-message", ErrorType.PROTOCOL, ErrorTag.BAD_ATTRIBUTE, "mock app-tag",
-                "mock error-info", new RestconfError(rpcError));
-
-        // All fields set except 'info' - expect error-info set to 'cause'
-        rpcError = RpcResultBuilder.newError(
-                RpcError.ErrorType.PROTOCOL, ErrorTag.BAD_ATTRIBUTE.getTagValue(), "mock error-message",
-                "mock app-tag", null, new Exception( "mock cause" ) );
-
-        validateRestConfError("mock error-message", ErrorType.PROTOCOL, ErrorTag.BAD_ATTRIBUTE, "mock app-tag",
-                new Contains("mock cause"), new RestconfError(rpcError));
-
-        // Some fields set - expect error-info set to ErrorSeverity
-        rpcError = RpcResultBuilder.newError(
-                RpcError.ErrorType.RPC, ErrorTag.ACCESS_DENIED.getTagValue(), null, null, null, null );
-
-        validateRestConfError(null, ErrorType.RPC, ErrorTag.ACCESS_DENIED, null, "<severity>error</severity>",
-                new RestconfError(rpcError));
-
-        // 'tag' field not mapped to ErrorTag - expect error-tag set to
-        // OPERATION_FAILED
-        rpcError = RpcResultBuilder.newWarning(
-                RpcError.ErrorType.TRANSPORT, "not mapped", null, null, null, null );
-
-        validateRestConfError(null, ErrorType.TRANSPORT, ErrorTag.OPERATION_FAILED, null,
-                "<severity>warning</severity>", new RestconfError(rpcError));
-
-        // No fields set - edge case
-        rpcError = RpcResultBuilder.newError( null, null, null, null, null, null );
-
-        validateRestConfError( null, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED,
-                               null, "<severity>error</severity>", new RestconfError( rpcError ) );
-    }
-
-    private void validateRestConfError(String expectedMessage, ErrorType expectedErrorType, ErrorTag expectedErrorTag,
-            String expectedErrorAppTag, String errorInfo, RestconfError e) {
-
-        validateRestConfError(expectedMessage, expectedErrorType, expectedErrorTag, expectedErrorAppTag,
-                equalTo(errorInfo), e);
-    }
-
-    private void validateRestConfError(String expectedMessage, ErrorType expectedErrorType, ErrorTag expectedErrorTag,
-            String expectedErrorAppTag, Matcher<String> errorInfoMatcher, RestconfError e) {
-
-        assertEquals("getErrorMessage", expectedMessage, e.getErrorMessage());
-        assertEquals("getErrorType", expectedErrorType, e.getErrorType());
-        assertEquals("getErrorTag", expectedErrorTag, e.getErrorTag());
-        assertEquals("getErrorAppTag", expectedErrorAppTag, e.getErrorAppTag());
-        assertThat("getErrorInfo", e.getErrorInfo(), errorInfoMatcher);
-        e.toString(); // really just checking for NPE etc. Don't care about
-                      // contents.
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfImplTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestconfImplTest.java
deleted file mode 100644 (file)
index fa878b6..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import java.io.FileNotFoundException;
-import java.text.ParseException;
-import java.util.Set;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-/**
- * @See {@link InvokeRpcMethodTest}
- *
- */
-public class RestconfImplTest {
-
-    private RestconfImpl restconfImpl = null;
-    private static ControllerContext controllerContext = null;
-
-    @BeforeClass
-    public static void init() throws FileNotFoundException {
-        final Set<Module> allModules = TestUtils.loadModulesFrom("/full-versions/yangs");
-        assertNotNull(allModules);
-        final SchemaContext schemaContext = TestUtils.loadSchemaContext(allModules);
-        controllerContext = spy(ControllerContext.getInstance());
-        controllerContext.setSchemas(schemaContext);
-
-    }
-
-    @Before
-    public void initMethod() {
-        restconfImpl = RestconfImpl.getInstance();
-        restconfImpl.setControllerContext(controllerContext);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testExample() throws FileNotFoundException, ParseException {
-        @SuppressWarnings("rawtypes")
-        final
-        NormalizedNode normalizedNodeData = TestUtils.prepareNormalizedNodeWithIetfInterfacesInterfacesData();
-        final BrokerFacade brokerFacade = mock(BrokerFacade.class);
-        when(brokerFacade.readOperationalData(any(YangInstanceIdentifier.class))).thenReturn(normalizedNodeData);
-        assertEquals(normalizedNodeData,
-                brokerFacade.readOperationalData(null));
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/TestUtils.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/TestUtils.java
deleted file mode 100644 (file)
index 75cce14..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertNotNull;
-
-import com.google.common.base.Preconditions;
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStreamWriter;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.sql.Date;
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser;
-import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-public final class TestUtils {
-
-    private static final Logger LOG = LoggerFactory.getLogger(TestUtils.class);
-
-    private final static YangContextParser PARSER = new YangParserImpl();
-
-    private static Set<Module> loadModules(final String resourceDirectory) throws FileNotFoundException {
-        final File testDir = new File(resourceDirectory);
-        final String[] fileList = testDir.list();
-        final List<File> testFiles = new ArrayList<File>();
-        if (fileList == null) {
-            throw new FileNotFoundException(resourceDirectory);
-        }
-        for (int i = 0; i < fileList.length; i++) {
-            final String fileName = fileList[i];
-            if (new File(testDir, fileName).isDirectory() == false) {
-                testFiles.add(new File(testDir, fileName));
-            }
-        }
-        return PARSER.parseYangModels(testFiles);
-    }
-
-    public static Set<Module> loadModulesFrom(final String yangPath) {
-        try {
-            return TestUtils.loadModules(TestUtils.class.getResource(yangPath).getPath());
-        } catch (final FileNotFoundException e) {
-            LOG.error("Yang files at path: " + yangPath + " weren't loaded.");
-        }
-
-        return null;
-    }
-
-    public static SchemaContext loadSchemaContext(final Set<Module> modules) {
-        return PARSER.resolveSchemaContext(modules);
-    }
-
-    public static SchemaContext loadSchemaContext(final String resourceDirectory) throws FileNotFoundException {
-        return PARSER.resolveSchemaContext(loadModulesFrom(resourceDirectory));
-    }
-
-    public static Module findModule(final Set<Module> modules, final String moduleName) {
-        for (final Module module : modules) {
-            if (module.getName().equals(moduleName)) {
-                return module;
-            }
-        }
-        return null;
-    }
-
-    public static Document loadDocumentFrom(final InputStream inputStream) {
-        try {
-            final DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
-            final DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
-            return docBuilder.parse(inputStream);
-        } catch (SAXException | IOException | ParserConfigurationException e) {
-            LOG.error("Error during loading Document from XML", e);
-            return null;
-        }
-    }
-
-    public static String getDocumentInPrintableForm(final Document doc) {
-        Preconditions.checkNotNull(doc);
-        try {
-            final ByteArrayOutputStream out = new ByteArrayOutputStream();
-            final TransformerFactory tf = TransformerFactory.newInstance();
-            final Transformer transformer = tf.newTransformer();
-            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
-            transformer.setOutputProperty(OutputKeys.METHOD, "xml");
-            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-            transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
-            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
-
-            transformer.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(out, "UTF-8")));
-            final byte[] charData = out.toByteArray();
-            return new String(charData, "UTF-8");
-        } catch (IOException | TransformerException e) {
-            final String msg = "Error during transformation of Document into String";
-            LOG.error(msg, e);
-            return msg;
-        }
-
-    }
-
-    /**
-     * Searches module with name {@code searchedModuleName} in {@code modules}. If module name isn't specified and
-     * module set has only one element then this element is returned.
-     *
-     */
-    public static Module resolveModule(final String searchedModuleName, final Set<Module> modules) {
-        assertNotNull("Modules can't be null.", modules);
-        if (searchedModuleName != null) {
-            for (final Module m : modules) {
-                if (m.getName().equals(searchedModuleName)) {
-                    return m;
-                }
-            }
-        } else if (modules.size() == 1) {
-            return modules.iterator().next();
-        }
-        return null;
-    }
-
-    public static DataSchemaNode resolveDataSchemaNode(final String searchedDataSchemaName, final Module module) {
-        assertNotNull("Module can't be null", module);
-
-        if (searchedDataSchemaName != null) {
-            for (final DataSchemaNode dsn : module.getChildNodes()) {
-                if (dsn.getQName().getLocalName().equals(searchedDataSchemaName)) {
-                    return dsn;
-                }
-            }
-        } else if (module.getChildNodes().size() == 1) {
-            return module.getChildNodes().iterator().next();
-        }
-        return null;
-    }
-
-    public static QName buildQName(final String name, final String uri, final String date, final String prefix) {
-        try {
-            final URI u = new URI(uri);
-            Date dt = null;
-            if (date != null) {
-                dt = Date.valueOf(date);
-            }
-            return QName.create(u, dt, name);
-        } catch (final URISyntaxException e) {
-            return null;
-        }
-    }
-
-    public static QName buildQName(final String name, final String uri, final String date) {
-        return buildQName(name, uri, date, null);
-    }
-
-    public static QName buildQName(final String name) {
-        return buildQName(name, "", null);
-    }
-
-    public static String loadTextFile(final String filePath) throws IOException {
-        final FileReader fileReader = new FileReader(filePath);
-        final BufferedReader bufReader = new BufferedReader(fileReader);
-
-        String line = null;
-        final StringBuilder result = new StringBuilder();
-        while ((line = bufReader.readLine()) != null) {
-            result.append(line);
-        }
-        bufReader.close();
-        return result.toString();
-    }
-
-    private static Pattern patternForStringsSeparatedByWhiteChars(final String... substrings) {
-        final StringBuilder pattern = new StringBuilder();
-        pattern.append(".*");
-        for (final String substring : substrings) {
-            pattern.append(substring);
-            pattern.append("\\s*");
-        }
-        pattern.append(".*");
-        return Pattern.compile(pattern.toString(), Pattern.DOTALL);
-    }
-
-    public static boolean containsStringData(final String jsonOutput, final String... substrings) {
-        final Pattern pattern = patternForStringsSeparatedByWhiteChars(substrings);
-        final Matcher matcher = pattern.matcher(jsonOutput);
-        return matcher.matches();
-    }
-
-    public static YangInstanceIdentifier.NodeIdentifier getNodeIdentifier(final String localName, final String namespace,
-            final String revision) throws ParseException {
-        return new YangInstanceIdentifier.NodeIdentifier(QName.create(namespace, revision, localName));
-    }
-
-    public static YangInstanceIdentifier.NodeIdentifierWithPredicates getNodeIdentifierPredicate(final String localName,
-            final String namespace, final String revision, final Map<String, Object> keys) throws ParseException {
-        final Map<QName, Object> predicate = new HashMap<>();
-        for (final String key : keys.keySet()) {
-            predicate.put(QName.create(namespace, revision, key), keys.get(key));
-        }
-
-        return new YangInstanceIdentifier.NodeIdentifierWithPredicates(
-
-        QName.create(namespace, revision, localName), predicate);
-    }
-
-    public static YangInstanceIdentifier.NodeIdentifierWithPredicates getNodeIdentifierPredicate(final String localName,
-            final String namespace, final String revision, final String... keysAndValues) throws ParseException {
-        if (keysAndValues.length % 2 != 0) {
-            new IllegalArgumentException("number of keys argument have to be divisible by 2 (map)");
-        }
-        final Map<QName, Object> predicate = new HashMap<>();
-
-        int i = 0;
-        while (i < keysAndValues.length) {
-            predicate.put(QName.create(namespace, revision, keysAndValues[i++]), keysAndValues[i++]);
-        }
-
-        return new YangInstanceIdentifier.NodeIdentifierWithPredicates(QName.create(namespace, revision, localName),
-                predicate);
-    }
-
-    static NormalizedNode<?,?> prepareNormalizedNodeWithIetfInterfacesInterfacesData() throws ParseException {
-        final String ietfInterfacesDate = "2013-07-04";
-        final String namespace = "urn:ietf:params:xml:ns:yang:ietf-interfaces";
-        final DataContainerNodeAttrBuilder<YangInstanceIdentifier.NodeIdentifierWithPredicates, MapEntryNode> mapEntryNode = ImmutableMapEntryNodeBuilder.create();
-
-        final Map<String, Object> predicates = new HashMap<>();
-        predicates.put("name", "eth0");
-
-        mapEntryNode.withNodeIdentifier(getNodeIdentifierPredicate("interface", namespace, ietfInterfacesDate,
-                predicates));
-        mapEntryNode
-                .withChild(new ImmutableLeafNodeBuilder<String>()
-                        .withNodeIdentifier(getNodeIdentifier("name", namespace, ietfInterfacesDate)).withValue("eth0")
-                        .build());
-        mapEntryNode.withChild(new ImmutableLeafNodeBuilder<String>()
-                .withNodeIdentifier(getNodeIdentifier("type", namespace, ietfInterfacesDate))
-                .withValue("ethernetCsmacd").build());
-        mapEntryNode.withChild(new ImmutableLeafNodeBuilder<Boolean>()
-                .withNodeIdentifier(getNodeIdentifier("enabled", namespace, ietfInterfacesDate))
-                .withValue(Boolean.FALSE).build());
-        mapEntryNode.withChild(new ImmutableLeafNodeBuilder<String>()
-                .withNodeIdentifier(getNodeIdentifier("description", namespace, ietfInterfacesDate))
-                .withValue("some interface").build());
-
-        return mapEntryNode.build();
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/URIParametersParsing.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/URIParametersParsing.java
deleted file mode 100644 (file)
index 0514e03..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-import static org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil.getRevisionFormat;
-
-import java.io.FileNotFoundException;
-import java.text.ParseException;
-import java.util.Date;
-import java.util.Set;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.UriBuilder;
-import javax.ws.rs.core.UriInfo;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.controller.sal.streams.listeners.ListenerAdapter;
-import org.opendaylight.controller.sal.streams.listeners.Notificator;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.InstanceIdentifierBuilder;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.util.SchemaNodeUtils;
-
-public class URIParametersParsing {
-
-    private RestconfImpl restconf;
-    private BrokerFacade mockedBrokerFacade;
-    private ControllerContext controllerContext;
-
-    @Before
-    public void init() throws FileNotFoundException {
-        restconf = RestconfImpl.getInstance();
-        mockedBrokerFacade = mock(BrokerFacade.class);
-        controllerContext = ControllerContext.getInstance();
-        controllerContext.setSchemas(TestUtils.loadSchemaContext("/datastore-and-scope-specification"));
-        restconf.setControllerContext(controllerContext);
-        restconf.setBroker(mockedBrokerFacade);
-    }
-
-    @Test
-    @Ignore // URI parsing test - not able to catch a motivation + bad mocking response now - it needs to change Controller RPC table holder approach
-    public void resolveURIParametersConcreteValues() {
-        resolveURIParameters("OPERATIONAL", "SUBTREE", LogicalDatastoreType.OPERATIONAL, DataChangeScope.SUBTREE);
-    }
-
-    @Test
-    @Ignore // URI parsing test - not able to catch a motivation + bad mocking response now - it needs to change Controller RPC table holder approach
-    public void resolveURIParametersDefaultValues() {
-        resolveURIParameters(null, null, LogicalDatastoreType.CONFIGURATION, DataChangeScope.BASE);
-    }
-
-    private void resolveURIParameters(final String datastore, final String scope,
-            final LogicalDatastoreType datastoreExpected, final DataChangeScope scopeExpected) {
-
-        final InstanceIdentifierBuilder iiBuilder = YangInstanceIdentifier.builder();
-        iiBuilder.node(QName.create("dummyStreamName"));
-
-        final String datastoreValue = datastore == null ? "CONFIGURATION" : datastore;
-        final String scopeValue = scope == null ? "BASE" : scope + "";
-        Notificator.createListener(iiBuilder.build(), "dummyStreamName/datastore=" + datastoreValue + "/scope="
-                + scopeValue);
-
-        final UriInfo mockedUriInfo = mock(UriInfo.class);
-        @SuppressWarnings("unchecked")
-        final MultivaluedMap<String, String> mockedMultivaluedMap = mock(MultivaluedMap.class);
-        when(mockedMultivaluedMap.getFirst(eq("datastore"))).thenReturn(datastoreValue);
-        when(mockedMultivaluedMap.getFirst(eq("scope"))).thenReturn(scopeValue);
-
-        when(mockedUriInfo.getQueryParameters(eq(false))).thenReturn(mockedMultivaluedMap);
-
-         final UriBuilder uriBuilder = UriBuilder.fromUri("www.whatever.com");
-         when(mockedUriInfo.getAbsolutePathBuilder()).thenReturn(uriBuilder);
-
-//       when(mockedBrokerFacade.invokeRpc(any(SchemaPath.class), any(NormalizedNode.class)))
-//       .thenReturn(Futures.<DOMRpcResult, DOMRpcException> immediateCheckedFuture(new DefaultDOMRpcResult(Builders.containerBuilder().build())));
-
-        restconf.invokeRpc("sal-remote:create-data-change-event-subscription", prepareDomRpcNode(datastore, scope),
-                mockedUriInfo);
-
-        final ListenerAdapter listener = Notificator.getListenerFor("opendaylight-inventory:nodes/datastore="
-                + datastoreValue + "/scope=" + scopeValue);
-        assertNotNull(listener);
-
-    }
-
-    private NormalizedNodeContext prepareDomRpcNode(final String datastore, final String scope) {
-        final SchemaContext schema = controllerContext.getGlobalSchema();
-        final Date revDate;
-        try {
-            revDate = getRevisionFormat().parse("2014-01-14");
-        }
-        catch (final ParseException e) {
-            throw new IllegalStateException(e);
-        }
-        final Module rpcSalRemoteModule = schema.findModuleByName("sal-remote", revDate);
-        final Set<RpcDefinition> setRpcs = rpcSalRemoteModule.getRpcs();
-        final QName rpcQName = QName.create(rpcSalRemoteModule.getQNameModule(), "create-data-change-event-subscription");
-        final QName rpcInputQName = QName.create("urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","2014-01-14","input");
-        ContainerSchemaNode rpcInputSchemaNode = null;
-        for (final RpcDefinition rpc : setRpcs) {
-            if (rpcQName.isEqualWithoutRevision(rpc.getQName())) {
-                rpcInputSchemaNode = SchemaNodeUtils.getRpcDataSchema(rpc, rpcInputQName);
-                break;
-            }
-        }
-        assertNotNull("RPC ContainerSchemaNode was not found!", rpcInputSchemaNode);
-
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> container = Builders.containerBuilder(rpcInputSchemaNode);
-
-        final QName pathQName = QName.create("urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote", "2014-01-14", "path");
-        final DataSchemaNode pathSchemaNode = rpcInputSchemaNode.getDataChildByName(pathQName);
-        assertTrue(pathSchemaNode instanceof LeafSchemaNode);
-        final LeafNode<Object> pathNode = (Builders.leafBuilder((LeafSchemaNode) pathSchemaNode)
-                .withValue(YangInstanceIdentifier.builder().node(QName.create("urn:opendaylight:inventory", "2013-08-19", "nodes")).build())).build();
-        container.withChild(pathNode);
-
-        final QName dataStoreQName = QName.create("urn:sal:restconf:event:subscription", "2014-7-8", "datastore");
-        final DataSchemaNode dsSchemaNode = rpcInputSchemaNode.getDataChildByName(dataStoreQName);
-        assertTrue(dsSchemaNode instanceof LeafSchemaNode);
-        final LeafNode<Object> dsNode = (Builders.leafBuilder((LeafSchemaNode) dsSchemaNode)
-                .withValue(datastore)).build();
-        container.withChild(dsNode);
-
-        final QName scopeQName = QName.create("urn:sal:restconf:event:subscription", "2014-7-8", "scope");
-        final DataSchemaNode scopeSchemaNode = rpcInputSchemaNode.getDataChildByName(scopeQName);
-        assertTrue(scopeSchemaNode instanceof LeafSchemaNode);
-        final LeafNode<Object> scopeNode = (Builders.leafBuilder((LeafSchemaNode) scopeSchemaNode)
-                .withValue(scope)).build();
-        container.withChild(scopeNode);
-
-        return new NormalizedNodeContext(new InstanceIdentifierContext<>(null, rpcInputSchemaNode, null, schema), container.build());
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/URITest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/URITest.java
deleted file mode 100644 (file)
index 3121fc0..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import java.io.FileNotFoundException;
-import java.util.Set;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.InstanceIdentifierContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfDocumentedException;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class URITest {
-
-    private static final ControllerContext controllerContext = ControllerContext.getInstance();
-
-    @Rule
-    public ExpectedException exception = ExpectedException.none();
-
-    @BeforeClass
-    public static void init() throws FileNotFoundException {
-        final Set<Module> allModules = TestUtils.loadModulesFrom("/full-versions/yangs");
-        assertNotNull(allModules);
-        final SchemaContext schemaContext = TestUtils.loadSchemaContext(allModules);
-        controllerContext.setSchemas(schemaContext);
-    }
-
-    @Test
-    public void testToInstanceIdentifierList() throws FileNotFoundException {
-        InstanceIdentifierContext<?> instanceIdentifier = controllerContext
-                .toInstanceIdentifier("simple-nodes:userWithoutClass/foo");
-        assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "userWithoutClass");
-
-        instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:userWithoutClass/foo");
-        assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "userWithoutClass");
-
-        instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:user/foo/boo");
-        assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "user");
-
-        instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:user//boo");
-        assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "user");
-
-    }
-
-    @Test
-    public void testToInstanceIdentifierListWithNullKey() {
-        exception.expect(RestconfDocumentedException.class);
-        controllerContext.toInstanceIdentifier("simple-nodes:user/null/boo");
-    }
-
-    @Test
-    public void testToInstanceIdentifierListWithMissingKey() {
-        exception.expect(RestconfDocumentedException.class);
-        controllerContext.toInstanceIdentifier("simple-nodes:user/foo");
-    }
-
-    @Test
-    public void testToInstanceIdentifierContainer() throws FileNotFoundException {
-        final InstanceIdentifierContext<?> instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:users");
-        assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "users");
-        assertTrue(instanceIdentifier.getSchemaNode() instanceof ContainerSchemaNode);
-        assertEquals(2, ((ContainerSchemaNode) instanceIdentifier.getSchemaNode()).getChildNodes().size());
-    }
-
-    @Test
-    @Ignore //jenkins has problem with JerseyTest - we expecting problems with singletons ControllerContext as schemaContext holder
-    public void testToInstanceIdentifierChoice() throws FileNotFoundException {
-        final InstanceIdentifierContext<?> instanceIdentifier = controllerContext
-                .toInstanceIdentifier("simple-nodes:food/nonalcoholic");
-        assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "nonalcoholic");
-    }
-
-    @Test
-    public void testToInstanceIdentifierChoiceException() {
-        exception.expect(RestconfDocumentedException.class);
-        controllerContext.toInstanceIdentifier("simple-nodes:food/snack");
-    }
-
-    @Test
-    public void testToInstanceIdentifierCaseException() {
-        exception.expect(RestconfDocumentedException.class);
-        controllerContext.toInstanceIdentifier("simple-nodes:food/sports-arena");
-    }
-
-    @Test
-    public void testToInstanceIdentifierChoiceCaseException() {
-        exception.expect(RestconfDocumentedException.class);
-        controllerContext.toInstanceIdentifier("simple-nodes:food/snack/sports-arena");
-    }
-
-    @Test
-    public void testToInstanceIdentifierWithoutNode() {
-        exception.expect(RestconfDocumentedException.class);
-        controllerContext.toInstanceIdentifier("simple-nodes");
-    }
-
-    @Test
-    public void testMountPointWithExternModul() throws FileNotFoundException {
-        initMountService(true);
-        final InstanceIdentifierContext<?> instanceIdentifier = controllerContext
-                .toInstanceIdentifier("simple-nodes:users/yang-ext:mount/test-interface2:class/student/name");
-        assertEquals(
-                "[(urn:ietf:params:xml:ns:yang:test-interface2?revision=2014-08-01)class, (urn:ietf:params:xml:ns:yang:test-interface2?revision=2014-08-01)student, (urn:ietf:params:xml:ns:yang:test-interface2?revision=2014-08-01)student[{(urn:ietf:params:xml:ns:yang:test-interface2?revision=2014-08-01)name=name}]]",
-                ImmutableList.copyOf(instanceIdentifier.getInstanceIdentifier().getPathArguments()).toString());
-    }
-
-    @Test
-    public void testMountPointWithoutExternModul() throws FileNotFoundException {
-        initMountService(true);
-        final InstanceIdentifierContext<?> instanceIdentifier = controllerContext
-                .toInstanceIdentifier("simple-nodes:users/yang-ext:mount/");
-        assertTrue(Iterables.isEmpty(instanceIdentifier.getInstanceIdentifier().getPathArguments()));
-    }
-
-    @Test
-    public void testMountPointWithoutMountService() throws FileNotFoundException {
-        exception.expect(RestconfDocumentedException.class);
-
-        controllerContext.setMountService(null);
-        controllerContext.toInstanceIdentifier("simple-nodes:users/yang-ext:mount/test-interface2:class/student/name");
-    }
-
-    @Test
-    public void testMountPointWithoutMountPointSchema() {
-        initMountService(false);
-        exception.expect(RestconfDocumentedException.class);
-
-        controllerContext.toInstanceIdentifier("simple-nodes:users/yang-ext:mount/test-interface2:class");
-    }
-
-    public void initMountService(final boolean withSchema) {
-        final DOMMountPointService mountService = mock(DOMMountPointService.class);
-        controllerContext.setMountService(mountService);
-        final BrokerFacade brokerFacade = mock(BrokerFacade.class);
-        final RestconfImpl restconfImpl = RestconfImpl.getInstance();
-        restconfImpl.setBroker(brokerFacade);
-        restconfImpl.setControllerContext(controllerContext);
-
-        final Set<Module> modules2 = TestUtils.loadModulesFrom("/test-config-data/yang2");
-        final SchemaContext schemaContext2 = TestUtils.loadSchemaContext(modules2);
-        final DOMMountPoint mountInstance = mock(DOMMountPoint.class);
-        if (withSchema) {
-            when(mountInstance.getSchemaContext()).thenReturn(schemaContext2);
-        } else {
-            when(mountInstance.getSchemaContext()).thenReturn(null);
-        }
-        when(mountService.getMountPoint(any(YangInstanceIdentifier.class))).thenReturn(Optional.of(mountInstance));
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/XmlAndJsonToCnSnInstanceIdentifierTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/XmlAndJsonToCnSnInstanceIdentifierTest.java
deleted file mode 100644 (file)
index aa37c75..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import org.junit.BeforeClass;
-
-public class XmlAndJsonToCnSnInstanceIdentifierTest extends YangAndXmlAndDataSchemaLoader {
-
-    @BeforeClass
-    public static void initialize() {
-        dataLoad("/instanceidentifier/yang", 4, "instance-identifier-module", "cont");
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/XmlAndJsonToCnSnLeafRefTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/XmlAndJsonToCnSnLeafRefTest.java
deleted file mode 100644 (file)
index e2e19c2..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import org.junit.BeforeClass;
-import org.opendaylight.yangtools.yang.common.QName;
-
-public class XmlAndJsonToCnSnLeafRefTest extends YangAndXmlAndDataSchemaLoader {
-
-    final QName refContQName = QName.create("referenced:module", "2014-04-17", "cont");
-    final QName refLf1QName = QName.create(refContQName, "lf1");
-    final QName contQName = QName.create("leafref:module", "2014-04-17", "cont");
-    final QName lf1QName = QName.create(contQName, "lf1");
-    final QName lf2QName = QName.create(contQName, "lf2");
-    final QName lf3QName = QName.create(contQName, "lf3");
-
-    @BeforeClass
-    public static void initialize() {
-        dataLoad("/leafref/yang", 2, "leafref-module", "cont");
-    }
-
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/YangAndXmlAndDataSchemaLoader.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/YangAndXmlAndDataSchemaLoader.java
deleted file mode 100644 (file)
index efcc374..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.util.Set;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-
-public abstract class YangAndXmlAndDataSchemaLoader {
-
-    protected static Set<Module> modules;
-    protected static DataSchemaNode dataSchemaNode;
-    protected static String searchedModuleName;
-    protected static String searchedDataSchemaName;
-    protected static String schemaNodePath;
-
-    protected static void dataLoad(String yangPath) {
-        dataLoad(yangPath, 1, null, null);
-    }
-
-    protected static void dataLoad(String yangPath, int modulesNumber, String moduleName, String dataSchemaName) {
-        modules = TestUtils.loadModulesFrom(yangPath);
-        assertEquals(modulesNumber, modules.size());
-        Module module = TestUtils.resolveModule(moduleName, modules);
-        searchedModuleName = module == null ? "" : module.getName();
-        assertNotNull(module);
-        dataSchemaNode = TestUtils.resolveDataSchemaNode(dataSchemaName, module);
-        searchedDataSchemaName = dataSchemaNode == null ? "" : dataSchemaNode.getQName().getLocalName();
-        assertNotNull(dataSchemaNode);
-        schemaNodePath = searchedModuleName + ":" + searchedDataSchemaName;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/websockets/client/IClientMessageCallback.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/websockets/client/IClientMessageCallback.java
deleted file mode 100644 (file)
index 5b658a6..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2014, 2015 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.sal.restconf.impl.websockets.client;
-
-/**
- * Created by mbobak on 1/22/14.
- */
-public interface IClientMessageCallback {
-
-    public void onMessageReceived(Object message);
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/websockets/client/WebSocketClient.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/websockets/client/WebSocketClient.java
deleted file mode 100644 (file)
index bc915d0..0000000
+++ /dev/null
@@ -1,134 +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.sal.restconf.impl.websockets.client;
-
-import io.netty.bootstrap.Bootstrap;
-import io.netty.buffer.Unpooled;
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelInitializer;
-import io.netty.channel.ChannelPipeline;
-import io.netty.channel.EventLoopGroup;
-import io.netty.channel.nio.NioEventLoopGroup;
-import io.netty.channel.socket.SocketChannel;
-import io.netty.channel.socket.nio.NioSocketChannel;
-import io.netty.handler.codec.http.HttpClientCodec;
-import io.netty.handler.codec.http.HttpObjectAggregator;
-import io.netty.handler.codec.http.websocketx.CloseWebSocketFrame;
-import io.netty.handler.codec.http.websocketx.PingWebSocketFrame;
-import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
-import io.netty.handler.codec.http.websocketx.WebSocketClientHandshakerFactory;
-import io.netty.handler.codec.http.websocketx.WebSocketVersion;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.net.URI;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class WebSocketClient {
-
-    private final URI uri;
-    private Bootstrap bootstrap = new Bootstrap();;
-    private final WebSocketClientHandler clientHandler;
-    private static final Logger logger = LoggerFactory.getLogger(WebSocketClient.class);
-    private Channel clientChannel;
-    private final EventLoopGroup group = new NioEventLoopGroup();
-
-    public WebSocketClient(URI uri, IClientMessageCallback clientMessageCallback) {
-        this.uri = uri;
-        clientHandler = new WebSocketClientHandler(WebSocketClientHandshakerFactory.newHandshaker(uri,
-                WebSocketVersion.V13, null, false, null), clientMessageCallback); // last
-                                                                                  // null
-                                                                                  // could
-                                                                                  // be
-                                                                                  // replaced
-                                                                                  // with
-                                                                                  // DefaultHttpHeaders
-        initialize();
-    }
-
-    private void initialize() {
-
-        String protocol = uri.getScheme();
-        if (!"ws".equals(protocol)) {
-            throw new IllegalArgumentException("Unsupported protocol: " + protocol);
-        }
-
-        bootstrap.group(group).channel(NioSocketChannel.class).handler(new ChannelInitializer<SocketChannel>() {
-            @Override
-            public void initChannel(SocketChannel ch) throws Exception {
-                ChannelPipeline pipeline = ch.pipeline();
-                pipeline.addLast("http-codec", new HttpClientCodec());
-                pipeline.addLast("aggregator", new HttpObjectAggregator(8192));
-                pipeline.addLast("ws-handler", clientHandler);
-            }
-        });
-    }
-
-    public void connect() throws InterruptedException {
-        System.out.println("WebSocket Client connecting");
-        clientChannel = bootstrap.connect(uri.getHost(), uri.getPort()).sync().channel();
-        clientHandler.handshakeFuture().sync();
-    }
-
-    public void writeAndFlush(String message) {
-        clientChannel.writeAndFlush(new TextWebSocketFrame(message));
-    }
-
-    public void writeAndFlush(Object message) {
-        clientChannel.writeAndFlush(message);
-    }
-
-    public void ping() {
-        clientChannel.writeAndFlush(new PingWebSocketFrame(Unpooled.copiedBuffer(new byte[] { 1, 2, 3, 4, 5, 6 })));
-    }
-
-    public void close(String reasonText) throws InterruptedException {
-        CloseWebSocketFrame closeWebSocketFrame = new CloseWebSocketFrame(1000, reasonText);
-        clientChannel.writeAndFlush(closeWebSocketFrame);
-
-        // WebSocketClientHandler will close the connection when the server
-        // responds to the CloseWebSocketFrame.
-        clientChannel.closeFuture().sync();
-        group.shutdownGracefully();
-    }
-
-    public static void main(String[] args) throws Exception {
-        URI uri;
-        if (args.length > 0) {
-            uri = new URI(args[0]);
-        } else {
-            uri = new URI("http://192.168.1.101:8181/opendaylight-inventory:nodes");
-        }
-        IClientMessageCallback messageCallback = new ClientMessageCallback();
-        WebSocketClient webSocketClient = new WebSocketClient(uri, messageCallback);
-        webSocketClient.connect();
-
-        while (true) {
-            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
-            String input = br.readLine();
-            if (input.equals("q")) {
-                System.out.print("Would you like to close stream? (Y = yes, empty = yes)\n");
-                input = br.readLine();
-                if (input.equals("yes") || input.isEmpty()) {
-                    webSocketClient.close("opendaylight-inventory:nodes");
-                    break;
-                }
-            }
-        }
-    }
-
-    private static class ClientMessageCallback implements IClientMessageCallback {
-        @Override
-        public void onMessageReceived(Object message) {
-            if (message instanceof TextWebSocketFrame) {
-                logger.info("received message {}" + ((TextWebSocketFrame) message).text());
-            }
-        }
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/websockets/client/WebSocketClientHandler.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/websockets/client/WebSocketClientHandler.java
deleted file mode 100644 (file)
index e07d8c4..0000000
+++ /dev/null
@@ -1,92 +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.sal.restconf.impl.websockets.client;
-
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelFuture;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.ChannelPromise;
-import io.netty.channel.SimpleChannelInboundHandler;
-import io.netty.handler.codec.http.FullHttpResponse;
-import io.netty.handler.codec.http.websocketx.CloseWebSocketFrame;
-import io.netty.handler.codec.http.websocketx.PongWebSocketFrame;
-import io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker;
-import io.netty.handler.codec.http.websocketx.WebSocketFrame;
-import io.netty.util.CharsetUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class WebSocketClientHandler extends SimpleChannelInboundHandler<Object> {
-
-    private static final Logger logger = LoggerFactory.getLogger(WebSocketClientHandler.class.toString());
-    private final WebSocketClientHandshaker handshaker;
-    private ChannelPromise handshakeFuture;
-    private final IClientMessageCallback messageListener;
-
-    public WebSocketClientHandler(WebSocketClientHandshaker handshaker, IClientMessageCallback listener) {
-        this.handshaker = handshaker;
-        this.messageListener = listener;
-    }
-
-    public ChannelFuture handshakeFuture() {
-        return handshakeFuture;
-    }
-
-    @Override
-    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
-        handshakeFuture = ctx.newPromise();
-    }
-
-    @Override
-    public void channelActive(ChannelHandlerContext ctx) throws Exception {
-        handshaker.handshake(ctx.channel());
-    }
-
-    @Override
-    public void channelInactive(ChannelHandlerContext ctx) throws Exception {
-        logger.info("WebSocket Client disconnected!");
-    }
-
-    @Override
-    public void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
-        Channel ch = ctx.channel();
-        if (!handshaker.isHandshakeComplete()) {
-            handshaker.finishHandshake(ch, (FullHttpResponse) msg);
-            logger.info("WebSocket Client connected!");
-            handshakeFuture.setSuccess();
-            return;
-        }
-
-        if (msg instanceof FullHttpResponse) {
-            FullHttpResponse response = (FullHttpResponse) msg;
-            throw new Exception("Unexpected FullHttpResponse (getStatus=" + response.getStatus() + ", content="
-                    + response.content().toString(CharsetUtil.UTF_8) + ')');
-        }
-
-        messageListener.onMessageReceived(msg);
-        WebSocketFrame frame = (WebSocketFrame) msg;
-
-        if (frame instanceof PongWebSocketFrame) {
-            logger.info("WebSocket Client received pong");
-        } else if (frame instanceof CloseWebSocketFrame) {
-            logger.info("WebSocket Client received closing");
-            ch.close();
-        }
-    }
-
-    @Override
-    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
-        cause.printStackTrace();
-
-        if (!handshakeFuture.isDone()) {
-            handshakeFuture.setFailure(cause);
-        }
-
-        ctx.close();
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/websockets/test/RestStream.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/websockets/test/RestStream.java
deleted file mode 100644 (file)
index 754d829..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.websockets.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import java.io.FileNotFoundException;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.glassfish.jersey.server.ResourceConfig;
-import org.glassfish.jersey.test.JerseyTest;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter;
-import org.opendaylight.controller.sal.rest.impl.RestconfDocumentedExceptionMapper;
-import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader;
-import org.opendaylight.controller.sal.restconf.impl.BrokerFacade;
-import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
-import org.opendaylight.controller.sal.restconf.impl.RestconfImpl;
-import org.opendaylight.controller.sal.restconf.impl.test.TestUtils;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class RestStream extends JerseyTest {
-
-    private static BrokerFacade brokerFacade;
-    private static RestconfImpl restconfImpl;
-    private static SchemaContext schemaContextYangsIetf;
-
-    @BeforeClass
-    public static void init() throws FileNotFoundException {
-        schemaContextYangsIetf = TestUtils.loadSchemaContext("/full-versions/yangs");
-        final ControllerContext controllerContext = ControllerContext.getInstance();
-        controllerContext.setSchemas(schemaContextYangsIetf);
-        brokerFacade = mock(BrokerFacade.class);
-        restconfImpl = RestconfImpl.getInstance();
-        restconfImpl.setBroker(brokerFacade);
-        restconfImpl.setControllerContext(controllerContext);
-    }
-
-    @Override
-    protected Application configure() {
-        /* enable/disable Jersey logs to console */
-        // enable(TestProperties.LOG_TRAFFIC);
-        // enable(TestProperties.DUMP_ENTITY);
-        // enable(TestProperties.RECORD_LOG_LEVEL);
-        // set(TestProperties.RECORD_LOG_LEVEL, Level.ALL.intValue());
-        ResourceConfig resourceConfig = new ResourceConfig();
-        resourceConfig = resourceConfig.registerInstances(restconfImpl, new NormalizedNodeJsonBodyWriter(),
-                new NormalizedNodeXmlBodyWriter(), new XmlNormalizedNodeBodyReader(), new JsonNormalizedNodeBodyReader());
-        resourceConfig.registerClasses(RestconfDocumentedExceptionMapper.class);
-        return resourceConfig;
-    }
-
-    @Test
-    @Ignore // FIXME : find problem with codec
-    public void testCallRpcCallGet() throws UnsupportedEncodingException, InterruptedException {
-        String uri = "/operations/sal-remote:create-data-change-event-subscription";
-        final Response responseWithStreamName = post(uri, MediaType.APPLICATION_XML, getRpcInput());
-        final Document xmlResponse = responseWithStreamName.readEntity(Document.class);
-        assertNotNull(xmlResponse);
-        final Element outputElement = xmlResponse.getDocumentElement();
-        assertEquals("output",outputElement.getLocalName());
-
-        final Node streamNameElement = outputElement.getFirstChild();
-        assertEquals("stream-name",streamNameElement.getLocalName());
-        assertEquals("ietf-interfaces:interfaces/ietf-interfaces:interface/eth0/datastore=CONFIGURATION/scope=BASE",streamNameElement.getTextContent());
-
-        uri = "/streams/stream/ietf-interfaces:interfaces/ietf-interfaces:interface/eth0/datastore=CONFIGURATION/scope=BASE";
-        final Response responseWithRedirectionUri = get(uri, MediaType.APPLICATION_XML);
-        final URI websocketServerUri = responseWithRedirectionUri.getLocation();
-        assertNotNull(websocketServerUri);
-        assertTrue(websocketServerUri.toString().matches(".*http://localhost:[\\d]+/ietf-interfaces:interfaces/ietf-interfaces:interface/eth0.*"));
-    }
-
-    private Response post(final String uri, final String mediaType, final String data) {
-        return target(uri).request(mediaType).post(Entity.entity(data, mediaType));
-    }
-
-    private Response get(final String uri, final String mediaType) {
-        return target(uri).request(mediaType).get();
-    }
-
-    private String getRpcInput() {
-        final StringBuilder sb = new StringBuilder();
-        sb.append("<input xmlns=\"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote\">");
-        sb.append("<path xmlns:int=\"urn:ietf:params:xml:ns:yang:ietf-interfaces\">/int:interfaces/int:interface[int:name='eth0']</path>");
-        sb.append("</input>");
-        return sb.toString();
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/xml/to/cnsn/test/XmlAugmentedElementToCnSnTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/xml/to/cnsn/test/XmlAugmentedElementToCnSnTest.java
deleted file mode 100644 (file)
index 2a6f7de..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.xml.to.cnsn.test;
-
-
-public class XmlAugmentedElementToCnSnTest {
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/xml/to/cnsn/test/XmlToCnSnTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/xml/to/cnsn/test/XmlToCnSnTest.java
deleted file mode 100644 (file)
index 9745c95..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.impl.xml.to.cnsn.test;
-
-import org.junit.BeforeClass;
-import org.opendaylight.controller.sal.restconf.impl.test.YangAndXmlAndDataSchemaLoader;
-
-public class XmlToCnSnTest extends YangAndXmlAndDataSchemaLoader {
-
-    @BeforeClass
-    public static void initialize() {
-        dataLoad("/xml-to-cnsn/leafref");
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/json/dataa.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/json/dataa.json
deleted file mode 100644 (file)
index 6097bd1..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "main:cont":{
-        "augment-main-a:cont1":{
-            "lf11":"lf11 value from a"
-        }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/json/datab.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/json/datab.json
deleted file mode 100644 (file)
index 297584a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "main:cont":{
-        "augment-main-b:cont1":{
-            "lf11":"lf11 value from b"
-        }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/xml/dataa.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/xml/dataa.xml
deleted file mode 100644 (file)
index 97c5ae5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont xmlns="ns:main">
-    <cont1 xmlns="ns:augment:main:a">
-        <lf11>lf11 value for a</lf11>
-    </cont1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/xml/datab.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/xml/datab.xml
deleted file mode 100644 (file)
index b7696ca..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont xmlns="ns:main">
-    <cont1 xmlns="ns:augment:main:b">
-        <lf11>lf11 value for b</lf11>
-    </cont1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/yang/augment-main-a.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/yang/augment-main-a.yang
deleted file mode 100644 (file)
index aa3bf3f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module augment-main-a {
-  namespace "ns:augment:main:a";  
-  prefix "aumaa";
-
-  
-  import main {prefix mn; revision-date 2014-01-21;}   
-
-
-  revision "2014-01-21" {    
-  }
-  
-  augment "/mn:cont" {
-    container cont1 {
-        leaf lf11 {
-            type string;
-        }
-    }
-  }
-  
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/yang/augment-main-b.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/yang/augment-main-b.yang
deleted file mode 100644 (file)
index dcf493d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module augment-main-b {
-  namespace "ns:augment:main:b";  
-  prefix "aumab";
-
-  
-  import main {prefix mn; revision-date 2014-01-21;}   
-
-
-  revision "2014-01-21" {    
-  }
-  
-  augment "/mn:cont" {
-    container cont1 {
-        leaf lf11 {
-            type string;
-        }
-    }
-  }
-  
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/yang/main.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/common/augment/yang/main.yang
deleted file mode 100644 (file)
index e291722..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module main {
-  namespace "ns:main";  
-  prefix "ma";
-
-  revision "2014-01-21" {    
-  }
-  
-  container cont {
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/datastore-and-scope-specification/opendaylight-inventory.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/datastore-and-scope-specification/opendaylight-inventory.yang
deleted file mode 100644 (file)
index e4247be..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-module opendaylight-inventory {
-    namespace "urn:opendaylight:inventory";
-    prefix inv;
-
-    revision "2013-08-19" {
-        description "Initial revision of Inventory model";
-    }
-    
-    
-    container nodes {
-        list node {
-            key "id";
-            leaf id {
-                type string;
-            }
-        }
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/datastore-and-scope-specification/sal-remote-augment.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/datastore-and-scope-specification/sal-remote-augment.yang
deleted file mode 100644 (file)
index 8393456..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-module sal-remote-augment {
-
-    yang-version 1;
-    namespace "urn:sal:restconf:event:subscription";
-    prefix "salrmt-aug-ev-subscr";
-
-    import sal-remote {prefix salrmt; revision-date "2014-01-14";}
-
-    description
-        "Added input parameters to rpc create-data-change-event-subscription";
-
-    revision "2014-7-8" {
-    }
-
-    augment "/salrmt:create-data-change-event-subscription/salrmt:input" {
-        leaf datastore {
-            type enumeration {
-                enum OPERATIONAL;
-                enum CONFIGURATION;
-            }
-        }
-        leaf scope {
-            type enumeration {
-                enum BASE;
-                enum ONE;
-                enum SUBTREE;
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/datastore-and-scope-specification/sal-remote@2014-01-14.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/datastore-and-scope-specification/sal-remote@2014-01-14.yang
deleted file mode 100644 (file)
index d12e252..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-module sal-remote {
-
-       yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote";
-    prefix "sal-remote";
-    
-
-    organization "Cisco Systems, Inc.";
-    contact "Martin Bobak <mbobak@cisco.com>";
-
-    description
-          "This module contains the definition of methods related to
-           sal remote model.
-
-           Copyright (c)2013 Cisco Systems, Inc. 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";
-
-    revision "2014-01-14" {
-        description
-            "Initial revision";
-    }
-
-
-     typedef q-name {
-       type string;
-       reference
-         "http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#QName";
-     }
-
-    rpc create-data-change-event-subscription {
-        input {
-            leaf path {
-                type instance-identifier;
-                description "Subtree path. ";
-            }
-         }
-         output {
-            leaf stream-name {
-                type string;
-                description "Notification stream name.";
-            }
-         }
-    }
-
-    notification data-changed-notification {
-        description "Data change notification.";
-        list data-change-event {
-            key path;
-            leaf path {
-                type instance-identifier;
-            }
-            leaf store {
-                type enumeration {
-                    enum config;
-                    enum operation;
-                }
-            }
-            leaf operation {
-                type enumeration {
-                    enum created;
-                    enum updated;
-                    enum deleted;
-                }
-            }
-            anyxml data{
-                description "DataObject ";
-            }
-         }
-    }
-
-    rpc create-notification-stream {
-        input {
-            leaf-list notifications {
-                type q-name;
-                description "Notification QNames";
-            }
-         }
-        output {
-            leaf notification-stream-identifier {
-                type string;
-                description "Unique notification stream identifier, in which notifications will be propagated";
-            }
-        }
-    }
-
-    rpc begin-transaction{
-        output{
-            anyxml data-modification-transaction{
-                description "DataModificationTransaction xml";
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/decoding-exception/yang/number.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/decoding-exception/yang/number.yang
deleted file mode 100644 (file)
index c463882..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
- module number {
-
-   namespace "number";
-   prefix "number";
-
-   revision 2014-04-24 {
-   }
-
-    
-
-    container cont {
-        leaf lf {
-            type uint8;
-        }
-        
-    }    
- }
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/equal-name-data-for-container.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/equal-name-data-for-container.json
deleted file mode 100644 (file)
index 78b097d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "cont":{
-        "cont1":[
-            {
-                "lst11":{
-                    "lf111":"value1"
-                }
-            },
-            {
-                "lst11":{
-                    "lf111":"value2"
-                }
-            }
-        ]
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/equal-name-data-for-container.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/equal-name-data-for-container.xml
deleted file mode 100644 (file)
index 26a1f5f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<cont>
-    <cont1>
-        <lst11>
-            <lf111>value1</lf111>
-        </lst11>
-    </cont1>
-    <cont1>
-        <lst11>
-            <lf111>value1</lf111>
-        </lst11>
-    </cont1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/equal-name-data-for-leaf.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/equal-name-data-for-leaf.json
deleted file mode 100644 (file)
index d0a9fd4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "cont":{
-        "cont1":{
-            "lst11":[
-             {
-                "lf111":"value1",
-                "lf111":"value2"
-             },
-             {
-                "lf111":"value3"
-             }
-             ]
-         }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/equal-name-data-for-leaf.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/equal-name-data-for-leaf.xml
deleted file mode 100644 (file)
index 4221c2d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<cont>
-    <cont1>
-        <lst11>
-          <lf111>value1</lf111>,
-          <lf111>value2</lf111>,
-        </lst11>
-        <lst11>
-          <lf111>value3</lf111>,
-        </lst11>
-    </cont1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/yang/equal-data-node-names.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/equal-data-node-names/yang/equal-data-node-names.yang
deleted file mode 100644 (file)
index 3a3653a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/* bug 1204 */
-module equal-data-node-names {
-  namespace "ns:equal:data:node:names";
-
-  prefix "eqdanona";
-  revision 2014-06-26 {
-  }
-
-  container cont {
-    container cont1 {
-        list lst11 {
-            leaf lf111 {
-                type string;
-            }
-        }
-    }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data-rpc-input.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data-rpc-input.json
deleted file mode 100644 (file)
index 0eae37a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-    "test-module:input":{
-        "cont":{
-            "cont1":{
-                "lf11":"lf1 data",
-                "lf12":"lf2 data"
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data-rpc-input.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data-rpc-input.xml
deleted file mode 100644 (file)
index fb9726d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<input xmlns="test:module">
-    <cont>
-        <cont1>
-            <lf11>lf1 data</lf11>
-            <lf12>lf2 data</lf12>
-        </cont1>
-    </cont>
-</input>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data2.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data2.xml
deleted file mode 100644 (file)
index db2f4e9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<cont xmlns="test:module">
-    <cont1>
-        <lf11>lf1 data</lf11>
-        <lf12>lf2 data</lf12>
-    </cont1>
-</cont>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data3.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data3.xml
deleted file mode 100644 (file)
index b7b05d1..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<cont1 xmlns="test:module">
- <lf11>lf1 data</lf11>
- <lf12>lf2 data</lf12>
-</cont1>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data4.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data4.xml
deleted file mode 100644 (file)
index 3ce6741..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-<cont1 xmlns="test:module">
-    <lf11>lf1 data</lf11>
-    <lf12>lf2 data</lf12>
-</cont1>
-
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data5.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data5.xml
deleted file mode 100644 (file)
index 89aa782..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<interfaces xmlns="test:module">
-    <class>
-        <name>John</name>
-        <address>F.C.I 43</address>
-        <email>j@j</email>
-    </class>
-</interfaces>
-
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data6.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data6.xml
deleted file mode 100644 (file)
index 7feb6bf..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<class xmlns="test:module">
-    <name>John</name>
-    <address>F.C.I 43</address>
-    <email>j@j</email>
-</class>
-
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data7.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-data2/data7.xml
deleted file mode 100644 (file)
index 4374277..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-    <cont xmlns="test:module">
-        <cont1>
-            <lf11>lf1 data</lf11>
-            <lf12>lf2 data</lf12>
-        </cont1>
-    </cont>
-</data>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-module/test-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/test-module/test-module.yang
deleted file mode 100644 (file)
index 2cc78b3..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-module test-module {
-  namespace "test:module";
-  prefix tstmod;
-
-  revision 2014-01-09 {
-  }
-
-  identity module-type {
-  }
-
-  identity test-identity {
-  }
-
-  container interfaces {
-    container class {
-        leaf name {
-            type string;
-        }
-        leaf address {
-            type string;
-        }
-        leaf email {
-            type string;
-        }
-    }
-  }
-
-  container cont {
-    container cont1 {
-        leaf lf11 {
-            type string;
-        }
-        leaf lf12 {
-            type string;
-        }
-    }
-    list lst1 {
-        key "lf11";
-        leaf lf11 {
-            type string;
-        }
-    }
-  }
-
-  container modules {
-      list module {
-          key "type name";
-          leaf name {
-              type string;
-              mandatory true;
-          }
-
-          leaf type {
-              type identityref {
-                  base module-type;
-              }
-              mandatory true;
-          }
-
-          leaf data {
-              type string;
-          }
-      }
-  }
-
-  list lst-with-composite-key {
-    key "key1 key2";
-    leaf key1 {
-        type string;
-    }
-    leaf key2 {
-        type uint8;
-    }
-  }
-
-  rpc no-payload-rpc-test {
-      output {
-          container cont-output {
-          }
-      }
-  }
-  
-  rpc rpc-test {
-    input {
-      container cont {
-        container cont1 {
-            leaf lf11 {
-                type string;
-            }
-            leaf lf12 {
-                type string;
-            }
-        }
-      }
-    }
-    output {
-        container cont-output {
-        }
-    }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/testData.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/testData.json
deleted file mode 100644 (file)
index a736067..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-{
-  "interfaces": {
-    "interface": [
-      {
-        "name": "eth0",
-        "type": "ethernetCsmacd",
-        "enabled": false
-      },
-      {
-        "name": "eth1",
-        "type": "ethernetCsmacd",
-        "enabled": true,
-        "vlan-tagging": true
-      },
-      {
-        "name": "eth1.10",
-        "type": "l2vlan",
-        "enabled": true,
-        "base-interface": "eth1",
-        "vlan-id": 10
-      },
-      {
-        "name": "lo1",
-        "type": "softwareLoopback",
-        "enabled": true
-      }
-    ]
-  },
-  "interfaces-state": {
-    "interface": [
-      {
-        "name": "eth0",
-        "type": "ethernetCsmacd",
-        "admin-status": "down",
-        "oper-status": "down",
-        "if-index": 2,
-        "phys-address": "00:01:02:03:04:05",
-        "statistics": {
-          "discontinuity-time": "2013-04-01T03:00:00+00:00"
-        }
-      },
-      {
-        "name": "eth1",
-        "type": "ethernetCsmacd",
-        "admin-status": "up",
-        "oper-status": "up",
-        "if-index": 7,
-        "phys-address": "00:01:02:03:04:06",
-        "higher-layer-if": [
-          "eth1.10"
-        ],
-        "statistics": {
-          "discontinuity-time": "2013-04-01T03:00:00+00:00"
-        }
-      },
-      {
-        "name": "eth1.10",
-        "type": "l2vlan",
-        "admin-status": "up",
-        "oper-status": "up",
-        "if-index": 9,
-        "lower-layer-if": [
-          "eth1"
-        ],
-        "statistics": {
-          "discontinuity-time": "2013-04-01T03:00:00+00:00"
-        }
-      },
-      {
-        "name": "eth2",
-        "type": "ethernetCsmacd",
-        "admin-status": "down",
-        "oper-status": "down",
-        "if-index": 8,
-        "phys-address": "00:01:02:03:04:07",
-        "statistics": {
-          "discontinuity-time": "2013-04-01T03:00:00+00:00"
-        }
-      },
-      {
-        "name": "lo1",
-        "type": "softwareLoopback",
-        "admin-status": "up",
-        "oper-status": "up",
-        "if-index": 1,
-        "statistics": {
-          "discontinuity-time": "2013-04-01T03:00:00+00:00"
-        }
-      }
-    ]
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/testData.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/testData.xml
deleted file mode 100644 (file)
index bdd9c10..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-<rpc-reply
-    xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
-    message-id="101">
-  <data>
-
-    <interfaces
-        xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"
-        xmlns:vlan="http://example.com/vlan">
-
-      <interface>
-        <name>eth0</name>
-        <type>ethernetCsmacd</type>
-        <enabled>false</enabled>
-      </interface>
-
-      <interface>
-        <name>eth1</name>
-        <type>ethernetCsmacd</type>
-        <enabled>true</enabled>
-        <vlan:vlan-tagging>true</vlan:vlan-tagging>
-      </interface>
-
-      <interface>
-        <name>eth1.10</name>
-        <type>l2vlan</type>
-        <enabled>true</enabled>
-        <vlan:base-interface>eth1</vlan:base-interface>
-        <vlan:vlan-id>10</vlan:vlan-id>
-      </interface>
-
-      <interface>
-        <name>lo1</name>
-        <type>softwareLoopback</type>
-        <enabled>true</enabled>
-      </interface>
-
-    </interfaces>
-
-    <interfaces-state
-        xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
-
-      <interface>
-        <name>eth0</name>
-       <type>ethernetCsmacd</type>
-        <admin-status>down</admin-status>
-        <oper-status>down</oper-status>
-        <if-index>2</if-index>
-        <phys-address>00:01:02:03:04:05</phys-address>
-        <statistics>
-          <discontinuity-time>
-            2013-04-01T03:00:00+00:00
-          </discontinuity-time>
-          <!-- counters now shown here -->
-        </statistics>
-      </interface>
-
-      <interface>
-        <name>eth1</name>
-        <type>ethernetCsmacd</type>
-        <admin-status>up</admin-status>
-        <oper-status>up</oper-status>
-        <if-index>7</if-index>
-        <phys-address>00:01:02:03:04:06</phys-address>
-        <higher-layer-if>eth1.10</higher-layer-if>
-        <statistics>
-          <discontinuity-time>
-            2013-04-01T03:00:00+00:00
-          </discontinuity-time>
-          <!-- counters now shown here -->
-        </statistics>
-      </interface>
-
-      <interface>
-        <name>eth1.10</name>
-        <type>l2vlan</type>
-        <admin-status>up</admin-status>
-        <oper-status>up</oper-status>
-        <if-index>9</if-index>
-        <lower-layer-if>eth1</lower-layer-if>
-        <statistics>
-          <discontinuity-time>
-            2013-04-01T03:00:00+00:00
-          </discontinuity-time>
-          <!-- counters now shown here -->
-        </statistics>
-      </interface>
-
-      <!-- This interface is not configured -->
-      <interface>
-        <name>eth2</name>
-        <type>ethernetCsmacd</type>
-       <admin-status>down</admin-status>
-        <oper-status>down</oper-status>
-        <if-index>8</if-index>
-        <phys-address>00:01:02:03:04:07</phys-address>
-        <statistics>
-          <discontinuity-time>
-            2013-04-01T03:00:00+00:00
-          </discontinuity-time>
-          <!-- counters now shown here -->
-        </statistics>
-      </interface>
-
-      <interface>
-        <name>lo1</name>
-        <type>softwareLoopback</type>
-        <admin-status>up</admin-status>
-        <oper-status>up</oper-status>
-        <if-index>1</if-index>
-        <statistics>
-          <discontinuity-time>
-            2013-04-01T03:00:00+00:00
-          </discontinuity-time>
-          <!-- counters now shown here -->
-        </statistics>
-      </interface>
-
-    </interfaces-state>
-  </data>
-</rpc-reply>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/ex-vlan.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/ex-vlan.yang
deleted file mode 100644 (file)
index 59369ad..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-module ex-vlan {
-  namespace "http://example.com/vlan";
-  prefix "vlan";
-  
-  import ietf-interfaces {
-    prefix if;
-  }
-  
-  revision 2013-10-22 {
-    description
-      "Initial revision.";
-    reference
-      "RFC A YANG Data Model for Interface Management draft-ietf-netmod-interfaces-cfg-12 - Appendix C";
-  }
-
-  augment "/if:interfaces/if:interface" {
-    when "if:type = 'ethernetCsmacd' or
-          if:type = 'ieee8023adLag'";
-    leaf vlan-tagging {
-      type boolean;
-      default false;
-    }
-  }
-
-  augment "/if:interfaces/if:interface" {
-    when "if:type = 'l2vlan'";
-
-    leaf base-interface {
-      type if:interface-ref;
-      must "/if:interfaces/if:interface[if:name = current()]"
-         + "/vlan:vlan-tagging = 'true'" {
-        description
-          "The base interface must have vlan tagging enabled.";
-      }
-    }
-    leaf vlan-id {
-      type uint16 {
-        range "1..4094";
-      }
-      must "../base-interface" {
-        description
-          "If a vlan-id is defined, a base-interface must
-           be specified.";
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/iana-if-type.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/iana-if-type.yang
deleted file mode 100644 (file)
index 7bd0003..0000000
+++ /dev/null
@@ -1,1517 +0,0 @@
-module iana-if-type {
-  namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
-  prefix ianaift;
-
-  organization "IANA";
-  contact
-    "        Internet Assigned Numbers Authority
-
-     Postal: ICANN
-             4676 Admiralty Way, Suite 330
-             Marina del Rey, CA 90292
-
-     Tel:    +1 310 823 9358
-     E-Mail: iana&iana.org";
-  description
-    "This YANG module defines the iana-if-type typedef, which
-     contains YANG definitions for IANA-registered interface types.
-
-     This YANG module is maintained by IANA, and reflects the
-     'ifType definitions' registry.
-
-     The latest revision of this YANG module can be obtained from
-     the IANA web site.
-
-     Copyright (c) 2011 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC XXXX; see
-     the RFC itself for full legal notices.";
-  // RFC Ed.: replace XXXX with actual RFC number and remove this
-  // note.
-
-  // RFC Ed.: update the date below with the date of RFC publication
-  // and remove this note.
-  revision 2013-07-04 {
-    description
-      "Initial revision.";
-    reference
-      "RFC XXXX: IANA Interface Type YANG Module";
-  }
-
-  typedef iana-if-type {
-    type enumeration {
-      enum "other" {
-        value 1;
-        description
-          "None of the following";
-      }
-      enum "regular1822" {
-        value 2;
-      }
-      enum "hdh1822" {
-        value 3;
-      }
-      enum "ddnX25" {
-        value 4;
-      }
-      enum "rfc877x25" {
-        value 5;
-        reference
-          "RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
-      }
-      enum "ethernetCsmacd" {
-        value 6;
-        description
-          "For all ethernet-like interfaces, regardless of speed,
-           as per RFC3635.";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "iso88023Csmacd" {
-        value 7;
-        status deprecated;
-        description
-          "Deprecated via RFC3635.
-           Use ethernetCsmacd(6) instead.";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "iso88024TokenBus" {
-        value 8;
-      }
-      enum "iso88025TokenRing" {
-        value 9;
-      }
-      enum "iso88026Man" {
-        value 10;
-      }
-      enum "starLan" {
-        value 11;
-        status deprecated;
-        description
-          "Deprecated via RFC3635.
-           Use ethernetCsmacd(6) instead.";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "proteon10Mbit" {
-        value 12;
-      }
-      enum "proteon80Mbit" {
-        value 13;
-      }
-      enum "hyperchannel" {
-        value 14;
-      }
-      enum "fddi" {
-        value 15;
-        reference
-          "RFC 1512 - FDDI Management Information Base";
-      }
-      enum "lapb" {
-        value 16;
-        reference
-          "RFC 1381 - SNMP MIB Extension for X.25 LAPB";
-      }
-      enum "sdlc" {
-        value 17;
-      }
-      enum "ds1" {
-        value 18;
-        description
-          "DS1-MIB";
-        reference
-          "RFC 4805 - Definitions of Managed Objects for the
-                      DS1, J1, E1, DS2, and E2 Interface Types";
-      }
-      enum "e1" {
-        value 19;
-        status obsolete;
-        description
-          "Obsolete see DS1-MIB";
-        reference
-          "RFC 4805 - Definitions of Managed Objects for the
-                      DS1, J1, E1, DS2, and E2 Interface Types";
-      }
-      enum "basicISDN" {
-        value 20;
-        description
-          "see also RFC2127";
-      }
-      enum "primaryISDN" {
-        value 21;
-      }
-      enum "propPointToPointSerial" {
-        value 22;
-        description
-          "proprietary serial";
-      }
-      enum "ppp" {
-        value 23;
-      }
-      enum "softwareLoopback" {
-        value 24;
-      }
-      enum "eon" {
-        value 25;
-        description
-          "CLNP over IP";
-      }
-      enum "ethernet3Mbit" {
-        value 26;
-      }
-      enum "nsip" {
-        value 27;
-        description
-          "XNS over IP";
-      }
-      enum "slip" {
-        value 28;
-        description
-          "generic SLIP";
-      }
-      enum "ultra" {
-        value 29;
-        description
-          "ULTRA technologies";
-      }
-      enum "ds3" {
-        value 30;
-        description
-          "DS3-MIB";
-        reference
-          "RFC 3896 - Definitions of Managed Objects for the
-                      DS3/E3 Interface Type";
-      }
-      enum "sip" {
-        value 31;
-        description
-          "SMDS, coffee";
-        reference
-          "RFC 1694 - Definitions of Managed Objects for SMDS
-                      Interfaces using SMIv2";
-      }
-      enum "frameRelay" {
-        value 32;
-        description
-          "DTE only.";
-        reference
-          "RFC 2115 - Management Information Base for Frame Relay
-                      DTEs Using SMIv2";
-      }
-      enum "rs232" {
-        value 33;
-        reference
-          "RFC 1659 - Definitions of Managed Objects for RS-232-like
-                      Hardware Devices using SMIv2";
-      }
-      enum "para" {
-        value 34;
-        description
-          "parallel-port";
-        reference
-          "RFC 1660 - Definitions of Managed Objects for
-                      Parallel-printer-like Hardware Devices using
-                      SMIv2";
-      }
-      enum "arcnet" {
-        value 35;
-        description
-          "arcnet";
-      }
-      enum "arcnetPlus" {
-        value 36;
-        description
-          "arcnet plus";
-      }
-      enum "atm" {
-        value 37;
-        description
-          "ATM cells";
-      }
-      enum "miox25" {
-        value 38;
-        reference
-          "RFC 1461 - SNMP MIB extension for Multiprotocol
-                      Interconnect over X.25";
-      }
-      enum "sonet" {
-        value 39;
-        description
-          "SONET or SDH";
-      }
-      enum "x25ple" {
-        value 40;
-        reference
-          "RFC 2127 - ISDN Management Information Base using SMIv2";
-      }
-      enum "iso88022llc" {
-        value 41;
-      }
-      enum "localTalk" {
-        value 42;
-      }
-      enum "smdsDxi" {
-        value 43;
-      }
-      enum "frameRelayService" {
-        value 44;
-        description
-          "FRNETSERV-MIB";
-        reference
-          "RFC 2954 - Definitions of Managed Objects for Frame
-                      Relay Service";
-      }
-      enum "v35" {
-        value 45;
-      }
-      enum "hssi" {
-        value 46;
-      }
-      enum "hippi" {
-        value 47;
-      }
-      enum "modem" {
-        value 48;
-        description
-          "Generic modem";
-      }
-      enum "aal5" {
-        value 49;
-        description
-          "AAL5 over ATM";
-      }
-      enum "sonetPath" {
-        value 50;
-      }
-      enum "sonetVT" {
-        value 51;
-      }
-      enum "smdsIcip" {
-        value 52;
-        description
-          "SMDS InterCarrier Interface";
-      }
-      enum "propVirtual" {
-        value 53;
-        description
-          "proprietary virtual/internal";
-        reference
-          "RFC 2863 - The Interfaces Group MIB";
-      }
-      enum "propMultiplexor" {
-        value 54;
-        description
-          "proprietary multiplexing";
-        reference
-          "RFC 2863 - The Interfaces Group MIB";
-      }
-      enum "ieee80212" {
-        value 55;
-        description
-          "100BaseVG";
-      }
-      enum "fibreChannel" {
-        value 56;
-        description
-          "Fibre Channel";
-      }
-      enum "hippiInterface" {
-        value 57;
-        description
-          "HIPPI interfaces";
-      }
-      enum "frameRelayInterconnect" {
-        value 58;
-        status obsolete;
-        description
-          "Obsolete use either
-           frameRelay(32) or frameRelayService(44).";
-      }
-      enum "aflane8023" {
-        value 59;
-        description
-          "ATM Emulated LAN for 802.3";
-      }
-      enum "aflane8025" {
-        value 60;
-        description
-          "ATM Emulated LAN for 802.5";
-      }
-      enum "cctEmul" {
-        value 61;
-        description
-         "ATM Emulated circuit";
-      }
-      enum "fastEther" {
-        value 62;
-        status deprecated;
-        description
-          "Obsoleted via RFC3635.
-          ethernetCsmacd(6) should be used instead";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "isdn" {
-        value 63;
-        description
-          "ISDN and X.25";
-        reference
-          "RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
-                      in the Packet Mode";
-      }
-      enum "v11" {
-        value 64;
-        description
-         "CCITT V.11/X.21";
-      }
-      enum "v36" {
-        value 65;
-        description
-          "CCITT V.36";
-      }
-      enum "g703at64k" {
-        value 66;
-        description
-          "CCITT G703 at 64Kbps";
-      }
-      enum "g703at2mb" {
-        value 67;
-        status obsolete;
-        description
-          "Obsolete see DS1-MIB";
-      }
-      enum "qllc" {
-        value 68;
-        description
-          "SNA QLLC";
-      }
-      enum "fastEtherFX" {
-        value 69;
-        status deprecated;
-        description
-          "Obsoleted via RFC3635
-          ethernetCsmacd(6) should be used instead";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "channel" {
-        value 70;
-        description
-          "channel";
-      }
-      enum "ieee80211" {
-        value 71;
-        description
-          "radio spread spectrum";
-      }
-      enum "ibm370parChan" {
-        value 72;
-        description
-          "IBM System 360/370 OEMI Channel";
-      }
-      enum "escon" {
-        value 73;
-        description
-          "IBM Enterprise Systems Connection";
-      }
-      enum "dlsw" {
-        value 74;
-        description
-          "Data Link Switching";
-      }
-      enum "isdns" {
-        value 75;
-        description
-          "ISDN S/T interface";
-      }
-      enum "isdnu" {
-        value 76;
-        description
-          "ISDN U interface";
-      }
-      enum "lapd" {
-        value 77;
-        description
-          "Link Access Protocol D";
-      }
-      enum "ipSwitch" {
-        value 78;
-        description
-          "IP Switching Objects";
-      }
-      enum "rsrb" {
-        value 79;
-        description
-          "Remote Source Route Bridging";
-      }
-      enum "atmLogical" {
-        value 80;
-        description
-          "ATM Logical Port";
-        reference
-          "RFC 3606 - Definitions of Supplemental Managed Objects
-                      for ATM Interface";
-      }
-      enum "ds0" {
-        value 81;
-        description
-          "Digital Signal Level 0";
-        reference
-          "RFC 2494 - Definitions of Managed Objects for the DS0
-                      and DS0 Bundle Interface Type";
-      }
-      enum "ds0Bundle" {
-        value 82;
-        description
-          "group of ds0s on the same ds1";
-        reference
-          "RFC 2494 - Definitions of Managed Objects for the DS0
-                      and DS0 Bundle Interface Type";
-      }
-      enum "bsc" {
-        value 83;
-        description
-          "Bisynchronous Protocol";
-      }
-      enum "async" {
-        value 84;
-        description
-          "Asynchronous Protocol";
-      }
-      enum "cnr" {
-        value 85;
-        description
-          "Combat Net Radio";
-      }
-      enum "iso88025Dtr" {
-        value 86;
-        description
-          "ISO 802.5r DTR";
-      }
-      enum "eplrs" {
-        value 87;
-        description
-          "Ext Pos Loc Report Sys";
-      }
-      enum "arap" {
-        value 88;
-        description
-          "Appletalk Remote Access Protocol";
-      }
-      enum "propCnls" {
-        value 89;
-        description
-          "Proprietary Connectionless Protocol";
-      }
-      enum "hostPad" {
-        value 90;
-        description
-          "CCITT-ITU X.29 PAD Protocol";
-      }
-      enum "termPad" {
-        value 91;
-        description
-          "CCITT-ITU X.3 PAD Facility";
-      }
-      enum "frameRelayMPI" {
-        value 92;
-        description
-          "Multiproto Interconnect over FR";
-      }
-      enum "x213" {
-        value 93;
-        description
-          "CCITT-ITU X213";
-      }
-      enum "adsl" {
-        value 94;
-        description
-          "Asymmetric Digital Subscriber Loop";
-      }
-      enum "radsl" {
-        value 95;
-        description
-          "Rate-Adapt. Digital Subscriber Loop";
-      }
-      enum "sdsl" {
-        value 96;
-        description
-          "Symmetric Digital Subscriber Loop";
-      }
-      enum "vdsl" {
-        value 97;
-        description
-          "Very H-Speed Digital Subscrib. Loop";
-      }
-      enum "iso88025CRFPInt" {
-        value 98;
-        description
-          "ISO 802.5 CRFP";
-      }
-      enum "myrinet" {
-        value 99;
-        description
-          "Myricom Myrinet";
-      }
-      enum "voiceEM" {
-        value 100;
-        description
-          "voice recEive and transMit";
-      }
-      enum "voiceFXO" {
-        value 101;
-        description
-          "voice Foreign Exchange Office";
-      }
-      enum "voiceFXS" {
-        value 102;
-        description
-          "voice Foreign Exchange Station";
-      }
-      enum "voiceEncap" {
-        value 103;
-        description
-          "voice encapsulation";
-      }
-      enum "voiceOverIp" {
-        value 104;
-        description
-          "voice over IP encapsulation";
-      }
-      enum "atmDxi" {
-        value 105;
-        description
-          "ATM DXI";
-      }
-      enum "atmFuni" {
-        value 106;
-        description
-          "ATM FUNI";
-      }
-      enum "atmIma" {
-        value 107;
-        description
-          "ATM IMA";
-      }
-      enum "pppMultilinkBundle" {
-        value 108;
-        description
-          "PPP Multilink Bundle";
-      }
-      enum "ipOverCdlc" {
-        value 109;
-        description
-          "IBM ipOverCdlc";
-      }
-      enum "ipOverClaw" {
-        value 110;
-        description
-          "IBM Common Link Access to Workstn";
-      }
-      enum "stackToStack" {
-        value 111;
-        description
-          "IBM stackToStack";
-      }
-      enum "virtualIpAddress" {
-        value 112;
-        description
-          "IBM VIPA";
-      }
-      enum "mpc" {
-        value 113;
-        description
-          "IBM multi-protocol channel support";
-      }
-      enum "ipOverAtm" {
-        value 114;
-        description
-          "IBM ipOverAtm";
-        reference
-          "RFC 2320 - Definitions of Managed Objects for Classical IP
-                      and ARP Over ATM Using SMIv2 (IPOA-MIB)";
-      }
-      enum "iso88025Fiber" {
-        value 115;
-        description
-          "ISO 802.5j Fiber Token Ring";
-      }
-      enum "tdlc" {
-        value 116;
-        description
-          "IBM twinaxial data link control";
-      }
-      enum "gigabitEthernet" {
-        value 117;
-        status deprecated;
-        description
-          "Obsoleted via RFC3635
-           ethernetCsmacd(6) should be used instead";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "hdlc" {
-        value 118;
-        description
-          "HDLC";
-      }
-      enum "lapf" {
-        value 119;
-        description
-          "LAP F";
-      }
-      enum "v37" {
-        value 120;
-        description
-          "V.37";
-      }
-      enum "x25mlp" {
-        value 121;
-        description
-          "Multi-Link Protocol";
-      }
-      enum "x25huntGroup" {
-        value 122;
-        description
-          "X25 Hunt Group";
-      }
-      enum "transpHdlc" {
-        value 123;
-        description
-          "Transp HDLC";
-      }
-      enum "interleave" {
-        value 124;
-        description
-          "Interleave channel";
-      }
-      enum "fast" {
-        value 125;
-        description
-          "Fast channel";
-      }
-      enum "ip" {
-        value 126;
-        description
-          "IP (for APPN HPR in IP networks)";
-      }
-      enum "docsCableMaclayer" {
-        value 127;
-        description
-          "CATV Mac Layer";
-      }
-      enum "docsCableDownstream" {
-        value 128;
-        description
-          "CATV Downstream interface";
-      }
-      enum "docsCableUpstream" {
-        value 129;
-        description
-          "CATV Upstream interface";
-      }
-      enum "a12MppSwitch" {
-        value 130;
-        description
-          "Avalon Parallel Processor";
-      }
-      enum "tunnel" {
-        value 131;
-        description
-          "Encapsulation interface";
-      }
-      enum "coffee" {
-        value 132;
-        description
-          "coffee pot";
-        reference
-          "RFC 2325 - Coffee MIB";
-      }
-      enum "ces" {
-        value 133;
-        description
-          "Circuit Emulation Service";
-      }
-      enum "atmSubInterface" {
-        value 134;
-        description
-          "ATM Sub Interface";
-      }
-      enum "l2vlan" {
-        value 135;
-        description
-          "Layer 2 Virtual LAN using 802.1Q";
-      }
-      enum "l3ipvlan" {
-        value 136;
-        description
-          "Layer 3 Virtual LAN using IP";
-      }
-      enum "l3ipxvlan" {
-        value 137;
-        description
-          "Layer 3 Virtual LAN using IPX";
-      }
-      enum "digitalPowerline" {
-        value 138;
-        description
-          "IP over Power Lines";
-      }
-      enum "mediaMailOverIp" {
-        value 139;
-        description
-          "Multimedia Mail over IP";
-      }
-      enum "dtm" {
-        value 140;
-        description
-          "Dynamic syncronous Transfer Mode";
-      }
-      enum "dcn" {
-        value 141;
-        description
-          "Data Communications Network";
-      }
-      enum "ipForward" {
-        value 142;
-        description
-          "IP Forwarding Interface";
-      }
-      enum "msdsl" {
-        value 143;
-        description
-          "Multi-rate Symmetric DSL";
-      }
-      enum "ieee1394" {
-        value 144;
-        description
-          "IEEE1394 High Performance Serial Bus";
-      }
-      enum "if-gsn" {
-        value 145;
-        description
-          "HIPPI-6400";
-      }
-      enum "dvbRccMacLayer" {
-        value 146;
-        description
-          "DVB-RCC MAC Layer";
-      }
-      enum "dvbRccDownstream" {
-        value 147;
-        description
-          "DVB-RCC Downstream Channel";
-      }
-      enum "dvbRccUpstream" {
-        value 148;
-        description
-          "DVB-RCC Upstream Channel";
-      }
-      enum "atmVirtual" {
-        value 149;
-        description
-          "ATM Virtual Interface";
-      }
-      enum "mplsTunnel" {
-        value 150;
-        description
-          "MPLS Tunnel Virtual Interface";
-      }
-      enum "srp" {
-        value 151;
-        description
-          "Spatial Reuse Protocol";
-      }
-      enum "voiceOverAtm" {
-        value 152;
-        description
-          "Voice Over ATM";
-      }
-      enum "voiceOverFrameRelay" {
-        value 153;
-        description
-          "Voice Over Frame Relay";
-      }
-      enum "idsl" {
-        value 154;
-        description
-          "Digital Subscriber Loop over ISDN";
-      }
-      enum "compositeLink" {
-        value 155;
-        description
-          "Avici Composite Link Interface";
-      }
-      enum "ss7SigLink" {
-        value 156;
-        description
-          "SS7 Signaling Link";
-      }
-      enum "propWirelessP2P" {
-        value 157;
-        description
-          "Prop. P2P wireless interface";
-      }
-      enum "frForward" {
-        value 158;
-        description
-          "Frame Forward Interface";
-      }
-      enum "rfc1483" {
-        value 159;
-        description
-          "Multiprotocol over ATM AAL5";
-        reference
-          "RFC 1483 - Multiprotocol Encapsulation over ATM
-                      Adaptation Layer 5";
-      }
-      enum "usb" {
-        value 160;
-        description
-          "USB Interface";
-      }
-      enum "ieee8023adLag" {
-        value 161;
-        description
-          "IEEE 802.3ad Link Aggregate";
-      }
-      enum "bgppolicyaccounting" {
-        value 162;
-        description
-          "BGP Policy Accounting";
-      }
-      enum "frf16MfrBundle" {
-        value 163;
-        description
-          "FRF .16 Multilink Frame Relay";
-      }
-      enum "h323Gatekeeper" {
-        value 164;
-        description
-          "H323 Gatekeeper";
-      }
-      enum "h323Proxy" {
-        value 165;
-        description
-          "H323 Voice and Video Proxy";
-      }
-      enum "mpls" {
-        value 166;
-        description
-          "MPLS";
-      }
-      enum "mfSigLink" {
-        value 167;
-        description
-          "Multi-frequency signaling link";
-      }
-      enum "hdsl2" {
-        value 168;
-        description
-          "High Bit-Rate DSL - 2nd generation";
-      }
-      enum "shdsl" {
-        value 169;
-        description
-          "Multirate HDSL2";
-      }
-      enum "ds1FDL" {
-        value 170;
-        description
-          "Facility Data Link 4Kbps on a DS1";
-      }
-      enum "pos" {
-        value 171;
-        description
-          "Packet over SONET/SDH Interface";
-      }
-      enum "dvbAsiIn" {
-        value 172;
-        description
-          "DVB-ASI Input";
-      }
-      enum "dvbAsiOut" {
-        value 173;
-        description
-          "DVB-ASI Output";
-      }
-      enum "plc" {
-        value 174;
-        description
-          "Power Line Communtications";
-      }
-      enum "nfas" {
-        value 175;
-        description
-          "Non Facility Associated Signaling";
-      }
-      enum "tr008" {
-        value 176;
-        description
-          "TR008";
-      }
-      enum "gr303RDT" {
-        value 177;
-        description
-          "Remote Digital Terminal";
-      }
-      enum "gr303IDT" {
-        value 178;
-        description
-          "Integrated Digital Terminal";
-      }
-      enum "isup" {
-        value 179;
-        description
-          "ISUP";
-      }
-      enum "propDocsWirelessMaclayer" {
-        value 180;
-        description
-          "Cisco proprietary Maclayer";
-      }
-      enum "propDocsWirelessDownstream" {
-        value 181;
-        description
-          "Cisco proprietary Downstream";
-      }
-      enum "propDocsWirelessUpstream" {
-        value 182;
-        description
-          "Cisco proprietary Upstream";
-      }
-      enum "hiperlan2" {
-        value 183;
-        description
-          "HIPERLAN Type 2 Radio Interface";
-      }
-      enum "propBWAp2Mp" {
-        value 184;
-        description
-          "PropBroadbandWirelessAccesspt2multipt use of this value
-           for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
-           is deprecated and ieee80216WMAN(237) should be used
-           instead.";
-      }
-      enum "sonetOverheadChannel" {
-        value 185;
-        description
-          "SONET Overhead Channel";
-      }
-      enum "digitalWrapperOverheadChannel" {
-        value 186;
-        description
-          "Digital Wrapper";
-      }
-      enum "aal2" {
-        value 187;
-        description
-          "ATM adaptation layer 2";
-      }
-      enum "radioMAC" {
-        value 188;
-        description
-          "MAC layer over radio links";
-      }
-      enum "atmRadio" {
-        value 189;
-        description
-          "ATM over radio links";
-      }
-      enum "imt" {
-        value 190;
-        description
-          "Inter Machine Trunks";
-      }
-      enum "mvl" {
-        value 191;
-        description
-          "Multiple Virtual Lines DSL";
-      }
-      enum "reachDSL" {
-        value 192;
-        description
-          "Long Reach DSL";
-      }
-      enum "frDlciEndPt" {
-        value 193;
-        description
-          "Frame Relay DLCI End Point";
-      }
-      enum "atmVciEndPt" {
-        value 194;
-        description
-          "ATM VCI End Point";
-      }
-      enum "opticalChannel" {
-        value 195;
-        description
-          "Optical Channel";
-      }
-      enum "opticalTransport" {
-        value 196;
-        description
-          "Optical Transport";
-      }
-      enum "propAtm" {
-        value 197;
-        description
-          "Proprietary ATM";
-      }
-      enum "voiceOverCable" {
-        value 198;
-        description
-          "Voice Over Cable Interface";
-      }
-      enum "infiniband" {
-        value 199;
-        description
-          "Infiniband";
-      }
-      enum "teLink" {
-        value 200;
-        description
-          "TE Link";
-      }
-      enum "q2931" {
-        value 201;
-        description
-          "Q.2931";
-      }
-      enum "virtualTg" {
-        value 202;
-        description
-          "Virtual Trunk Group";
-      }
-      enum "sipTg" {
-        value 203;
-        description
-          "SIP Trunk Group";
-      }
-      enum "sipSig" {
-        value 204;
-        description
-          "SIP Signaling";
-      }
-      enum "docsCableUpstreamChannel" {
-        value 205;
-        description
-          "CATV Upstream Channel";
-      }
-      enum "econet" {
-        value 206;
-        description
-          "Acorn Econet";
-      }
-      enum "pon155" {
-        value 207;
-        description
-          "FSAN 155Mb Symetrical PON interface";
-      }
-      enum "pon622" {
-        value 208;
-        description
-          "FSAN622Mb Symetrical PON interface";
-      }
-      enum "bridge" {
-        value 209;
-        description
-          "Transparent bridge interface";
-      }
-      enum "linegroup" {
-        value 210;
-        description
-          "Interface common to multiple lines";
-      }
-      enum "voiceEMFGD" {
-        value 211;
-        description
-          "voice E&M Feature Group D";
-      }
-      enum "voiceFGDEANA" {
-        value 212;
-        description
-          "voice FGD Exchange Access North American";
-      }
-      enum "voiceDID" {
-        value 213;
-        description
-          "voice Direct Inward Dialing";
-      }
-      enum "mpegTransport" {
-        value 214;
-        description
-          "MPEG transport interface";
-      }
-      enum "sixToFour" {
-        value 215;
-        status deprecated;
-        description
-          "6to4 interface (DEPRECATED)";
-        reference
-          "RFC 4087 - IP Tunnel MIB";
-      }
-      enum "gtp" {
-        value 216;
-        description
-          "GTP (GPRS Tunneling Protocol)";
-      }
-      enum "pdnEtherLoop1" {
-        value 217;
-        description
-          "Paradyne EtherLoop 1";
-      }
-      enum "pdnEtherLoop2" {
-        value 218;
-        description
-          "Paradyne EtherLoop 2";
-      }
-      enum "opticalChannelGroup" {
-        value 219;
-        description
-          "Optical Channel Group";
-      }
-      enum "homepna" {
-        value 220;
-        description
-          "HomePNA ITU-T G.989";
-      }
-      enum "gfp" {
-        value 221;
-        description
-          "Generic Framing Procedure (GFP)";
-      }
-      enum "ciscoISLvlan" {
-        value 222;
-        description
-          "Layer 2 Virtual LAN using Cisco ISL";
-      }
-      enum "actelisMetaLOOP" {
-        value 223;
-        description
-          "Acteleis proprietary MetaLOOP High Speed Link";
-      }
-      enum "fcipLink" {
-        value 224;
-        description
-          "FCIP Link";
-      }
-      enum "rpr" {
-        value 225;
-        description
-          "Resilient Packet Ring Interface Type";
-      }
-      enum "qam" {
-        value 226;
-        description
-          "RF Qam Interface";
-      }
-      enum "lmp" {
-        value 227;
-        description
-          "Link Management Protocol";
-        reference
-          "RFC 4327 - Link Management Protocol (LMP) Management
-                      Information Base (MIB)";
-      }
-      enum "cblVectaStar" {
-        value 228;
-        description
-          "Cambridge Broadband Networks Limited VectaStar";
-      }
-      enum "docsCableMCmtsDownstream" {
-        value 229;
-        description
-          "CATV Modular CMTS Downstream Interface";
-      }
-      enum "adsl2" {
-        value 230;
-        status deprecated;
-        description
-          "Asymmetric Digital Subscriber Loop Version 2
-           (DEPRECATED/OBSOLETED - please use adsl2plus(238)
-           instead)";
-        reference
-          "RFC 4706 - Definitions of Managed Objects for Asymmetric
-                      Digital Subscriber Line 2 (ADSL2)";
-      }
-      enum "macSecControlledIF" {
-        value 231;
-        description
-          "MACSecControlled";
-      }
-      enum "macSecUncontrolledIF" {
-        value 232;
-        description
-          "MACSecUncontrolled";
-      }
-      enum "aviciOpticalEther" {
-        value 233;
-        description
-         "Avici Optical Ethernet Aggregate";
-      }
-      enum "atmbond" {
-        value 234;
-        description
-          "atmbond";
-      }
-      enum "voiceFGDOS" {
-        value 235;
-        description
-          "voice FGD Operator Services";
-      }
-      enum "mocaVersion1" {
-        value 236;
-        description
-          "MultiMedia over Coax Alliance (MoCA) Interface
-           as documented in information provided privately to IANA";
-      }
-      enum "ieee80216WMAN" {
-        value 237;
-        description
-          "IEEE 802.16 WMAN interface";
-      }
-      enum "adsl2plus" {
-        value 238;
-        description
-          "Asymmetric Digital Subscriber Loop Version 2,
-           Version 2 Plus and all variants";
-      }
-      enum "dvbRcsMacLayer" {
-        value 239;
-        description
-          "DVB-RCS MAC Layer";
-        reference
-          "RFC 5728 - The SatLabs Group DVB-RCS MIB";
-      }
-      enum "dvbTdm" {
-        value 240;
-        description
-          "DVB Satellite TDM";
-        reference
-          "RFC 5728 - The SatLabs Group DVB-RCS MIB";
-      }
-      enum "dvbRcsTdma" {
-        value 241;
-        description
-          "DVB-RCS TDMA";
-        reference
-          "RFC 5728 - The SatLabs Group DVB-RCS MIB";
-      }
-      enum "x86Laps" {
-        value 242;
-        description
-          "LAPS based on ITU-T X.86/Y.1323";
-      }
-      enum "wwanPP" {
-        value 243;
-        description
-          "3GPP WWAN";
-      }
-      enum "wwanPP2" {
-        value 244;
-        description
-          "3GPP2 WWAN";
-      }
-      enum "voiceEBS" {
-        value 245;
-        description
-          "voice P-phone EBS physical interface";
-      }
-      enum "ifPwType" {
-        value 246;
-        description
-          "Pseudowire interface type";
-        reference
-          "RFC 5601 - Pseudowire (PW) Management Information Base";
-      }
-      enum "ilan" {
-        value 247;
-        description
-          "Internal LAN on a bridge per IEEE 802.1ap";
-      }
-      enum "pip" {
-        value 248;
-        description
-          "Provider Instance Port on a bridge per IEEE 802.1ah PBB";
-      }
-      enum "aluELP" {
-        value 249;
-        description
-          "Alcatel-Lucent Ethernet Link Protection";
-      }
-      enum "gpon" {
-        value 250;
-        description
-          "Gigabit-capable passive optical networks (G-PON) as per
-           ITU-T G.948";
-      }
-      enum "vdsl2" {
-        value 251;
-        description
-          "Very high speed digital subscriber line Version 2
-           (as per ITU-T Recommendation G.993.2)";
-        reference
-          "RFC 5650 - Definitions of Managed Objects for Very High
-                      Speed Digital Subscriber Line 2 (VDSL2)";
-      }
-      enum "capwapDot11Profile" {
-        value 252;
-        description
-          "WLAN Profile Interface";
-        reference
-          "RFC 5834 - Control and Provisioning of Wireless Access
-                      Points (CAPWAP) Protocol Binding MIB for
-                      IEEE 802.11";
-      }
-      enum "capwapDot11Bss" {
-        value 253;
-        description
-          "WLAN BSS Interface";
-        reference
-          "RFC 5834 - Control and Provisioning of Wireless Access
-                      Points (CAPWAP) Protocol Binding MIB for
-                      IEEE 802.11";
-      }
-      enum "capwapWtpVirtualRadio" {
-        value 254;
-        description
-          "WTP Virtual Radio Interface";
-        reference
-          "RFC 5833 - Control and Provisioning of Wireless Access
-                      Points (CAPWAP) Protocol Base MIB";
-      }
-      enum "bits" {
-        value 255;
-        description
-          "bitsport";
-      }
-      enum "docsCableUpstreamRfPort" {
-        value 256;
-        description
-          "DOCSIS CATV Upstream RF Port";
-      }
-      enum "cableDownstreamRfPort" {
-        value 257;
-        description
-          "CATV downstream RF port";
-      }
-      enum "vmwareVirtualNic" {
-        value 258;
-        description
-          "VMware Virtual Network Interface";
-      }
-      enum "ieee802154" {
-        value 259;
-        description
-          "IEEE 802.15.4 WPAN interface";
-        reference
-          "IEEE 802.15.4-2006";
-      }
-      enum "otnOdu" {
-        value 260;
-        description
-          "OTN Optical Data Unit";
-      }
-      enum "otnOtu" {
-        value 261;
-        description
-          "OTN Optical channel Transport Unit";
-      }
-      enum "ifVfiType" {
-        value 262;
-        description
-          "VPLS Forwarding Instance Interface Type";
-      }
-      enum "g9981" {
-        value 263;
-        description
-          "G.998.1 bonded interface";
-      }
-      enum "g9982" {
-        value 264;
-        description
-          "G.998.2 bonded interface";
-      }
-      enum "g9983" {
-        value 265;
-        description
-          "G.998.3 bonded interface";
-      }
-      enum "aluEpon" {
-        value 266;
-        description
-          "Ethernet Passive Optical Networks (E-PON)";
-      }
-      enum "aluEponOnu" {
-        value 267;
-        description
-          "EPON Optical Network Unit";
-      }
-      enum "aluEponPhysicalUni" {
-        value 268;
-        description
-          "EPON physical User to Network interface";
-      }
-      enum "aluEponLogicalLink" {
-        value 269;
-        description
-          "The emulation of a point-to-point link over the EPON
-           layer";
-      }
-      enum "aluGponOnu" {
-        value 270;
-        description
-          "GPON Optical Network Unit";
-        reference
-          "ITU-T G.984.2";
-      }
-      enum "aluGponPhysicalUni" {
-        value 271;
-        description
-          "GPON physical User to Network interface";
-        reference
-          "ITU-T G.984.2";
-      }
-      enum "vmwareNicTeam" {
-        value 272;
-        description
-          "VMware NIC Team";
-      }
-      // value 273 reserved by IANA
-    }
-    description
-      "This data type is used as the syntax of the 'type'
-       leaf in the 'interface' list in the YANG module
-       ietf-interface.
-
-       The definition of this typedef with the
-       addition of newly assigned values is published
-       periodically by the IANA, in either the Assigned
-       Numbers RFC, or some derivative of it specific to
-       Internet Network Management number assignments.  (The
-       latest arrangements can be obtained by contacting the
-       IANA.)
-
-       Requests for new values should be made to IANA via
-       email (iana&iana.org).";
-    reference
-      "IANA ifType definitions registry.
-       <http://www.iana.org/assignments/smi-numbers>";
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/ietf-interfaces@2013-07-04.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/ietf-interfaces@2013-07-04.yang
deleted file mode 100644 (file)
index 9db753c..0000000
+++ /dev/null
@@ -1,673 +0,0 @@
-module ietf-interfaces {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
-  prefix if;
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-  import iana-if-type {
-    prefix ianaift;
-  }
-
-  organization
-    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/netmod/>
-     WG List:  <mailto:netmod@ietf.org>
-
-     WG Chair: David Kessens
-               <mailto:david.kessens@nsn.com>
-
-     WG Chair: Juergen Schoenwaelder
-               <mailto:j.schoenwaelder@jacobs-university.de>
-
-     Editor:   Martin Bjorklund
-               <mailto:mbj@tail-f.com>";
-
-  description
-    "This module contains a collection of YANG definitions for
-     managing network interfaces.
-
-     Copyright (c) 2013 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC XXXX; see
-     the RFC itself for full legal notices.";
-
-  // RFC Ed.: replace XXXX with actual RFC number and remove this
-  // note.
-
-  // RFC Ed.: update the date below with the date of RFC publication
-  // and remove this note.
-  revision 2013-07-04 {
-    description
-      "Initial revision.";
-    reference
-      "RFC XXXX: A YANG Data Model for Interface Management";
-  }
-
-  /* Typedefs */
-
-  typedef interface-ref {
-    type leafref {
-      path "/if:interfaces/if:interface/if:name";
-    }
-    description
-      "This type is used by data models that need to reference
-       configured interfaces.";
-  }
-
-  typedef interface-state-ref {
-    type leafref {
-      path "/if:interfaces-state/if:interface/if:name";
-    }
-    description
-      "This type is used by data models that need to reference
-       the operationally present interfaces.";
-  }
-
-  /* Features */
-
-  feature arbitrary-names {
-    description
-      "This feature indicates that the device allows user-controlled
-       interfaces to be named arbitrarily.";
-  }
-
-  feature pre-provisioning {
-    description
-      "This feature indicates that the device supports
-       pre-provisioning of interface configuration, i.e., it is
-       possible to configure an interface whose physical interface
-       hardware is not present on the device.";
-  }
-
-  feature if-mib {
-    description
-      "This feature indicates that the device implements IF-MIB.";
-    reference
-      "RFC 2863: The Interfaces Group MIB";
-  }
-
-  /* Data nodes */
-
-  container interfaces {
-    description
-      "Interface configuration parameters.";
-
-    list interface {
-      key "name";
-
-      description
-        "The list of configured interfaces on the device.
-
-         The operational state of an interface is available in the
-         /interfaces-state/interface list.  If the configuration of a
-         system-controlled interface cannot be used by the system
-         (e.g., the interface hardware present does not match the
-         interface type), then the configuration is not applied to
-         the system-controlled interface shown in the
-         /interfaces-state/interface list.  If the the configuration
-         of a user-controlled interface cannot be used by the system,
-         the configured interface is not instantiated in the
-         /interfaces-state/interface list.";
-
-     leaf name {
-        type string;
-        description
-          "The name of the interface.
-
-           A device MAY restrict the allowed values for this leaf,
-           possibly depending on the type of the interface.
-
-           For system-controlled interfaces, this leaf is the
-           device-specific name of the interface.  The 'config false'
-           list /interfaces-state/interface contains the currently
-           existing interfaces on the device.
-
-           If a client tries to create configuration for a
-           system-controlled interface that is not present in the
-           /interfaces-state/interface list, the server MAY reject
-           the request, if the implementation does not support
-           pre-provisioning of interfaces, or if the name refers to
-           an interface that can never exist in the system.  A
-           NETCONF server MUST reply with an rpc-error with the
-           error-tag 'invalid-value' in this case.
-
-           If the device supports pre-provisioning of interface
-           configuration, the feature 'pre-provisioning' is
-           advertised.
-
-           If the device allows arbitrarily named user-controlled
-           interfaces, the feature 'arbitrary-names' is advertised.
-
-           When a configured user-controlled interface is created by
-           the system, it is instantiated with the same name in the
-           /interface-state/interface list.  Since the name in that
-           list MAY be mapped to ifName by an implementation, such an
-           implementation MUST restrict the allowed values for this
-           leaf so that it matches the restrictions of ifName.
-
-           If a NETCONF server that implements this restriction is
-           sent a value that doesn't match the restriction, it MUST
-           reply with an rpc-error with the error-tag
-           'invalid-value'.";
-      }
-
-      leaf description {
-        type string;
-        description
-          "A textual description of the interface.
-
-           This leaf MAY be mapped to ifAlias by an implementation.
-           Such an implementation MUST restrict the allowed values
-           for this leaf so that it matches the restrictions of
-           ifAlias.
-
-           If a NETCONF server that implements this restriction is
-           sent a value that doesn't match the restriction, it MUST
-           reply with an rpc-error with the error-tag
-           'invalid-value'.
-
-           Since ifAlias is defined to be stored in non-volatile
-           storage, the MIB implementation MUST map ifAlias to the
-           value of 'description' in the persistently stored
-           datastore.
-
-           Specifically, if the device supports ':startup', when
-           ifAlias is read the device MUST return the value of
-           'description' in the 'startup' datastore, and when it is
-           written, it MUST be written to the 'running' and 'startup'
-           datastores.  Note that it is up to the implementation if
-           it modifies this single leaf in 'startup', or if it
-           performs an implicit copy-config from 'running' to
-           'startup'.
-
-           If the device does not support ':startup', ifAlias MUST
-           be mapped to the 'description' leaf in the 'running'
-           datastore.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifAlias";
-      }
-
-      leaf type {
-        type ianaift:iana-if-type;
-        mandatory true;
-        description
-          "The type of the interface.
-
-           When an interface entry is created, a server MAY
-           initialize the type leaf with a valid value, e.g., if it
-           is possible to derive the type from the name of the
-           interface.
-
-           If a client tries to set the type of an interface to a
-           value that can never be used by the system, e.g., if the
-           type is not supported or if the type does not match the
-           name of the interface, the server MUST reject the request.
-           A NETCONF server MUST reply with an rpc-error with the
-           error-tag 'invalid-value' in this case.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifType";
-      }
-
-      leaf enabled {
-        type boolean;
-        default "true";
-        description
-          "This leaf contains the configured, desired state of the
-           interface.
-
-           Systems that implement the IF-MIB use the value of this
-           leaf in the 'running' datastore to set
-           IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
-           has been initialized, as described in RFC 2863.
-
-           Changes in this leaf in the 'running' datastore are
-           reflected in ifAdminStatus, but if ifAdminStatus is
-           changed over SNMP, this leaf is not affected.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
-      }
-
-      leaf link-up-down-trap-enable {
-        if-feature if-mib;
-        type enumeration {
-          enum enabled {
-            value 1;
-          }
-          enum disabled {
-            value 2;
-          }
-        }
-        description
-          "Controls whether linkUp/linkDown SNMP notifications
-           should be generated for this interface.
-
-           If this node is not configured, the value 'enabled' is
-           operationally used by the server for interfaces which do
-           not operate on top of any other interface (i.e., there are
-           no 'lower-layer-if' entries), and 'disabled' otherwise.";
-        reference
-          "RFC 2863: The Interfaces Group MIB -
-                     ifLinkUpDownTrapEnable";
-      }
-    }
-  }
-
-  container interfaces-state {
-    config false;
-    description
-      "Data nodes for the operational state of interfaces.";
-
-    list interface {
-      key "name";
-
-      description
-        "The list of interfaces on the device.
-
-         System-controlled interfaces created by the system are
-         always present in this list, whether they are configured or
-         not.";
-
-      leaf name {
-        type string;
-        description
-          "The name of the interface.
-
-           This leaf MAY be mapped to ifName by an implementation.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifName";
-      }
-
-      leaf type {
-        type ianaift:iana-if-type;
-        mandatory true;
-        description
-          "The type of the interface.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifType";
-      }
-
-      leaf admin-status {
-        if-feature if-mib;
-        type enumeration {
-          enum up {
-            value 1;
-            description
-              "Ready to pass packets.";
-          }
-          enum down {
-            value 2;
-            description
-              "Not ready to pass packets and not in some test mode.";
-          }
-          enum testing {
-            value 3;
-            description
-              "In some test mode.";
-          }
-        }
-        mandatory true;
-        description
-          "The desired state of the interface.
-
-           This leaf has the same read semantics as ifAdminStatus.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
-      }
-
-      leaf oper-status {
-        type enumeration {
-          enum up {
-            value 1;
-            description
-              "Ready to pass packets.";
-          }
-          enum down {
-            value 2;
-            description
-              "The interface does not pass any packets.";
-          }
-          enum testing {
-            value 3;
-            description
-              "In some test mode.  No operational packets can
-               be passed.";
-          }
-          enum unknown {
-            value 4;
-            description
-              "Status cannot be determined for some reason.";
-          }
-          enum dormant {
-            value 5;
-            description
-              "Waiting for some external event.";
-          }
-          enum not-present {
-            value 6;
-            description
-              "Some component (typically hardware) is missing.";
-          }
-          enum lower-layer-down {
-            value 7;
-            description
-              "Down due to state of lower-layer interface(s).";
-          }
-        }
-        mandatory true;
-        description
-          "The current operational state of the interface.
-
-           This leaf has the same semantics as ifOperStatus.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifOperStatus";
-      }
-
-      leaf last-change {
-        type yang:date-and-time;
-        description
-          "The time the interface entered its current operational
-           state.  If the current state was entered prior to the
-           last re-initialization of the local network management
-           subsystem, then this node is not present.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifLastChange";
-      }
-
-      leaf if-index {
-        if-feature if-mib;
-        type int32 {
-          range "1..2147483647";
-        }
-        mandatory true;
-        description
-          "The ifIndex value for the ifEntry represented by this
-           interface.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifIndex";
-      }
-
-      leaf phys-address {
-        type yang:phys-address;
-        description
-          "The interface's address at its protocol sub-layer.  For
-          example, for an 802.x interface, this object normally
-          contains a MAC address.  The interface's media-specific
-          modules must define the bit and byte ordering and the
-          format of the value of this object.  For interfaces that do
-          not have such an address (e.g., a serial line), this node
-          is not present.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifPhysAddress";
-      }
-
-      leaf-list higher-layer-if {
-        type interface-state-ref;
-        description
-          "A list of references to interfaces layered on top of this
-           interface.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifStackTable";
-      }
-
-      leaf-list lower-layer-if {
-        type interface-state-ref;
-        description
-          "A list of references to interfaces layered underneath this
-           interface.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifStackTable";
-      }
-
-      leaf speed {
-        type yang:gauge64;
-        units "bits / second";
-        description
-            "An estimate of the interface's current bandwidth in bits
-             per second.  For interfaces that do not vary in
-             bandwidth or for those where no accurate estimation can
-             be made, this node should contain the nominal bandwidth.
-             For interfaces that have no concept of bandwidth, this
-             node is not present.";
-        reference
-          "RFC 2863: The Interfaces Group MIB -
-                     ifSpeed, ifHighSpeed";
-      }
-
-      container statistics {
-        description
-          "A collection of interface-related statistics objects.";
-
-        leaf discontinuity-time {
-          type yang:date-and-time;
-          mandatory true;
-          description
-            "The time on the most recent occasion at which any one or
-             more of this interface's counters suffered a
-             discontinuity.  If no such discontinuities have occurred
-             since the last re-initialization of the local management
-             subsystem, then this node contains the time the local
-             management subsystem re-initialized itself.";
-        }
-
-        leaf in-octets {
-          type yang:counter64;
-          description
-            "The total number of octets received on the interface,
-             including framing characters.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifHCInOctets";
-        }
-        leaf in-unicast-pkts {
-          type yang:counter64;
-          description
-            "The number of packets, delivered by this sub-layer to a
-             higher (sub-)layer, which were not addressed to a
-             multicast or broadcast address at this sub-layer.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
-        }
-        leaf in-broadcast-pkts {
-          type yang:counter64;
-          description
-            "The number of packets, delivered by this sub-layer to a
-             higher (sub-)layer, which were addressed to a broadcast
-             address at this sub-layer.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB -
-                       ifHCInBroadcastPkts";
-        }
-        leaf in-multicast-pkts {
-          type yang:counter64;
-          description
-            "The number of packets, delivered by this sub-layer to a
-             higher (sub-)layer, which were addressed to a multicast
-             address at this sub-layer.  For a MAC layer protocol,
-             this includes both Group and Functional addresses.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB -
-                       ifHCInMulticastPkts";
-        }
-        leaf in-discards {
-          type yang:counter32;
-          description
-            "The number of inbound packets which were chosen to be
-             discarded even though no errors had been detected to
-             prevent their being deliverable to a higher-layer
-             protocol.  One possible reason for discarding such a
-             packet could be to free up buffer space.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifInDiscards";
-        }
-        leaf in-errors {
-          type yang:counter32;
-          description
-            "For packet-oriented interfaces, the number of inbound
-             packets that contained errors preventing them from being
-             deliverable to a higher-layer protocol.  For character-
-             oriented or fixed-length interfaces, the number of
-             inbound transmission units that contained errors
-             preventing them from being deliverable to a higher-layer
-             protocol.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifInErrors";
-        }
-        leaf in-unknown-protos {
-          type yang:counter32;
-          description
-            "For packet-oriented interfaces, the number of packets
-             received via the interface which were discarded because
-             of an unknown or unsupported protocol.  For
-             character-oriented or fixed-length interfaces that
-             support protocol multiplexing the number of transmission
-             units received via the interface which were discarded
-             because of an unknown or unsupported protocol.  For any
-             interface that does not support protocol multiplexing,
-             this counter is not present.
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
-        }
-
-        leaf out-octets {
-          type yang:counter64;
-          description
-            "The total number of octets transmitted out of the
-             interface, including framing characters.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
-        }
-        leaf out-unicast-pkts {
-          type yang:counter64;
-          description
-            "The total number of packets that higher-level protocols
-             requested be transmitted, and which were not addressed
-             to a multicast or broadcast address at this sub-layer,
-             including those that were discarded or not sent.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
-        }
-        leaf out-broadcast-pkts {
-          type yang:counter64;
-          description
-            "The total number of packets that higher-level protocols
-             requested be transmitted, and which were addressed to a
-             broadcast address at this sub-layer, including those
-             that were discarded or not sent.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB -
-                       ifHCOutBroadcastPkts";
-        }
-        leaf out-multicast-pkts {
-          type yang:counter64;
-          description
-            "The total number of packets that higher-level protocols
-             requested be transmitted, and which were addressed to a
-             multicast address at this sub-layer, including those
-             that were discarded or not sent.  For a MAC layer
-             protocol, this includes both Group and Functional
-             addresses.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB -
-                       ifHCOutMulticastPkts";
-        }
-        leaf out-discards {
-          type yang:counter32;
-          description
-            "The number of outbound packets which were chosen to be
-             discarded even though no errors had been detected to
-             prevent their being transmitted.  One possible reason
-             for discarding such a packet could be to free up buffer
-             space.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifOutDiscards";
-        }
-        leaf out-errors {
-          type yang:counter32;
-          description
-            "For packet-oriented interfaces, the number of outbound
-             packets that could not be transmitted because of errors.
-             For character-oriented or fixed-length interfaces, the
-             number of outbound transmission units that could not be
-             transmitted because of errors.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifOutErrors";
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/ietf-yang-types@2013-05-16.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/ietf-yang-types@2013-05-16.yang
deleted file mode 100644 (file)
index 6c82d9d..0000000
+++ /dev/null
@@ -1,471 +0,0 @@
-module ietf-yang-types {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
-  prefix "yang";
-
-  organization
-   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-  contact
-   "WG Web:   <http://tools.ietf.org/wg/netmod/>
-    WG List:  <mailto:netmod@ietf.org>
-
-    WG Chair: David Kessens
-              <mailto:david.kessens@nsn.com>
-
-    WG Chair: Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>
-
-    Editor:   Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>";
-
-  description
-   "This module contains a collection of generally useful derived
-    YANG data types.
-
-    Copyright (c) 2013 IETF Trust and the persons identified as
-    authors of the code.  All rights reserved.
-
-    Redistribution and use in source and binary forms, with or
-    without modification, is permitted pursuant to, and subject
-    to the license terms contained in, the Simplified BSD License
-    set forth in Section 4.c of the IETF Trust's Legal Provisions
-    Relating to IETF Documents
-    (http://trustee.ietf.org/license-info).
-
-    This version of this YANG module is part of RFC XXXX; see
-    the RFC itself for full legal notices.";
-
-  revision 2013-05-16 {
-    description
-     "This revision adds the following new data types:
-      - yang-identifier
-      - hex-string
-      - uuid
-      - dotted-quad";
-    reference
-     "RFC XXXX: Common YANG Data Types";
-  }
-
-  revision 2010-09-24 {
-    description
-     "Initial revision.";
-    reference
-     "RFC 6021: Common YANG Data Types";
-  }
-
-  /*** collection of counter and gauge types ***/
-
-  typedef counter32 {
-    type uint32;
-    description
-     "The counter32 type represents a non-negative integer
-      that monotonically increases until it reaches a
-      maximum value of 2^32-1 (4294967295 decimal), when it
-      wraps around and starts increasing again from zero.
-
-      Counters have no defined 'initial' value, and thus, a
-      single value of a counter has (in general) no information
-      content.  Discontinuities in the monotonically increasing
-      value normally occur at re-initialization of the
-      management system, and at other times as specified in the
-      description of a schema node using this type.  If such
-      other times can occur, for example, the creation of
-      a schema node of type counter32 at times other than
-      re-initialization, then a corresponding schema node
-      should be defined, with an appropriate type, to indicate
-      the last discontinuity.
-
-      The counter32 type should not be used for configuration
-      schema nodes.  A default statement SHOULD NOT be used in
-      combination with the type counter32.
-
-      In the value set and its semantics, this type is equivalent
-      to the Counter32 type of the SMIv2.";
-    reference
-     "RFC 2578: Structure of Management Information Version 2
-                (SMIv2)";
-  }
-
-  typedef zero-based-counter32 {
-    type yang:counter32;
-    default "0";
-    description
-     "The zero-based-counter32 type represents a counter32
-      that has the defined 'initial' value zero.
-
-      A schema node of this type will be set to zero (0) on creation
-      and will thereafter increase monotonically until it reaches
-      a maximum value of 2^32-1 (4294967295 decimal), when it
-      wraps around and starts increasing again from zero.
-
-      Provided that an application discovers a new schema node
-      of this type within the minimum time to wrap, it can use the
-      'initial' value as a delta.  It is important for a management
-      station to be aware of this minimum time and the actual time
-      between polls, and to discard data if the actual time is too
-      long or there is no defined minimum time.
-
-      In the value set and its semantics, this type is equivalent
-      to the ZeroBasedCounter32 textual convention of the SMIv2.";
-    reference
-      "RFC 4502: Remote Network Monitoring Management Information
-                 Base Version 2";
-  }
-
-  typedef counter64 {
-    type uint64;
-    description
-     "The counter64 type represents a non-negative integer
-      that monotonically increases until it reaches a
-      maximum value of 2^64-1 (18446744073709551615 decimal),
-      when it wraps around and starts increasing again from zero.
-
-      Counters have no defined 'initial' value, and thus, a
-      single value of a counter has (in general) no information
-      content.  Discontinuities in the monotonically increasing
-      value normally occur at re-initialization of the
-      management system, and at other times as specified in the
-      description of a schema node using this type.  If such
-      other times can occur, for example, the creation of
-      a schema node of type counter64 at times other than
-      re-initialization, then a corresponding schema node
-      should be defined, with an appropriate type, to indicate
-      the last discontinuity.
-
-      The counter64 type should not be used for configuration
-      schema nodes.  A default statement SHOULD NOT be used in
-      combination with the type counter64.
-
-      In the value set and its semantics, this type is equivalent
-      to the Counter64 type of the SMIv2.";
-    reference
-     "RFC 2578: Structure of Management Information Version 2
-                (SMIv2)";
-  }
-
-  typedef zero-based-counter64 {
-    type yang:counter64;
-    default "0";
-    description
-     "The zero-based-counter64 type represents a counter64 that
-      has the defined 'initial' value zero.
-
-      A schema node of this type will be set to zero (0) on creation
-      and will thereafter increase monotonically until it reaches
-      a maximum value of 2^64-1 (18446744073709551615 decimal),
-      when it wraps around and starts increasing again from zero.
-
-      Provided that an application discovers a new schema node
-      of this type within the minimum time to wrap, it can use the
-      'initial' value as a delta.  It is important for a management
-      station to be aware of this minimum time and the actual time
-      between polls, and to discard data if the actual time is too
-      long or there is no defined minimum time.
-
-      In the value set and its semantics, this type is equivalent
-      to the ZeroBasedCounter64 textual convention of the SMIv2.";
-    reference
-     "RFC 2856: Textual Conventions for Additional High Capacity
-                Data Types";
-  }
-
-  typedef gauge32 {
-    type uint32;
-    description
-     "The gauge32 type represents a non-negative integer, which
-      may increase or decrease, but shall never exceed a maximum
-      value, nor fall below a minimum value.  The maximum value
-      cannot be greater than 2^32-1 (4294967295 decimal), and
-      the minimum value cannot be smaller than 0.  The value of
-      a gauge32 has its maximum value whenever the information
-      being modeled is greater than or equal to its maximum
-      value, and has its minimum value whenever the information
-      being modeled is smaller than or equal to its minimum value.
-      If the information being modeled subsequently decreases
-      below (increases above) the maximum (minimum) value, the
-      gauge32 also decreases (increases).
-
-      In the value set and its semantics, this type is equivalent
-      to the Gauge32 type of the SMIv2.";
-    reference
-     "RFC 2578: Structure of Management Information Version 2
-                (SMIv2)";
-  }
-
-  typedef gauge64 {
-    type uint64;
-    description
-     "The gauge64 type represents a non-negative integer, which
-      may increase or decrease, but shall never exceed a maximum
-      value, nor fall below a minimum value.  The maximum value
-      cannot be greater than 2^64-1 (18446744073709551615), and
-      the minimum value cannot be smaller than 0.  The value of
-      a gauge64 has its maximum value whenever the information
-      being modeled is greater than or equal to its maximum
-      value, and has its minimum value whenever the information
-      being modeled is smaller than or equal to its minimum value.
-      If the information being modeled subsequently decreases
-      below (increases above) the maximum (minimum) value, the
-      gauge64 also decreases (increases).
-
-      In the value set and its semantics, this type is equivalent
-      to the CounterBasedGauge64 SMIv2 textual convention defined
-      in RFC 2856";
-    reference
-     "RFC 2856: Textual Conventions for Additional High Capacity
-                Data Types";
-  }
-
-  /*** collection of identifier related types ***/
-
-  typedef object-identifier {
-    type string {
-      pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
-            + '(\.(0|([1-9]\d*)))*';
-    }
-    description
-     "The object-identifier type represents administratively
-      assigned names in a registration-hierarchical-name tree.
-
-      Values of this type are denoted as a sequence of numerical
-      non-negative sub-identifier values.  Each sub-identifier
-      value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
-      are separated by single dots and without any intermediate
-      whitespace.
-
-      The ASN.1 standard restricts the value space of the first
-      sub-identifier to 0, 1, or 2.  Furthermore, the value space
-      of the second sub-identifier is restricted to the range
-      0 to 39 if the first sub-identifier is 0 or 1.  Finally,
-      the ASN.1 standard requires that an object identifier
-      has always at least two sub-identifier.  The pattern
-      captures these restrictions.
-
-      Although the number of sub-identifiers is not limited,
-      module designers should realize that there may be
-      implementations that stick with the SMIv2 limit of 128
-      sub-identifiers.
-
-      This type is a superset of the SMIv2 OBJECT IDENTIFIER type
-      since it is not restricted to 128 sub-identifiers.  Hence,
-      this type SHOULD NOT be used to represent the SMIv2 OBJECT
-      IDENTIFIER type, the object-identifier-128 type SHOULD be
-      used instead.";
-    reference
-     "ISO9834-1: Information technology -- Open Systems
-      Interconnection -- Procedures for the operation of OSI
-      Registration Authorities: General procedures and top
-      arcs of the ASN.1 Object Identifier tree";
-  }
-
-  typedef object-identifier-128 {
-    type object-identifier {
-      pattern '\d*(\.\d*){1,127}';
-    }
-    description
-     "This type represents object-identifiers restricted to 128
-      sub-identifiers.
-
-      In the value set and its semantics, this type is equivalent
-      to the OBJECT IDENTIFIER type of the SMIv2.";
-    reference
-     "RFC 2578: Structure of Management Information Version 2
-                (SMIv2)";
-  }
-
-  typedef yang-identifier {
-    type string {
-      length "1..max";
-      pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
-      pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
-    }
-    description
-      "A YANG identifier string as defined in RFC 6020, page 163.
-       An identifier must start with an alphabetic character or
-       an underscore followed by an arbitrary sequence of
-       alphabetic or numeric characters, underscores, hyphens
-       or dots.
-
-       A YANG identifier MUST NOT start with any possible
-       combination of the lower-case or upper-case character
-       sequence 'xml'.";
-    reference
-      "RFC 6020: YANG - A Data Modeling Language for the Network
-                 Configuration Protocol (NETCONF)";
-  }
-
-  /*** collection of date and time related types ***/
-
-  typedef date-and-time {
-    type string {
-      pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
-            + '(Z|[\+\-]\d{2}:\d{2})';
-    }
-    description
-     "The date-and-time type is a profile of the ISO 8601
-      standard for representation of dates and times using the
-      Gregorian calendar.  The profile is defined by the
-      date-time production in Section 5.6 of RFC 3339.
-
-      The date-and-time type is compatible with the dateTime XML
-      schema type with the following notable exceptions:
-
-      (a) The date-and-time type does not allow negative years.
-
-      (b) The date-and-time time-offset -00:00 indicates an unknown
-          time zone (see RFC 3339) while -00:00 and +00:00 and Z all
-          represent the same time zone in dateTime.
-
-      (c) The canonical format (see below) of data-and-time values
-          differs from the canonical format used by the dateTime XML
-          schema type, which requires all times to be in UTC using
-          the time-offset 'Z'.
-
-      This type is not equivalent to the DateAndTime textual
-      convention of the SMIv2 since RFC 3339 uses a different
-      separator between full-date and full-time and provides
-      higher resolution of time-secfrac.
-      The canonical format for date-and-time values with a known time
-      zone uses a numeric time zone offset that is calculated using
-      the device's configured known offset to UTC time.  A change of
-      the device's offset to UTC time will cause date-and-time values
-      to change accordingly.  Such changes might happen periodically
-      in case a server follows automatically daylight saving time
-      (DST) time zone offset changes.  The canonical format for
-      date-and-time values with an unknown time zone (usually
-      referring to the notion of local time) uses the time-offset
-      -00:00.";
-    reference
-     "RFC 3339: Date and Time on the Internet: Timestamps
-      RFC 2579: Textual Conventions for SMIv2
-      XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
-  }
-
-  typedef timeticks {
-    type uint32;
-    description
-     "The timeticks type represents a non-negative integer that
-      represents the time, modulo 2^32 (4294967296 decimal), in
-      hundredths of a second between two epochs.  When a schema
-      node is defined that uses this type, the description of
-      the schema node identifies both of the reference epochs.
-
-      In the value set and its semantics, this type is equivalent
-      to the TimeTicks type of the SMIv2.";
-    reference
-     "RFC 2578: Structure of Management Information Version 2
-                (SMIv2)";
-  }
-
-  typedef timestamp {
-    type yang:timeticks;
-    description
-     "The timestamp type represents the value of an associated
-      timeticks schema node at which a specific occurrence
-      happened. The specific occurrence must be defined in the
-      description of any schema node defined using this type.  When
-      the specific occurrence occurred prior to the last time the
-      associated timeticks attribute was zero, then the timestamp
-      value is zero.  Note that this requires all timestamp values
-      to be reset to zero when the value of the associated timeticks
-      attribute reaches 497+ days and wraps around to zero.
-
-      The associated timeticks schema node must be specified
-      in the description of any schema node using this type.
-      In the value set and its semantics, this type is equivalent
-      to the TimeStamp textual convention of the SMIv2.";
-    reference
-     "RFC 2579: Textual Conventions for SMIv2";
-  }
-
-  /*** collection of generic address types ***/
-
-  typedef phys-address {
-    type string {
-      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-    }
-    description
-     "Represents media- or physical-level addresses represented
-      as a sequence octets, each octet represented by two hexadecimal
-      numbers.  Octets are separated by colons.  The canonical
-      representation uses lowercase characters.
-
-      In the value set and its semantics, this type is equivalent
-      to the PhysAddress textual convention of the SMIv2.";
-    reference
-     "RFC 2579: Textual Conventions for SMIv2";
-  }
-
-  typedef mac-address {
-    type string {
-      pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
-    }
-    description
-     "The mac-address type represents an IEEE 802 MAC address.
-      The canonical representation uses lowercase characters.
-
-      In the value set and its semantics, this type is equivalent
-      to the MacAddress textual convention of the SMIv2.";
-    reference
-     "IEEE 802: IEEE Standard for Local and Metropolitan Area
-                Networks: Overview and Architecture
-      RFC 2579: Textual Conventions for SMIv2";
-  }
-
-  /*** collection of XML specific types ***/
-
-  typedef xpath1.0 {
-    type string;
-    description
-     "This type represents an XPATH 1.0 expression.
-
-      When a schema node is defined that uses this type, the
-      description of the schema node MUST specify the XPath
-      context in which the XPath expression is evaluated.";
-    reference
-     "XPATH: XML Path Language (XPath) Version 1.0";
-  }
-
-  /*** collection of string types ***/
-
-  typedef hex-string {
-    type string {
-      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-    }
-    description
-     "A hexadecimal string with octets represented as hex digits
-      separated by colons.  The canonical representation uses
-      lowercase characters.";
-  }
-
-  typedef uuid {
-    type string {
-      pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
-            + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
-    }
-    description
-     "A Universally Unique IDentifier in the string representation
-      defined in RFC 4122.  The canonical representation uses
-      lowercase characters.
-
-      The following is an example of a UUID in string representation:
-      f81d4fae-7dec-11d0-a765-00a0c91e6bf6
-      ";
-    reference
-     "RFC 4122: A Universally Unique IDentifier (UUID) URN
-                Namespace";
-  }
-
-  typedef dotted-quad {
-    type string {
-      pattern
-        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-      + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
-    }
-    description
-      "An unsigned 32-bit number expressed in the dotted-quad
-       notation, i.e., four octets written as decimal numbers
-       and separated with the '.' (full stop) character.";
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/sal-remote@2014-01-14.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/sal-remote@2014-01-14.yang
deleted file mode 100644 (file)
index d12e252..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-module sal-remote {
-
-       yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote";
-    prefix "sal-remote";
-    
-
-    organization "Cisco Systems, Inc.";
-    contact "Martin Bobak <mbobak@cisco.com>";
-
-    description
-          "This module contains the definition of methods related to
-           sal remote model.
-
-           Copyright (c)2013 Cisco Systems, Inc. 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";
-
-    revision "2014-01-14" {
-        description
-            "Initial revision";
-    }
-
-
-     typedef q-name {
-       type string;
-       reference
-         "http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#QName";
-     }
-
-    rpc create-data-change-event-subscription {
-        input {
-            leaf path {
-                type instance-identifier;
-                description "Subtree path. ";
-            }
-         }
-         output {
-            leaf stream-name {
-                type string;
-                description "Notification stream name.";
-            }
-         }
-    }
-
-    notification data-changed-notification {
-        description "Data change notification.";
-        list data-change-event {
-            key path;
-            leaf path {
-                type instance-identifier;
-            }
-            leaf store {
-                type enumeration {
-                    enum config;
-                    enum operation;
-                }
-            }
-            leaf operation {
-                type enumeration {
-                    enum created;
-                    enum updated;
-                    enum deleted;
-                }
-            }
-            anyxml data{
-                description "DataObject ";
-            }
-         }
-    }
-
-    rpc create-notification-stream {
-        input {
-            leaf-list notifications {
-                type q-name;
-                description "Notification QNames";
-            }
-         }
-        output {
-            leaf notification-stream-identifier {
-                type string;
-                description "Unique notification stream identifier, in which notifications will be propagated";
-            }
-        }
-    }
-
-    rpc begin-transaction{
-        output{
-            anyxml data-modification-transaction{
-                description "DataModificationTransaction xml";
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/simple-nodes.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/simple-nodes.yang
deleted file mode 100644 (file)
index 0dec051..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-module simple-nodes {
-    yang-version 1;
-    namespace "urn:opendaylight:simple-nodes";
-    prefix "sn";
-
-    description
-        "test file containing yang data nodes";   
-
-    revision "2013-07-30" {
-        description
-            "Initial revision.";
-        reference "will be defined";
-    }
-    
-    container users {
-        leaf user {
-            type string;
-        }
-        
-        leaf group {
-            type string;
-        }
-    }
-
-    list user {
-         key "name class";
-         leaf name {
-             type string;
-         }
-         leaf full-name {
-             type string;
-         }
-         leaf class {
-             type string;
-         }
-    }
-    
-    list userWithoutClass {
-        key "name";
-        leaf name {
-            type string;
-        }
-        leaf full-name {
-            type string;
-        }
-    }
-    
-     container food {
-       choice snack {
-           case sports-arena {
-               leaf pretzel {
-                   type string;
-               }
-               leaf beer {
-                   type string;
-               }
-               container nonalcoholic {
-                   leaf beer {
-                       type string;
-                   }
-               }
-           }
-           case late-night {
-               leaf chocolate {
-                   type enumeration {
-                       enum dark;
-                       enum milk;
-                       enum first-available;
-                   }
-               }
-           }
-       }
-    }
-    
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/toaster.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/full-versions/yangs/toaster.yang
deleted file mode 100644 (file)
index 571ed0c..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-  module toaster {
-
-    yang-version 1;
-
-    namespace
-      "http://netconfcentral.org/ns/toaster";
-
-    prefix toast;
-
-    organization "Netconf Central";
-
-    contact
-      "Andy Bierman <andy@netconfcentral.org>";
-
-    description
-      "YANG version of the TOASTER-MIB.";
-
-    revision "2009-11-20" {
-      description
-        "Toaster module in progress.";
-    }
-
-
-    identity toast-type {
-      description
-        "Base for all bread types supported by the toaster.
-           New bread types not listed here nay be added in the 
-           future.";
-    }
-
-    identity white-bread {
-      base toast:toast-type;
-      description "White bread.";
-    }
-
-    identity wheat-bread {
-      base toast-type;
-      description "Wheat bread.";
-    }
-
-    identity wonder-bread {
-      base toast-type;
-      description "Wonder bread.";
-    }
-
-    identity frozen-waffle {
-      base toast-type;
-      description "Frozen waffle.";
-    }
-
-    identity frozen-bagel {
-      base toast-type;
-      description "Frozen bagel.";
-    }
-
-    identity hash-brown {
-      base toast-type;
-      description "Hash browned potatos.";
-    }
-
-    typedef DisplayString {
-      type string {
-        length "0 .. 255";
-      }
-      description
-        "YANG version of the SMIv2 DisplayString TEXTUAL-CONVENTION.";
-      reference
-        "RFC 2579, section 2.";
-
-    }
-
-    container toaster {
-      presence
-        "Indicates the toaster service is available";
-      description
-        "Top-level container for all toaster database objects.";
-      leaf toasterManufacturer {
-        type DisplayString;
-        config false;
-        mandatory true;
-        description
-          "The name of the toaster's manufacturer. For instance, 
-                Microsoft Toaster.";
-      }
-
-      leaf toasterModelNumber {
-        type DisplayString;
-        config false;
-        mandatory true;
-        description
-          "The name of the toaster's model. For instance,
-               Radiant Automatic.";
-      }
-
-      leaf toasterStatus {
-        type enumeration {
-          enum "up" {
-            value 1;
-            description
-              "The toaster knob position is up.
-                      No toast is being made now.";
-          }
-          enum "down" {
-            value 2;
-            description
-              "The toaster knob position is down.
-                      Toast is being made now.";
-          }
-        }
-        config false;
-        mandatory true;
-        description
-          "This variable indicates the current state of 
-               the toaster.";
-      }
-    }  // container toaster
-
-    rpc make-toast {
-      description
-        "Make some toast.
-           The toastDone notification will be sent when 
-           the toast is finished.
-           An 'in-use' error will be returned if toast
-           is already being made.
-           A 'resource-denied' error will be returned 
-           if the toaster service is disabled.";
-      input {
-        leaf toasterDoneness {
-          type uint32 {
-            range "1 .. 10";
-          }
-          default '5';
-          description
-            "This variable controls how well-done is the 
-                   ensuing toast. It should be on a scale of 1 to 10.
-                   Toast made at 10 generally is considered unfit 
-                   for human consumption; toast made at 1 is warmed 
-                   lightly.";
-        }
-
-        leaf toasterToastType {
-          type identityref {
-            base toast:toast-type;
-          }
-          default 'wheat-bread';
-          description
-            "This variable informs the toaster of the type of 
-                   material that is being toasted. The toaster 
-                   uses this information, combined with 
-                   toasterDoneness, to compute for how 
-                   long the material must be toasted to achieve 
-                   the required doneness.";
-        }
-      }
-    }  // rpc make-toast
-
-    rpc testOutput { 
-        output {
-            leaf textOut {
-                type string;
-            }        
-        }
-    }
-
-    rpc cancel-toast {
-      description
-        "Stop making toast, if any is being made.
-           A 'resource-denied' error will be returned 
-           if the toaster service is disabled.";
-    }  // rpc cancel-toast
-
-    notification toastDone {
-      description
-        "Indicates that the toast in progress has completed.";
-      leaf toastStatus {
-        type enumeration {
-          enum "done" {
-            value 0;
-            description "The toast is done.";
-          }
-          enum "cancelled" {
-            value 1;
-            description
-              "The toast was cancelled.";
-          }
-          enum "error" {
-            value 2;
-            description
-              "The toaster service was disabled or
-                     the toaster is broken.";
-          }
-        }
-        description
-          "Indicates the final toast status";
-      }
-    }  // notification toastDone
-  }  // module toaster
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/json_augment_choice_container.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/json_augment_choice_container.json
deleted file mode 100644 (file)
index e64e00e..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "augment-module:case-choice-case-container1": {
-    "augment-module:case-choice-case-leaf1": "stryng"
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/json_augment_container.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/json_augment_container.json
deleted file mode 100644 (file)
index e2532f2..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "augment-module:cont-augment": {
-    "augment-module:leaf1": "stryng"
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/json_sub_container.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/json_sub_container.json
deleted file mode 100644 (file)
index 22a1d15..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "instance-identifier-module:cont1": {
-        "augment-module-leaf-list:lf11" : "/instance-identifier-module:cont/instance-identifier-module:cont1/augment-module-leaf-list:lflst11[.=\"lflst11_1\"]"
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/jsondata.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/jsondata.json
deleted file mode 100644 (file)
index f616a8a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-    "instance-identifier-module:cont": {
-        "cont1": {
-            "augment-module:lst11": [ 
-                {
-                    "keyvalue111":"value1",
-                    "keyvalue112":"value2",
-                    "augment-augment-module:lf111":"/instance-identifier-module:cont/instance-identifier-module:cont1/augment-module:lst11[augment-module:keyvalue111=\"value1\"][augment-module:keyvalue112=\"value2\"]/augment-augment-module:lf112",
-                    "augment-augment-module:lf112":"lf112 value"
-                }
-            ]
-        }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/jsondata_leaf_list.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/json/jsondata_leaf_list.json
deleted file mode 100644 (file)
index 63be4b9..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "instance-identifier-module:cont": {
-        "cont1": {
-            "augment-module-leaf-list:lf11" : "/instance-identifier-module:cont/instance-identifier-module:cont1/augment-module-leaf-list:lflst11[.=\"lflst11_1\"]"
-        }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xml_augment_choice_container.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xml_augment_choice_container.xml
deleted file mode 100644 (file)
index d73b300..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<case-choice-case-container1 xmlns="augment:module">
-    <case-choice-case-leaf1>stryng</case-choice-case-leaf1>
-</case-choice-case-container1>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xml_augment_container.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xml_augment_container.xml
deleted file mode 100644 (file)
index 6b35e9e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<cont-augment xmlns="augment:module">
-    <leaf1>stryng</leaf1>
-</cont-augment>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xml_sub_container.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xml_sub_container.xml
deleted file mode 100644 (file)
index f76e08d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<cont1 xmlns="instance:identifier:module">
-    <lflst11 xmlns="augment:module:leaf:list">lflst11_1</lflst11>
-    <lflst11 xmlns="augment:module:leaf:list">lflst11_2</lflst11>
-    <lflst11 xmlns="augment:module:leaf:list">lflst11_3</lflst11>
-    <lf11 xmlns:a="instance:identifier:module" xmlns:b="augment:module:leaf:list" xmlns="augment:module:leaf:list">/a:cont/a:cont1/b:lflst11[.="lflst11_1"]</lf11>
-</cont1>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xmldata.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xmldata.xml
deleted file mode 100644 (file)
index bd558fb..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<cont xmlns="instance:identifier:module">
-    <cont1>
-        <lst11 xmlns="augment:module" xmlns:c="augment:augment:module">
-            <keyvalue111>value1</keyvalue111>
-            <keyvalue112>value2</keyvalue112>
-            <lf111 xmlns="augment:augment:module" xmlns:a="instance:identifier:module" xmlns:b="augment:module" >/a:cont/a:cont1/b:lst11[b:keyvalue111="value1"][b:keyvalue112="value2"]/c:lf112</lf111>
-            <lf112 xmlns="augment:augment:module">lf112 value</lf112>
-        </lst11>
-    </cont1>
-</cont>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xmldata_leaf_list.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/xml/xmldata_leaf_list.xml
deleted file mode 100644 (file)
index 00d58c2..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<cont xmlns="instance:identifier:module">
-    <cont1>
-        <lflst11 xmlns="augment:module:leaf:list">lflst11_1</lflst11>
-        <lflst11 xmlns="augment:module:leaf:list">lflst11_2</lflst11>
-        <lflst11 xmlns="augment:module:leaf:list">lflst11_3</lflst11>
-        <lf11 xmlns:a="instance:identifier:module" xmlns:b="augment:module:leaf:list" xmlns="augment:module:leaf:list">/a:cont/a:cont1/b:lflst11[.="lflst11_1"]</lf11>
-    </cont1>
-</cont>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/yang/augment-augment-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/yang/augment-augment-module.yang
deleted file mode 100644 (file)
index 546111c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-module augment-augment-module {
-  namespace "augment:augment:module";  
-
-  prefix "aamodule";
-  
-  import augment-module {prefix amodule; revision-date 2014-01-17;}
-  import instance-identifier-module {prefix imodule; revision-date 2014-01-17;}
-   
-  revision 2014-01-17 {    
-  }
-  
-       augment "/imodule:cont/imodule:cont1/amodule:lst11" {
-        leaf lf111 {
-            type instance-identifier;
-        }
-        leaf lf112 {
-            type string;
-        }
-       }
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/yang/augment-module-leaf-list.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/yang/augment-module-leaf-list.yang
deleted file mode 100644 (file)
index 54c305b..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module augment-module-leaf-list {
-  namespace "augment:module:leaf:list";  
-
-  prefix "amodulelflst";  
-  
-  import instance-identifier-module {prefix imodule; revision-date 2014-01-17;}
-   
-  revision 2014-01-27 {    
-  }
-  
-    augment "/imodule:cont/imodule:cont1" {
-       leaf-list lflst11 {
-           type string;
-       }       
-       leaf lf11 {
-            type instance-identifier;
-       }
-    }   
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/yang/augment-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/yang/augment-module.yang
deleted file mode 100644 (file)
index c918ef9..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-module augment-module {
-  namespace "augment:module";
-
-  prefix "amodule";
-
-  import instance-identifier-module {prefix imodule; revision-date 2014-01-17;}
-
-  revision 2014-01-17 {
-  }
-
-       augment "/imodule:cont/imodule:cont1" {
-          list lst11 {
-              key "keyvalue111 keyvalue112";
-              leaf keyvalue111 {
-                  type string;
-              }
-              leaf keyvalue112 {
-                  type string;
-              }
-          }
-       }
-
-    augment "/imodule:cont" {
-           container cont-augment {
-            leaf leaf1 {
-                type string;
-            }
-        }
-       }
-
-    augment "/imodule:cont" {
-        choice augment-choice1 {
-            case case1 {
-                container case-container1 {
-                    leaf case-leaf1 {
-                        type string;
-                    }
-                }
-            }
-
-            case case2 {
-                container case-container2 {
-                    leaf case-leaf2 {
-                        type string;
-                    }
-                }
-            }
-        }
-    }
-
-    augment "/imodule:cont/augment-choice1/case1" {
-        choice augment-choice2 {
-            case case11 {
-                container case-choice-case-container1 {
-                    leaf case-choice-case-leaf1 {
-                        type string;
-                    }
-                }
-            }
-        }
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/yang/instance-identifier-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/instanceidentifier/yang/instance-identifier-module.yang
deleted file mode 100644 (file)
index 7a95a5f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-module instance-identifier-module {
-  namespace "instance:identifier:module";  
-
-  prefix "iimodule";
-  revision 2014-01-17 {    
-  }
-
-    container cont {
-        container cont1 {
-        }
-    }
-  
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/invoke-rpc-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/invoke-rpc-module.yang
deleted file mode 100644 (file)
index ad4883c..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-module invoke-rpc-module {
-  namespace "invoke:rpc:module";  
-
-  prefix "inrpcmod";
-         
-  revision 2013-12-3 {
-  
-  }
-
-  rpc rpc-test {
-      input {
-          container cont {
-              leaf lf {
-                  type string;
-              }
-          }
-      }
-      output {
-          container cont-out {
-              leaf lf-out {
-                  type string;
-              }
-          }
-      }
-  }  
-
-  rpc rpc-noop {
-  }
-
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/json/rpc-input.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/json/rpc-input.json
deleted file mode 100644 (file)
index 2ba5f27..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "invoke-rpc-module:input" : {
-           "cont" : {
-               "lf" : "lf-test"
-           }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/json/rpc-output.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/json/rpc-output.json
deleted file mode 100644 (file)
index 107f4c7..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "invoke-rpc-module:output" : {
-        "cont-out" : {
-            "lf-out" : "lf-test"
-        }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/xml/rpc-input.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/xml/rpc-input.xml
deleted file mode 100644 (file)
index 48fb557..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<input xmlns="invoke:rpc:module">
-    <cont>
-        <lf>lf-test</lf>
-    </cont>
-</input>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/xml/rpc-output.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/invoke-rpc/xml/rpc-output.xml
deleted file mode 100644 (file)
index 3b11eb8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<output xmlns="invoke:rpc:module">
-    <cont-out>
-        <lf-out>lf-test</lf-out>
-    </cont-out>
-</output>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/array-with-null.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/array-with-null.json
deleted file mode 100644 (file)
index 995b3c6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-       "array-with-null-yang:cont": {
-               "lf":null
-       }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/empty-data.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/empty-data.json
deleted file mode 100644 (file)
index a6ad7f6..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-       "cont": {       
-               "lflst1":[],
-               "lflst2":[45]           
-       }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/empty-data1.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/empty-data1.json
deleted file mode 100644 (file)
index b886fc9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "cont": {
-        "lf":
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/identityref/identity-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/identityref/identity-module.yang
deleted file mode 100644 (file)
index 30890bf..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module identity-module {
-  namespace "identity:module";  
-
-  prefix "idemod";
-  revision 2013-12-2 {    
-  }
-  
-       identity iden {         
-       }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/identityref/identityref-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/identityref/identityref-module.yang
deleted file mode 100644 (file)
index b90b533..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-module identityref-module {
-  namespace "identityref:module";  
-
-  prefix "iderefmod";
-  
-  import identity-module {prefix idemo; revision-date 2013-12-2;}
-   
-  revision 2013-12-2 {    
-  }
-  
-  identity iden_local {
-  }
-  
-       container cont {
-          container cont1 {
-               leaf lf11 {
-                       type identityref {
-                               base "idemo:iden";
-                       }
-               }
-               leaf lf12 {
-                       type identityref {
-                               base "iden_local";
-                       }
-               }
-               leaf lf13 {
-                       type identityref {
-                               base "iden_local";
-                       }
-               }
-               leaf lf14 {
-                       type identityref {
-                               base "iden_local";
-                       }
-               }
-               }
-       }
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/identityref/json/data.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/identityref/json/data.json
deleted file mode 100644 (file)
index 88cd6b4..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-    "identityref:cont":{
-        "cont1":{
-            "lf11":"identity-module:iden",
-            "lf12":"identityref-module:iden_local",              
-            "identityref-module:lf13":"identityref-module:iden_local",
-            "identityref-module:lf14":"identity-module:iden"  
-        }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/invalid-uri-character-in-value.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/invalid-uri-character-in-value.json
deleted file mode 100644 (file)
index 8281546..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "cont":{
-       "lf1":"module<Name:value lf1",
-       "lf2":"module>Name:value lf2"
-       }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/leafref/augment-leafref-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/leafref/augment-leafref-module.yang
deleted file mode 100644 (file)
index 766cc81..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-module augment-leafref-module {
-  namespace "augment:leafref:module";  
-
-  prefix "auglfrfmo";
-  revision 2014-12-16 {    
-  }
-
-
-  typedef leafreftype {
-    type leafref {
-        path "/cont/lf3";
-    
-    }
-  }
-  
-  container cont {
-    leaf lf3 {
-        type string;
-    }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/leafref/json/data.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/leafref/json/data.json
deleted file mode 100644 (file)
index df5bcef..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "leafref-module:cont":{
-        "lf1":121,
-        "lf2":121,
-        "lf4":"pcc://39.39.39.39"
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/leafref/leafref-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/leafref/leafref-module.yang
deleted file mode 100644 (file)
index 9b124a0..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-module leafref-module {
-  namespace "leafref:module";  
-
-  prefix "lfrfmo";
-  
-  import augment-leafref-module {prefix augleafref; revision-date 2014-12-16;}
-  revision 2013-11-18 {    
-  }
-
-    container cont {
-        leaf lf1 {
-            type int32;
-        }
-        leaf lf2 {
-            type leafref {
-                path "/cont/lf1"; 
-            }
-        }
-        leaf lf4 {
-            type augleafref:leafreftype;
-        }
-    }
-  
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/multiple-items-in-list.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/multiple-items-in-list.json
deleted file mode 100644 (file)
index 7702b88..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-       "multiple-items:lst":[
-               {
-                       "lst1": [
-                               {
-                                       "lf11":"lf11_1"
-                               },
-                               {
-                                       "lflst11":[
-                                               45
-                                       ]
-                               },
-                               {
-                                       "cont11":{
-                                       }
-                               },
-                               {
-                                       "lst11":[
-                                       {
-                                               }
-                                       ]
-                               }
-                       ]
-               }
-       ]
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/multiple-leaflist-items.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/multiple-leaflist-items.json
deleted file mode 100644 (file)
index d8f0ce6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-       "multiple-leaflist:lst": {
-               "lflst1":[45,55,66]
-       }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-container-yang/simple-container.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-container-yang/simple-container.yang
deleted file mode 100644 (file)
index 493101c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module simple-container-yang {
-  namespace "simple:container:yang";  
-
-  prefix "smpdtp";
-  revision 2013-11-12 {    
-  }
-  
-  container cont {
-       container cont1 {
-       }
-       list lst1 {
-       }
-       leaf-list lflst1 {
-               type string;
-       }
-       leaf lf1 {
-               type string;
-       }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-container.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-container.json
deleted file mode 100644 (file)
index 1be4149..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-       "cont":{
-               "cont1":{
-               },
-               "lst1": [
-                       {
-                       }
-               ],
-               "lflst1":[
-                       "lflst1_1",
-                       "lflst1_2"
-               ],
-               "lf1":"lf1"
-       }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list-yang/1/simple-list1.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list-yang/1/simple-list1.yang
deleted file mode 100644 (file)
index 0ce8ea4..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module simple-list-yang1 {
-  namespace "simple:list:yang1";  
-
-  prefix "smplstyg";
-  revision 2013-11-12 {    
-  }
-  
-  list lst {
-       container cont1 {
-       }
-       list lst1 {
-       }
-       leaf-list lflst1 {
-               type string;
-       }
-       leaf lf1 {
-               type string;
-       }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list-yang/2/simple-list2.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list-yang/2/simple-list2.yang
deleted file mode 100644 (file)
index 0872a47..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module simple-list-yang2 {
-  namespace "simple:list:yang2";  
-
-  prefix "smplstyg";
-  revision 2013-11-12 {    
-  }
-  
-  list lst {
-       container cont1 {
-       }
-       list lst1 {
-       }
-       leaf-list lflst1 {
-               type string;
-       }
-       leaf lf1 {
-               type string;
-       }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list-yang/3/multiple-items.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list-yang/3/multiple-items.yang
deleted file mode 100644 (file)
index dcc17d5..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-module multiple-items-yang {
-  namespace "multiple:items:yang";  
-
-  prefix "mltitmsyg";
-  revision 2013-11-12 {    
-  }
-  
-  list lst {
-    list lst1 {
-        leaf lf11{
-            type string;
-        }
-        leaf-list lflst11{
-            type string;
-        }
-        container cont11{
-            
-        }
-        list lst11{
-            
-        }
-    }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list-yang/4/array-with-null.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list-yang/4/array-with-null.yang
deleted file mode 100644 (file)
index 869e406..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-module array-with-null-yang {
-  namespace "array:with:null:yang";  
-
-  prefix "arwnlyn";
-  revision 2013-11-12 {    
-  }
-  
-  container cont{
-      leaf lf{
-          type empty;
-      }
-      leaf lf1{
-          type string;
-      }
-      leaf lf2{
-          type string;
-      }
-      leaf-list lflst1{
-          type empty;
-      }
-      
-      leaf-list lflst2{
-          type string;
-      }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/simple-list.json
deleted file mode 100644 (file)
index d18ecc0..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-       "simple-list:lst":[
-               {
-                       "cont1":{
-                       },
-                       "lst1": [
-                               {
-                               }
-                       ],
-                       "lflst1":[
-                               "lflst1_1",
-                               "lflst1_2"
-                       ],
-                       "lf1":"lf1"
-               }
-       ]
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/unsupported-json-format.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/unsupported-json-format.json
deleted file mode 100644 (file)
index abc6267..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fffff
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/wrong-top-level1.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/wrong-top-level1.json
deleted file mode 100644 (file)
index 594a802..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-
-       "cont":[
-               {
-               },
-               {
-               }
-       ]
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/wrong-top-level2.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/wrong-top-level2.json
deleted file mode 100644 (file)
index af75a47..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-
-       "lst": {
-       },
-       "lst1":[
-               {
-               }
-       ]
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/wrong-top-level3.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-nn/wrong-top-level3.json
deleted file mode 100644 (file)
index 7288969..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "lf":"hello"
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/leafref/json/jsondata.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/leafref/json/jsondata.json
deleted file mode 100644 (file)
index f4a435e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "leafref-module:cont" : {
-        "lf4" : "/referenced-module:cont/referenced-module:lf1",
-        "lf2" : "/leafref-module:cont/leafref-module:lf1",
-        "lf3" : "/leafref-module:cont/leafref-module:lf2",
-        "lf5" : "/leafref-module:cont/leafref-module:lf3"
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/leafref/xml/xmldata.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/leafref/xml/xmldata.xml
deleted file mode 100644 (file)
index 1b5ce83..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<cont xmlnsa="leafref:module">
-    <lf4 xmlns:nsa="referenced:module">/nsa:cont/nsa:lf1</lf4>
-    <lf2 xmlns:nsa="leafref:module">/nsa:cont/nsa:lf1</lf2>
-    <lf3 xmlns:ns="leafref:module">/ns:cont/ns:lf2</lf3>
-    <lf5 xmlns:nsa="leafref:module">/nsa:cont/nsa:lf3</lf5>
-</cont>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/leafref/yang/leafref-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/leafref/yang/leafref-module.yang
deleted file mode 100644 (file)
index 9675b79..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-module leafref-module {
-  namespace "leafref:module";
-
-
-  prefix "lfrfmodule";
-
-  import referenced-module { prefix refmod; revision-date 2014-04-17;}
-
-
-  revision 2014-04-17 {
-  }
-
-
-    container cont {
-        leaf lf1 {
-            type instance-identifier;
-        }
-
-        leaf lf2 {
-            type leafref {
-                path "../lf1";
-            }
-        }
-
-        leaf lf3 {
-            type leafref {
-                path "/refmod:cont/refmod:lf1";
-            }
-        }
-
-        leaf lf4 {
-            type leafref {
-                path "/cont/lf1";
-            }
-        }
-
-        leaf lf5 {
-            type leafref {
-                path "../lf1";
-            }
-        }
-
-        list lst-with-lfref-key {
-            key "lfref-key";
-
-            leaf lfref-key {
-                type leafref {
-                    path "/refmod:cont/refmod:id-ref";
-                }
-            }
-        }
-
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/leafref/yang/referenced-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/leafref/yang/referenced-module.yang
deleted file mode 100644 (file)
index 05dd123..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-module referenced-module {
-  namespace "referenced:module";
-
-  prefix "refmodule";
-  revision 2014-04-17 {
-  }
-
-    container cont {
-        leaf lf1 {
-            type instance-identifier;
-        }
-
-        leaf id-ref {
-            type leafref {
-                path "../../id";
-            }
-        }
-    }
-
-    leaf id {
-        type string;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/iana-if-type.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/iana-if-type.yang
deleted file mode 100644 (file)
index 7bd0003..0000000
+++ /dev/null
@@ -1,1517 +0,0 @@
-module iana-if-type {
-  namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
-  prefix ianaift;
-
-  organization "IANA";
-  contact
-    "        Internet Assigned Numbers Authority
-
-     Postal: ICANN
-             4676 Admiralty Way, Suite 330
-             Marina del Rey, CA 90292
-
-     Tel:    +1 310 823 9358
-     E-Mail: iana&iana.org";
-  description
-    "This YANG module defines the iana-if-type typedef, which
-     contains YANG definitions for IANA-registered interface types.
-
-     This YANG module is maintained by IANA, and reflects the
-     'ifType definitions' registry.
-
-     The latest revision of this YANG module can be obtained from
-     the IANA web site.
-
-     Copyright (c) 2011 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC XXXX; see
-     the RFC itself for full legal notices.";
-  // RFC Ed.: replace XXXX with actual RFC number and remove this
-  // note.
-
-  // RFC Ed.: update the date below with the date of RFC publication
-  // and remove this note.
-  revision 2013-07-04 {
-    description
-      "Initial revision.";
-    reference
-      "RFC XXXX: IANA Interface Type YANG Module";
-  }
-
-  typedef iana-if-type {
-    type enumeration {
-      enum "other" {
-        value 1;
-        description
-          "None of the following";
-      }
-      enum "regular1822" {
-        value 2;
-      }
-      enum "hdh1822" {
-        value 3;
-      }
-      enum "ddnX25" {
-        value 4;
-      }
-      enum "rfc877x25" {
-        value 5;
-        reference
-          "RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
-      }
-      enum "ethernetCsmacd" {
-        value 6;
-        description
-          "For all ethernet-like interfaces, regardless of speed,
-           as per RFC3635.";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "iso88023Csmacd" {
-        value 7;
-        status deprecated;
-        description
-          "Deprecated via RFC3635.
-           Use ethernetCsmacd(6) instead.";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "iso88024TokenBus" {
-        value 8;
-      }
-      enum "iso88025TokenRing" {
-        value 9;
-      }
-      enum "iso88026Man" {
-        value 10;
-      }
-      enum "starLan" {
-        value 11;
-        status deprecated;
-        description
-          "Deprecated via RFC3635.
-           Use ethernetCsmacd(6) instead.";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "proteon10Mbit" {
-        value 12;
-      }
-      enum "proteon80Mbit" {
-        value 13;
-      }
-      enum "hyperchannel" {
-        value 14;
-      }
-      enum "fddi" {
-        value 15;
-        reference
-          "RFC 1512 - FDDI Management Information Base";
-      }
-      enum "lapb" {
-        value 16;
-        reference
-          "RFC 1381 - SNMP MIB Extension for X.25 LAPB";
-      }
-      enum "sdlc" {
-        value 17;
-      }
-      enum "ds1" {
-        value 18;
-        description
-          "DS1-MIB";
-        reference
-          "RFC 4805 - Definitions of Managed Objects for the
-                      DS1, J1, E1, DS2, and E2 Interface Types";
-      }
-      enum "e1" {
-        value 19;
-        status obsolete;
-        description
-          "Obsolete see DS1-MIB";
-        reference
-          "RFC 4805 - Definitions of Managed Objects for the
-                      DS1, J1, E1, DS2, and E2 Interface Types";
-      }
-      enum "basicISDN" {
-        value 20;
-        description
-          "see also RFC2127";
-      }
-      enum "primaryISDN" {
-        value 21;
-      }
-      enum "propPointToPointSerial" {
-        value 22;
-        description
-          "proprietary serial";
-      }
-      enum "ppp" {
-        value 23;
-      }
-      enum "softwareLoopback" {
-        value 24;
-      }
-      enum "eon" {
-        value 25;
-        description
-          "CLNP over IP";
-      }
-      enum "ethernet3Mbit" {
-        value 26;
-      }
-      enum "nsip" {
-        value 27;
-        description
-          "XNS over IP";
-      }
-      enum "slip" {
-        value 28;
-        description
-          "generic SLIP";
-      }
-      enum "ultra" {
-        value 29;
-        description
-          "ULTRA technologies";
-      }
-      enum "ds3" {
-        value 30;
-        description
-          "DS3-MIB";
-        reference
-          "RFC 3896 - Definitions of Managed Objects for the
-                      DS3/E3 Interface Type";
-      }
-      enum "sip" {
-        value 31;
-        description
-          "SMDS, coffee";
-        reference
-          "RFC 1694 - Definitions of Managed Objects for SMDS
-                      Interfaces using SMIv2";
-      }
-      enum "frameRelay" {
-        value 32;
-        description
-          "DTE only.";
-        reference
-          "RFC 2115 - Management Information Base for Frame Relay
-                      DTEs Using SMIv2";
-      }
-      enum "rs232" {
-        value 33;
-        reference
-          "RFC 1659 - Definitions of Managed Objects for RS-232-like
-                      Hardware Devices using SMIv2";
-      }
-      enum "para" {
-        value 34;
-        description
-          "parallel-port";
-        reference
-          "RFC 1660 - Definitions of Managed Objects for
-                      Parallel-printer-like Hardware Devices using
-                      SMIv2";
-      }
-      enum "arcnet" {
-        value 35;
-        description
-          "arcnet";
-      }
-      enum "arcnetPlus" {
-        value 36;
-        description
-          "arcnet plus";
-      }
-      enum "atm" {
-        value 37;
-        description
-          "ATM cells";
-      }
-      enum "miox25" {
-        value 38;
-        reference
-          "RFC 1461 - SNMP MIB extension for Multiprotocol
-                      Interconnect over X.25";
-      }
-      enum "sonet" {
-        value 39;
-        description
-          "SONET or SDH";
-      }
-      enum "x25ple" {
-        value 40;
-        reference
-          "RFC 2127 - ISDN Management Information Base using SMIv2";
-      }
-      enum "iso88022llc" {
-        value 41;
-      }
-      enum "localTalk" {
-        value 42;
-      }
-      enum "smdsDxi" {
-        value 43;
-      }
-      enum "frameRelayService" {
-        value 44;
-        description
-          "FRNETSERV-MIB";
-        reference
-          "RFC 2954 - Definitions of Managed Objects for Frame
-                      Relay Service";
-      }
-      enum "v35" {
-        value 45;
-      }
-      enum "hssi" {
-        value 46;
-      }
-      enum "hippi" {
-        value 47;
-      }
-      enum "modem" {
-        value 48;
-        description
-          "Generic modem";
-      }
-      enum "aal5" {
-        value 49;
-        description
-          "AAL5 over ATM";
-      }
-      enum "sonetPath" {
-        value 50;
-      }
-      enum "sonetVT" {
-        value 51;
-      }
-      enum "smdsIcip" {
-        value 52;
-        description
-          "SMDS InterCarrier Interface";
-      }
-      enum "propVirtual" {
-        value 53;
-        description
-          "proprietary virtual/internal";
-        reference
-          "RFC 2863 - The Interfaces Group MIB";
-      }
-      enum "propMultiplexor" {
-        value 54;
-        description
-          "proprietary multiplexing";
-        reference
-          "RFC 2863 - The Interfaces Group MIB";
-      }
-      enum "ieee80212" {
-        value 55;
-        description
-          "100BaseVG";
-      }
-      enum "fibreChannel" {
-        value 56;
-        description
-          "Fibre Channel";
-      }
-      enum "hippiInterface" {
-        value 57;
-        description
-          "HIPPI interfaces";
-      }
-      enum "frameRelayInterconnect" {
-        value 58;
-        status obsolete;
-        description
-          "Obsolete use either
-           frameRelay(32) or frameRelayService(44).";
-      }
-      enum "aflane8023" {
-        value 59;
-        description
-          "ATM Emulated LAN for 802.3";
-      }
-      enum "aflane8025" {
-        value 60;
-        description
-          "ATM Emulated LAN for 802.5";
-      }
-      enum "cctEmul" {
-        value 61;
-        description
-         "ATM Emulated circuit";
-      }
-      enum "fastEther" {
-        value 62;
-        status deprecated;
-        description
-          "Obsoleted via RFC3635.
-          ethernetCsmacd(6) should be used instead";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "isdn" {
-        value 63;
-        description
-          "ISDN and X.25";
-        reference
-          "RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
-                      in the Packet Mode";
-      }
-      enum "v11" {
-        value 64;
-        description
-         "CCITT V.11/X.21";
-      }
-      enum "v36" {
-        value 65;
-        description
-          "CCITT V.36";
-      }
-      enum "g703at64k" {
-        value 66;
-        description
-          "CCITT G703 at 64Kbps";
-      }
-      enum "g703at2mb" {
-        value 67;
-        status obsolete;
-        description
-          "Obsolete see DS1-MIB";
-      }
-      enum "qllc" {
-        value 68;
-        description
-          "SNA QLLC";
-      }
-      enum "fastEtherFX" {
-        value 69;
-        status deprecated;
-        description
-          "Obsoleted via RFC3635
-          ethernetCsmacd(6) should be used instead";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "channel" {
-        value 70;
-        description
-          "channel";
-      }
-      enum "ieee80211" {
-        value 71;
-        description
-          "radio spread spectrum";
-      }
-      enum "ibm370parChan" {
-        value 72;
-        description
-          "IBM System 360/370 OEMI Channel";
-      }
-      enum "escon" {
-        value 73;
-        description
-          "IBM Enterprise Systems Connection";
-      }
-      enum "dlsw" {
-        value 74;
-        description
-          "Data Link Switching";
-      }
-      enum "isdns" {
-        value 75;
-        description
-          "ISDN S/T interface";
-      }
-      enum "isdnu" {
-        value 76;
-        description
-          "ISDN U interface";
-      }
-      enum "lapd" {
-        value 77;
-        description
-          "Link Access Protocol D";
-      }
-      enum "ipSwitch" {
-        value 78;
-        description
-          "IP Switching Objects";
-      }
-      enum "rsrb" {
-        value 79;
-        description
-          "Remote Source Route Bridging";
-      }
-      enum "atmLogical" {
-        value 80;
-        description
-          "ATM Logical Port";
-        reference
-          "RFC 3606 - Definitions of Supplemental Managed Objects
-                      for ATM Interface";
-      }
-      enum "ds0" {
-        value 81;
-        description
-          "Digital Signal Level 0";
-        reference
-          "RFC 2494 - Definitions of Managed Objects for the DS0
-                      and DS0 Bundle Interface Type";
-      }
-      enum "ds0Bundle" {
-        value 82;
-        description
-          "group of ds0s on the same ds1";
-        reference
-          "RFC 2494 - Definitions of Managed Objects for the DS0
-                      and DS0 Bundle Interface Type";
-      }
-      enum "bsc" {
-        value 83;
-        description
-          "Bisynchronous Protocol";
-      }
-      enum "async" {
-        value 84;
-        description
-          "Asynchronous Protocol";
-      }
-      enum "cnr" {
-        value 85;
-        description
-          "Combat Net Radio";
-      }
-      enum "iso88025Dtr" {
-        value 86;
-        description
-          "ISO 802.5r DTR";
-      }
-      enum "eplrs" {
-        value 87;
-        description
-          "Ext Pos Loc Report Sys";
-      }
-      enum "arap" {
-        value 88;
-        description
-          "Appletalk Remote Access Protocol";
-      }
-      enum "propCnls" {
-        value 89;
-        description
-          "Proprietary Connectionless Protocol";
-      }
-      enum "hostPad" {
-        value 90;
-        description
-          "CCITT-ITU X.29 PAD Protocol";
-      }
-      enum "termPad" {
-        value 91;
-        description
-          "CCITT-ITU X.3 PAD Facility";
-      }
-      enum "frameRelayMPI" {
-        value 92;
-        description
-          "Multiproto Interconnect over FR";
-      }
-      enum "x213" {
-        value 93;
-        description
-          "CCITT-ITU X213";
-      }
-      enum "adsl" {
-        value 94;
-        description
-          "Asymmetric Digital Subscriber Loop";
-      }
-      enum "radsl" {
-        value 95;
-        description
-          "Rate-Adapt. Digital Subscriber Loop";
-      }
-      enum "sdsl" {
-        value 96;
-        description
-          "Symmetric Digital Subscriber Loop";
-      }
-      enum "vdsl" {
-        value 97;
-        description
-          "Very H-Speed Digital Subscrib. Loop";
-      }
-      enum "iso88025CRFPInt" {
-        value 98;
-        description
-          "ISO 802.5 CRFP";
-      }
-      enum "myrinet" {
-        value 99;
-        description
-          "Myricom Myrinet";
-      }
-      enum "voiceEM" {
-        value 100;
-        description
-          "voice recEive and transMit";
-      }
-      enum "voiceFXO" {
-        value 101;
-        description
-          "voice Foreign Exchange Office";
-      }
-      enum "voiceFXS" {
-        value 102;
-        description
-          "voice Foreign Exchange Station";
-      }
-      enum "voiceEncap" {
-        value 103;
-        description
-          "voice encapsulation";
-      }
-      enum "voiceOverIp" {
-        value 104;
-        description
-          "voice over IP encapsulation";
-      }
-      enum "atmDxi" {
-        value 105;
-        description
-          "ATM DXI";
-      }
-      enum "atmFuni" {
-        value 106;
-        description
-          "ATM FUNI";
-      }
-      enum "atmIma" {
-        value 107;
-        description
-          "ATM IMA";
-      }
-      enum "pppMultilinkBundle" {
-        value 108;
-        description
-          "PPP Multilink Bundle";
-      }
-      enum "ipOverCdlc" {
-        value 109;
-        description
-          "IBM ipOverCdlc";
-      }
-      enum "ipOverClaw" {
-        value 110;
-        description
-          "IBM Common Link Access to Workstn";
-      }
-      enum "stackToStack" {
-        value 111;
-        description
-          "IBM stackToStack";
-      }
-      enum "virtualIpAddress" {
-        value 112;
-        description
-          "IBM VIPA";
-      }
-      enum "mpc" {
-        value 113;
-        description
-          "IBM multi-protocol channel support";
-      }
-      enum "ipOverAtm" {
-        value 114;
-        description
-          "IBM ipOverAtm";
-        reference
-          "RFC 2320 - Definitions of Managed Objects for Classical IP
-                      and ARP Over ATM Using SMIv2 (IPOA-MIB)";
-      }
-      enum "iso88025Fiber" {
-        value 115;
-        description
-          "ISO 802.5j Fiber Token Ring";
-      }
-      enum "tdlc" {
-        value 116;
-        description
-          "IBM twinaxial data link control";
-      }
-      enum "gigabitEthernet" {
-        value 117;
-        status deprecated;
-        description
-          "Obsoleted via RFC3635
-           ethernetCsmacd(6) should be used instead";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "hdlc" {
-        value 118;
-        description
-          "HDLC";
-      }
-      enum "lapf" {
-        value 119;
-        description
-          "LAP F";
-      }
-      enum "v37" {
-        value 120;
-        description
-          "V.37";
-      }
-      enum "x25mlp" {
-        value 121;
-        description
-          "Multi-Link Protocol";
-      }
-      enum "x25huntGroup" {
-        value 122;
-        description
-          "X25 Hunt Group";
-      }
-      enum "transpHdlc" {
-        value 123;
-        description
-          "Transp HDLC";
-      }
-      enum "interleave" {
-        value 124;
-        description
-          "Interleave channel";
-      }
-      enum "fast" {
-        value 125;
-        description
-          "Fast channel";
-      }
-      enum "ip" {
-        value 126;
-        description
-          "IP (for APPN HPR in IP networks)";
-      }
-      enum "docsCableMaclayer" {
-        value 127;
-        description
-          "CATV Mac Layer";
-      }
-      enum "docsCableDownstream" {
-        value 128;
-        description
-          "CATV Downstream interface";
-      }
-      enum "docsCableUpstream" {
-        value 129;
-        description
-          "CATV Upstream interface";
-      }
-      enum "a12MppSwitch" {
-        value 130;
-        description
-          "Avalon Parallel Processor";
-      }
-      enum "tunnel" {
-        value 131;
-        description
-          "Encapsulation interface";
-      }
-      enum "coffee" {
-        value 132;
-        description
-          "coffee pot";
-        reference
-          "RFC 2325 - Coffee MIB";
-      }
-      enum "ces" {
-        value 133;
-        description
-          "Circuit Emulation Service";
-      }
-      enum "atmSubInterface" {
-        value 134;
-        description
-          "ATM Sub Interface";
-      }
-      enum "l2vlan" {
-        value 135;
-        description
-          "Layer 2 Virtual LAN using 802.1Q";
-      }
-      enum "l3ipvlan" {
-        value 136;
-        description
-          "Layer 3 Virtual LAN using IP";
-      }
-      enum "l3ipxvlan" {
-        value 137;
-        description
-          "Layer 3 Virtual LAN using IPX";
-      }
-      enum "digitalPowerline" {
-        value 138;
-        description
-          "IP over Power Lines";
-      }
-      enum "mediaMailOverIp" {
-        value 139;
-        description
-          "Multimedia Mail over IP";
-      }
-      enum "dtm" {
-        value 140;
-        description
-          "Dynamic syncronous Transfer Mode";
-      }
-      enum "dcn" {
-        value 141;
-        description
-          "Data Communications Network";
-      }
-      enum "ipForward" {
-        value 142;
-        description
-          "IP Forwarding Interface";
-      }
-      enum "msdsl" {
-        value 143;
-        description
-          "Multi-rate Symmetric DSL";
-      }
-      enum "ieee1394" {
-        value 144;
-        description
-          "IEEE1394 High Performance Serial Bus";
-      }
-      enum "if-gsn" {
-        value 145;
-        description
-          "HIPPI-6400";
-      }
-      enum "dvbRccMacLayer" {
-        value 146;
-        description
-          "DVB-RCC MAC Layer";
-      }
-      enum "dvbRccDownstream" {
-        value 147;
-        description
-          "DVB-RCC Downstream Channel";
-      }
-      enum "dvbRccUpstream" {
-        value 148;
-        description
-          "DVB-RCC Upstream Channel";
-      }
-      enum "atmVirtual" {
-        value 149;
-        description
-          "ATM Virtual Interface";
-      }
-      enum "mplsTunnel" {
-        value 150;
-        description
-          "MPLS Tunnel Virtual Interface";
-      }
-      enum "srp" {
-        value 151;
-        description
-          "Spatial Reuse Protocol";
-      }
-      enum "voiceOverAtm" {
-        value 152;
-        description
-          "Voice Over ATM";
-      }
-      enum "voiceOverFrameRelay" {
-        value 153;
-        description
-          "Voice Over Frame Relay";
-      }
-      enum "idsl" {
-        value 154;
-        description
-          "Digital Subscriber Loop over ISDN";
-      }
-      enum "compositeLink" {
-        value 155;
-        description
-          "Avici Composite Link Interface";
-      }
-      enum "ss7SigLink" {
-        value 156;
-        description
-          "SS7 Signaling Link";
-      }
-      enum "propWirelessP2P" {
-        value 157;
-        description
-          "Prop. P2P wireless interface";
-      }
-      enum "frForward" {
-        value 158;
-        description
-          "Frame Forward Interface";
-      }
-      enum "rfc1483" {
-        value 159;
-        description
-          "Multiprotocol over ATM AAL5";
-        reference
-          "RFC 1483 - Multiprotocol Encapsulation over ATM
-                      Adaptation Layer 5";
-      }
-      enum "usb" {
-        value 160;
-        description
-          "USB Interface";
-      }
-      enum "ieee8023adLag" {
-        value 161;
-        description
-          "IEEE 802.3ad Link Aggregate";
-      }
-      enum "bgppolicyaccounting" {
-        value 162;
-        description
-          "BGP Policy Accounting";
-      }
-      enum "frf16MfrBundle" {
-        value 163;
-        description
-          "FRF .16 Multilink Frame Relay";
-      }
-      enum "h323Gatekeeper" {
-        value 164;
-        description
-          "H323 Gatekeeper";
-      }
-      enum "h323Proxy" {
-        value 165;
-        description
-          "H323 Voice and Video Proxy";
-      }
-      enum "mpls" {
-        value 166;
-        description
-          "MPLS";
-      }
-      enum "mfSigLink" {
-        value 167;
-        description
-          "Multi-frequency signaling link";
-      }
-      enum "hdsl2" {
-        value 168;
-        description
-          "High Bit-Rate DSL - 2nd generation";
-      }
-      enum "shdsl" {
-        value 169;
-        description
-          "Multirate HDSL2";
-      }
-      enum "ds1FDL" {
-        value 170;
-        description
-          "Facility Data Link 4Kbps on a DS1";
-      }
-      enum "pos" {
-        value 171;
-        description
-          "Packet over SONET/SDH Interface";
-      }
-      enum "dvbAsiIn" {
-        value 172;
-        description
-          "DVB-ASI Input";
-      }
-      enum "dvbAsiOut" {
-        value 173;
-        description
-          "DVB-ASI Output";
-      }
-      enum "plc" {
-        value 174;
-        description
-          "Power Line Communtications";
-      }
-      enum "nfas" {
-        value 175;
-        description
-          "Non Facility Associated Signaling";
-      }
-      enum "tr008" {
-        value 176;
-        description
-          "TR008";
-      }
-      enum "gr303RDT" {
-        value 177;
-        description
-          "Remote Digital Terminal";
-      }
-      enum "gr303IDT" {
-        value 178;
-        description
-          "Integrated Digital Terminal";
-      }
-      enum "isup" {
-        value 179;
-        description
-          "ISUP";
-      }
-      enum "propDocsWirelessMaclayer" {
-        value 180;
-        description
-          "Cisco proprietary Maclayer";
-      }
-      enum "propDocsWirelessDownstream" {
-        value 181;
-        description
-          "Cisco proprietary Downstream";
-      }
-      enum "propDocsWirelessUpstream" {
-        value 182;
-        description
-          "Cisco proprietary Upstream";
-      }
-      enum "hiperlan2" {
-        value 183;
-        description
-          "HIPERLAN Type 2 Radio Interface";
-      }
-      enum "propBWAp2Mp" {
-        value 184;
-        description
-          "PropBroadbandWirelessAccesspt2multipt use of this value
-           for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
-           is deprecated and ieee80216WMAN(237) should be used
-           instead.";
-      }
-      enum "sonetOverheadChannel" {
-        value 185;
-        description
-          "SONET Overhead Channel";
-      }
-      enum "digitalWrapperOverheadChannel" {
-        value 186;
-        description
-          "Digital Wrapper";
-      }
-      enum "aal2" {
-        value 187;
-        description
-          "ATM adaptation layer 2";
-      }
-      enum "radioMAC" {
-        value 188;
-        description
-          "MAC layer over radio links";
-      }
-      enum "atmRadio" {
-        value 189;
-        description
-          "ATM over radio links";
-      }
-      enum "imt" {
-        value 190;
-        description
-          "Inter Machine Trunks";
-      }
-      enum "mvl" {
-        value 191;
-        description
-          "Multiple Virtual Lines DSL";
-      }
-      enum "reachDSL" {
-        value 192;
-        description
-          "Long Reach DSL";
-      }
-      enum "frDlciEndPt" {
-        value 193;
-        description
-          "Frame Relay DLCI End Point";
-      }
-      enum "atmVciEndPt" {
-        value 194;
-        description
-          "ATM VCI End Point";
-      }
-      enum "opticalChannel" {
-        value 195;
-        description
-          "Optical Channel";
-      }
-      enum "opticalTransport" {
-        value 196;
-        description
-          "Optical Transport";
-      }
-      enum "propAtm" {
-        value 197;
-        description
-          "Proprietary ATM";
-      }
-      enum "voiceOverCable" {
-        value 198;
-        description
-          "Voice Over Cable Interface";
-      }
-      enum "infiniband" {
-        value 199;
-        description
-          "Infiniband";
-      }
-      enum "teLink" {
-        value 200;
-        description
-          "TE Link";
-      }
-      enum "q2931" {
-        value 201;
-        description
-          "Q.2931";
-      }
-      enum "virtualTg" {
-        value 202;
-        description
-          "Virtual Trunk Group";
-      }
-      enum "sipTg" {
-        value 203;
-        description
-          "SIP Trunk Group";
-      }
-      enum "sipSig" {
-        value 204;
-        description
-          "SIP Signaling";
-      }
-      enum "docsCableUpstreamChannel" {
-        value 205;
-        description
-          "CATV Upstream Channel";
-      }
-      enum "econet" {
-        value 206;
-        description
-          "Acorn Econet";
-      }
-      enum "pon155" {
-        value 207;
-        description
-          "FSAN 155Mb Symetrical PON interface";
-      }
-      enum "pon622" {
-        value 208;
-        description
-          "FSAN622Mb Symetrical PON interface";
-      }
-      enum "bridge" {
-        value 209;
-        description
-          "Transparent bridge interface";
-      }
-      enum "linegroup" {
-        value 210;
-        description
-          "Interface common to multiple lines";
-      }
-      enum "voiceEMFGD" {
-        value 211;
-        description
-          "voice E&M Feature Group D";
-      }
-      enum "voiceFGDEANA" {
-        value 212;
-        description
-          "voice FGD Exchange Access North American";
-      }
-      enum "voiceDID" {
-        value 213;
-        description
-          "voice Direct Inward Dialing";
-      }
-      enum "mpegTransport" {
-        value 214;
-        description
-          "MPEG transport interface";
-      }
-      enum "sixToFour" {
-        value 215;
-        status deprecated;
-        description
-          "6to4 interface (DEPRECATED)";
-        reference
-          "RFC 4087 - IP Tunnel MIB";
-      }
-      enum "gtp" {
-        value 216;
-        description
-          "GTP (GPRS Tunneling Protocol)";
-      }
-      enum "pdnEtherLoop1" {
-        value 217;
-        description
-          "Paradyne EtherLoop 1";
-      }
-      enum "pdnEtherLoop2" {
-        value 218;
-        description
-          "Paradyne EtherLoop 2";
-      }
-      enum "opticalChannelGroup" {
-        value 219;
-        description
-          "Optical Channel Group";
-      }
-      enum "homepna" {
-        value 220;
-        description
-          "HomePNA ITU-T G.989";
-      }
-      enum "gfp" {
-        value 221;
-        description
-          "Generic Framing Procedure (GFP)";
-      }
-      enum "ciscoISLvlan" {
-        value 222;
-        description
-          "Layer 2 Virtual LAN using Cisco ISL";
-      }
-      enum "actelisMetaLOOP" {
-        value 223;
-        description
-          "Acteleis proprietary MetaLOOP High Speed Link";
-      }
-      enum "fcipLink" {
-        value 224;
-        description
-          "FCIP Link";
-      }
-      enum "rpr" {
-        value 225;
-        description
-          "Resilient Packet Ring Interface Type";
-      }
-      enum "qam" {
-        value 226;
-        description
-          "RF Qam Interface";
-      }
-      enum "lmp" {
-        value 227;
-        description
-          "Link Management Protocol";
-        reference
-          "RFC 4327 - Link Management Protocol (LMP) Management
-                      Information Base (MIB)";
-      }
-      enum "cblVectaStar" {
-        value 228;
-        description
-          "Cambridge Broadband Networks Limited VectaStar";
-      }
-      enum "docsCableMCmtsDownstream" {
-        value 229;
-        description
-          "CATV Modular CMTS Downstream Interface";
-      }
-      enum "adsl2" {
-        value 230;
-        status deprecated;
-        description
-          "Asymmetric Digital Subscriber Loop Version 2
-           (DEPRECATED/OBSOLETED - please use adsl2plus(238)
-           instead)";
-        reference
-          "RFC 4706 - Definitions of Managed Objects for Asymmetric
-                      Digital Subscriber Line 2 (ADSL2)";
-      }
-      enum "macSecControlledIF" {
-        value 231;
-        description
-          "MACSecControlled";
-      }
-      enum "macSecUncontrolledIF" {
-        value 232;
-        description
-          "MACSecUncontrolled";
-      }
-      enum "aviciOpticalEther" {
-        value 233;
-        description
-         "Avici Optical Ethernet Aggregate";
-      }
-      enum "atmbond" {
-        value 234;
-        description
-          "atmbond";
-      }
-      enum "voiceFGDOS" {
-        value 235;
-        description
-          "voice FGD Operator Services";
-      }
-      enum "mocaVersion1" {
-        value 236;
-        description
-          "MultiMedia over Coax Alliance (MoCA) Interface
-           as documented in information provided privately to IANA";
-      }
-      enum "ieee80216WMAN" {
-        value 237;
-        description
-          "IEEE 802.16 WMAN interface";
-      }
-      enum "adsl2plus" {
-        value 238;
-        description
-          "Asymmetric Digital Subscriber Loop Version 2,
-           Version 2 Plus and all variants";
-      }
-      enum "dvbRcsMacLayer" {
-        value 239;
-        description
-          "DVB-RCS MAC Layer";
-        reference
-          "RFC 5728 - The SatLabs Group DVB-RCS MIB";
-      }
-      enum "dvbTdm" {
-        value 240;
-        description
-          "DVB Satellite TDM";
-        reference
-          "RFC 5728 - The SatLabs Group DVB-RCS MIB";
-      }
-      enum "dvbRcsTdma" {
-        value 241;
-        description
-          "DVB-RCS TDMA";
-        reference
-          "RFC 5728 - The SatLabs Group DVB-RCS MIB";
-      }
-      enum "x86Laps" {
-        value 242;
-        description
-          "LAPS based on ITU-T X.86/Y.1323";
-      }
-      enum "wwanPP" {
-        value 243;
-        description
-          "3GPP WWAN";
-      }
-      enum "wwanPP2" {
-        value 244;
-        description
-          "3GPP2 WWAN";
-      }
-      enum "voiceEBS" {
-        value 245;
-        description
-          "voice P-phone EBS physical interface";
-      }
-      enum "ifPwType" {
-        value 246;
-        description
-          "Pseudowire interface type";
-        reference
-          "RFC 5601 - Pseudowire (PW) Management Information Base";
-      }
-      enum "ilan" {
-        value 247;
-        description
-          "Internal LAN on a bridge per IEEE 802.1ap";
-      }
-      enum "pip" {
-        value 248;
-        description
-          "Provider Instance Port on a bridge per IEEE 802.1ah PBB";
-      }
-      enum "aluELP" {
-        value 249;
-        description
-          "Alcatel-Lucent Ethernet Link Protection";
-      }
-      enum "gpon" {
-        value 250;
-        description
-          "Gigabit-capable passive optical networks (G-PON) as per
-           ITU-T G.948";
-      }
-      enum "vdsl2" {
-        value 251;
-        description
-          "Very high speed digital subscriber line Version 2
-           (as per ITU-T Recommendation G.993.2)";
-        reference
-          "RFC 5650 - Definitions of Managed Objects for Very High
-                      Speed Digital Subscriber Line 2 (VDSL2)";
-      }
-      enum "capwapDot11Profile" {
-        value 252;
-        description
-          "WLAN Profile Interface";
-        reference
-          "RFC 5834 - Control and Provisioning of Wireless Access
-                      Points (CAPWAP) Protocol Binding MIB for
-                      IEEE 802.11";
-      }
-      enum "capwapDot11Bss" {
-        value 253;
-        description
-          "WLAN BSS Interface";
-        reference
-          "RFC 5834 - Control and Provisioning of Wireless Access
-                      Points (CAPWAP) Protocol Binding MIB for
-                      IEEE 802.11";
-      }
-      enum "capwapWtpVirtualRadio" {
-        value 254;
-        description
-          "WTP Virtual Radio Interface";
-        reference
-          "RFC 5833 - Control and Provisioning of Wireless Access
-                      Points (CAPWAP) Protocol Base MIB";
-      }
-      enum "bits" {
-        value 255;
-        description
-          "bitsport";
-      }
-      enum "docsCableUpstreamRfPort" {
-        value 256;
-        description
-          "DOCSIS CATV Upstream RF Port";
-      }
-      enum "cableDownstreamRfPort" {
-        value 257;
-        description
-          "CATV downstream RF port";
-      }
-      enum "vmwareVirtualNic" {
-        value 258;
-        description
-          "VMware Virtual Network Interface";
-      }
-      enum "ieee802154" {
-        value 259;
-        description
-          "IEEE 802.15.4 WPAN interface";
-        reference
-          "IEEE 802.15.4-2006";
-      }
-      enum "otnOdu" {
-        value 260;
-        description
-          "OTN Optical Data Unit";
-      }
-      enum "otnOtu" {
-        value 261;
-        description
-          "OTN Optical channel Transport Unit";
-      }
-      enum "ifVfiType" {
-        value 262;
-        description
-          "VPLS Forwarding Instance Interface Type";
-      }
-      enum "g9981" {
-        value 263;
-        description
-          "G.998.1 bonded interface";
-      }
-      enum "g9982" {
-        value 264;
-        description
-          "G.998.2 bonded interface";
-      }
-      enum "g9983" {
-        value 265;
-        description
-          "G.998.3 bonded interface";
-      }
-      enum "aluEpon" {
-        value 266;
-        description
-          "Ethernet Passive Optical Networks (E-PON)";
-      }
-      enum "aluEponOnu" {
-        value 267;
-        description
-          "EPON Optical Network Unit";
-      }
-      enum "aluEponPhysicalUni" {
-        value 268;
-        description
-          "EPON physical User to Network interface";
-      }
-      enum "aluEponLogicalLink" {
-        value 269;
-        description
-          "The emulation of a point-to-point link over the EPON
-           layer";
-      }
-      enum "aluGponOnu" {
-        value 270;
-        description
-          "GPON Optical Network Unit";
-        reference
-          "ITU-T G.984.2";
-      }
-      enum "aluGponPhysicalUni" {
-        value 271;
-        description
-          "GPON physical User to Network interface";
-        reference
-          "ITU-T G.984.2";
-      }
-      enum "vmwareNicTeam" {
-        value 272;
-        description
-          "VMware NIC Team";
-      }
-      // value 273 reserved by IANA
-    }
-    description
-      "This data type is used as the syntax of the 'type'
-       leaf in the 'interface' list in the YANG module
-       ietf-interface.
-
-       The definition of this typedef with the
-       addition of newly assigned values is published
-       periodically by the IANA, in either the Assigned
-       Numbers RFC, or some derivative of it specific to
-       Internet Network Management number assignments.  (The
-       latest arrangements can be obtained by contacting the
-       IANA.)
-
-       Requests for new values should be made to IANA via
-       email (iana&iana.org).";
-    reference
-      "IANA ifType definitions registry.
-       <http://www.iana.org/assignments/smi-numbers>";
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/ietf-inet-types.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/ietf-inet-types.yang
deleted file mode 100644 (file)
index de20feb..0000000
+++ /dev/null
@@ -1,418 +0,0 @@
- module ietf-inet-types {
-
-   namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
-   prefix "inet";
-
-   organization
-    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-   contact
-    "WG Web:   <http://tools.ietf.org/wg/netmod/>
-     WG List:  <mailto:netmod@ietf.org>
-
-     WG Chair: David Partain
-               <mailto:david.partain@ericsson.com>
-
-     WG Chair: David Kessens
-               <mailto:david.kessens@nsn.com>
-
-     Editor:   Juergen Schoenwaelder
-               <mailto:j.schoenwaelder@jacobs-university.de>";
-
-   description
-    "This module contains a collection of generally useful derived
-     YANG data types for Internet addresses and related things.
-
-     Copyright (c) 2010 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or without
-     modification, is permitted pursuant to, and subject to the license
-     terms contained in, the Simplified BSD License set forth in Section
-     4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6021; see
-     the RFC itself for full legal notices.";
-
-   revision 2010-09-24 {
-     description
-      "Initial revision.";
-     reference
-      "RFC 6021: Common YANG Data Types";
-   }
-
-   /*** collection of protocol field related types ***/
-
-   typedef ip-version {
-     type enumeration {
-       enum unknown {
-         value "0";
-         description
-          "An unknown or unspecified version of the Internet protocol.";
-       }
-       enum ipv4 {
-         value "1";
-         description
-          "The IPv4 protocol as defined in RFC 791.";
-       }
-       enum ipv6 {
-         value "2";
-         description
-          "The IPv6 protocol as defined in RFC 2460.";
-       }
-     }
-     description
-      "This value represents the version of the IP protocol.
-
-       In the value set and its semantics, this type is equivalent
-       to the InetVersion textual convention of the SMIv2.";
-     reference
-      "RFC  791: Internet Protocol
-       RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
-       RFC 4001: Textual Conventions for Internet Network Addresses";
-   }
-
-   typedef dscp {
-     type uint8 {
-       range "0..63";
-     }
-     description
-      "The dscp type represents a Differentiated Services Code-Point
-       that may be used for marking packets in a traffic stream.
-
-       In the value set and its semantics, this type is equivalent
-       to the Dscp textual convention of the SMIv2.";
-     reference
-      "RFC 3289: Management Information Base for the Differentiated
-                 Services Architecture
-       RFC 2474: Definition of the Differentiated Services Field
-                 (DS Field) in the IPv4 and IPv6 Headers
-       RFC 2780: IANA Allocation Guidelines For Values In
-                 the Internet Protocol and Related Headers";
-   }
-
-   typedef ipv6-flow-label {
-     type uint32 {
-       range "0..1048575";
-     }
-     description
-      "The flow-label type represents flow identifier or Flow Label
-       in an IPv6 packet header that may be used to discriminate
-       traffic flows.
-
-       In the value set and its semantics, this type is equivalent
-       to the IPv6FlowLabel textual convention of the SMIv2.";
-     reference
-      "RFC 3595: Textual Conventions for IPv6 Flow Label
-       RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
-   }
-
-   typedef port-number {
-     type uint16 {
-       range "0..65535";
-     }
-     description
-      "The port-number type represents a 16-bit port number of an
-       Internet transport layer protocol such as UDP, TCP, DCCP, or
-       SCTP.  Port numbers are assigned by IANA.  A current list of
-       all assignments is available from <http://www.iana.org/>.
-
-       Note that the port number value zero is reserved by IANA.  In
-       situations where the value zero does not make sense, it can
-       be excluded by subtyping the port-number type.
-
-       In the value set and its semantics, this type is equivalent
-       to the InetPortNumber textual convention of the SMIv2.";
-     reference
-      "RFC  768: User Datagram Protocol
-       RFC  793: Transmission Control Protocol
-       RFC 4960: Stream Control Transmission Protocol
-       RFC 4340: Datagram Congestion Control Protocol (DCCP)
-       RFC 4001: Textual Conventions for Internet Network Addresses";
-   }
-
-   /*** collection of autonomous system related types ***/
-
-   typedef as-number {
-     type uint32;
-     description
-      "The as-number type represents autonomous system numbers
-       which identify an Autonomous System (AS).  An AS is a set
-       of routers under a single technical administration, using
-       an interior gateway protocol and common metrics to route
-       packets within the AS, and using an exterior gateway
-       protocol to route packets to other ASs'.  IANA maintains
-       the AS number space and has delegated large parts to the
-       regional registries.
-
-       Autonomous system numbers were originally limited to 16
-       bits.  BGP extensions have enlarged the autonomous system
-       number space to 32 bits.  This type therefore uses an uint32
-       base type without a range restriction in order to support
-       a larger autonomous system number space.
-
-       In the value set and its semantics, this type is equivalent
-       to the InetAutonomousSystemNumber textual convention of
-       the SMIv2.";
-     reference
-      "RFC 1930: Guidelines for creation, selection, and registration
-                 of an Autonomous System (AS)
-       RFC 4271: A Border Gateway Protocol 4 (BGP-4)
-       RFC 4893: BGP Support for Four-octet AS Number Space
-       RFC 4001: Textual Conventions for Internet Network Addresses";
-   }
-
-   /*** collection of IP address and hostname related types ***/
-
-   typedef ip-address {
-     type union {
-       type inet:ipv4-address;
-       type inet:ipv6-address;
-     }
-     description
-      "The ip-address type represents an IP address and is IP
-       version neutral.  The format of the textual representations
-       implies the IP version.";
-   }
-
-   typedef ipv4-address {
-     type string {
-       pattern
-         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-       + '(%[\p{N}\p{L}]+)?';
-     }
-     description
-       "The ipv4-address type represents an IPv4 address in
-        dotted-quad notation.  The IPv4 address may include a zone
-        index, separated by a % sign.
-
-        The zone index is used to disambiguate identical address
-        values.  For link-local addresses, the zone index will
-        typically be the interface index number or the name of an
-        interface.  If the zone index is not present, the default
-        zone of the device will be used.
-
-        The canonical format for the zone index is the numerical
-        format";
-   }
-
-   typedef ipv6-address {
-     type string {
-       pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-             + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-             + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-             + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-             + '(%[\p{N}\p{L}]+)?';
-       pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-             + '(%.+)?';
-     }
-     description
-      "The ipv6-address type represents an IPv6 address in full,
-       mixed, shortened, and shortened-mixed notation.  The IPv6
-       address may include a zone index, separated by a % sign.
-
-       The zone index is used to disambiguate identical address
-       values.  For link-local addresses, the zone index will
-       typically be the interface index number or the name of an
-       interface.  If the zone index is not present, the default
-       zone of the device will be used.
-
-       The canonical format of IPv6 addresses uses the compressed
-       format described in RFC 4291, Section 2.2, item 2 with the
-       following additional rules: the :: substitution must be
-       applied to the longest sequence of all-zero 16-bit chunks
-       in an IPv6 address.  If there is a tie, the first sequence
-       of all-zero 16-bit chunks is replaced by ::.  Single
-       all-zero 16-bit chunks are not compressed.  The canonical
-       format uses lowercase characters and leading zeros are
-       not allowed.  The canonical format for the zone index is
-       the numerical format as described in RFC 4007, Section
-       11.2.";
-     reference
-      "RFC 4291: IP Version 6 Addressing Architecture
-       RFC 4007: IPv6 Scoped Address Architecture
-       RFC 5952: A Recommendation for IPv6 Address Text Representation";
-   }
-
-   typedef ip-prefix {
-     type union {
-       type inet:ipv4-prefix;
-       type inet:ipv6-prefix;
-     }
-     description
-      "The ip-prefix type represents an IP prefix and is IP
-       version neutral.  The format of the textual representations
-       implies the IP version.";
-   }
-
-   typedef ipv4-prefix {
-     type string {
-       pattern
-          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-        +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-        + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
-     }
-     description
-      "The ipv4-prefix type represents an IPv4 address prefix.
-       The prefix length is given by the number following the
-       slash character and must be less than or equal to 32.
-
-       A prefix length value of n corresponds to an IP address
-       mask that has n contiguous 1-bits from the most
-       significant bit (MSB) and all other bits set to 0.
-
-       The canonical format of an IPv4 prefix has all bits of
-       the IPv4 address set to zero that are not part of the
-       IPv4 prefix.";
-   }
-
-   typedef ipv6-prefix {
-     type string {
-       pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-             + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-             + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-             + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-             + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
-       pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-             + '(/.+)';
-     }
-     description
-      "The ipv6-prefix type represents an IPv6 address prefix.
-       The prefix length is given by the number following the
-       slash character and must be less than or equal 128.
-
-       A prefix length value of n corresponds to an IP address
-       mask that has n contiguous 1-bits from the most
-       significant bit (MSB) and all other bits set to 0.
-
-       The IPv6 address should have all bits that do not belong
-       to the prefix set to zero.
-
-       The canonical format of an IPv6 prefix has all bits of
-       the IPv6 address set to zero that are not part of the
-       IPv6 prefix.  Furthermore, IPv6 address is represented
-       in the compressed format described in RFC 4291, Section
-       2.2, item 2 with the following additional rules: the ::
-       substitution must be applied to the longest sequence of
-       all-zero 16-bit chunks in an IPv6 address.  If there is
-       a tie, the first sequence of all-zero 16-bit chunks is
-       replaced by ::.  Single all-zero 16-bit chunks are not
-       compressed.  The canonical format uses lowercase
-       characters and leading zeros are not allowed.";
-     reference
-      "RFC 4291: IP Version 6 Addressing Architecture";
-   }
-
-   /*** collection of domain name and URI types ***/
-
-   typedef domain-name {
-     type string {
-       pattern '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
-            +  '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
-            +  '|\.';
-       length "1..253";
-     }
-     description
-      "The domain-name type represents a DNS domain name.  The
-       name SHOULD be fully qualified whenever possible.
-
-       Internet domain names are only loosely specified.  Section
-       3.5 of RFC 1034 recommends a syntax (modified in Section
-       2.1 of RFC 1123).  The pattern above is intended to allow
-       for current practice in domain name use, and some possible
-       future expansion.  It is designed to hold various types of
-       domain names, including names used for A or AAAA records
-       (host names) and other records, such as SRV records.  Note
-       that Internet host names have a stricter syntax (described
-       in RFC 952) than the DNS recommendations in RFCs 1034 and
-       1123, and that systems that want to store host names in
-       schema nodes using the domain-name type are recommended to
-       adhere to this stricter standard to ensure interoperability.
-
-       The encoding of DNS names in the DNS protocol is limited
-       to 255 characters.  Since the encoding consists of labels
-       prefixed by a length bytes and there is a trailing NULL
-       byte, only 253 characters can appear in the textual dotted
-       notation.
-
-       The description clause of schema nodes using the domain-name
-       type MUST describe when and how these names are resolved to
-       IP addresses.  Note that the resolution of a domain-name value
-       may require to query multiple DNS records (e.g., A for IPv4
-       and AAAA for IPv6).  The order of the resolution process and
-       which DNS record takes precedence can either be defined
-       explicitely or it may depend on the configuration of the
-       resolver.
-
-       Domain-name values use the US-ASCII encoding.  Their canonical
-       format uses lowercase US-ASCII characters.  Internationalized
-       domain names MUST be encoded in punycode as described in RFC
-       3492";
-     reference
-      "RFC  952: DoD Internet Host Table Specification
-       RFC 1034: Domain Names - Concepts and Facilities
-       RFC 1123: Requirements for Internet Hosts -- Application
-                 and Support
-       RFC 2782: A DNS RR for specifying the location of services
-                 (DNS SRV)
-       RFC 3492: Punycode: A Bootstring encoding of Unicode for
-                 Internationalized Domain Names in Applications
-                 (IDNA)
-       RFC 5891: Internationalizing Domain Names in Applications
-                 (IDNA): Protocol";
-   }
-
-   typedef host {
-     type union {
-       type inet:ip-address;
-       type inet:domain-name;
-     }
-     description
-      "The host type represents either an IP address or a DNS
-       domain name.";
-   }
-
-   typedef uri {
-     type string;
-     description
-      "The uri type represents a Uniform Resource Identifier
-       (URI) as defined by STD 66.
-
-       Objects using the uri type MUST be in US-ASCII encoding,
-       and MUST be normalized as described by RFC 3986 Sections
-       6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
-       percent-encoding is removed, and all case-insensitive
-       characters are set to lowercase except for hexadecimal
-       digits, which are normalized to uppercase as described in
-       Section 6.2.2.1.
-
-       The purpose of this normalization is to help provide
-       unique URIs.  Note that this normalization is not
-       sufficient to provide uniqueness.  Two URIs that are
-       textually distinct after this normalization may still be
-       equivalent.
-
-       Objects using the uri type may restrict the schemes that
-       they permit.  For example, 'data:' and 'urn:' schemes
-       might not be appropriate.
-
-       A zero-length URI is not a valid URI.  This can be used to
-       express 'URI absent' where required.
-
-       In the value set and its semantics, this type is equivalent
-       to the Uri SMIv2 textual convention defined in RFC 5017.";
-     reference
-      "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
-       RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
-                 Group: Uniform Resource Identifiers (URIs), URLs,
-                 and Uniform Resource Names (URNs): Clarifications
-                 and Recommendations
-       RFC 5017: MIB Textual Conventions for Uniform Resource
-                 Identifiers (URIs)";
-   }
-
- }
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/ietf-interfaces@2013-07-04.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/ietf-interfaces@2013-07-04.yang
deleted file mode 100644 (file)
index 9db753c..0000000
+++ /dev/null
@@ -1,673 +0,0 @@
-module ietf-interfaces {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
-  prefix if;
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-  import iana-if-type {
-    prefix ianaift;
-  }
-
-  organization
-    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/netmod/>
-     WG List:  <mailto:netmod@ietf.org>
-
-     WG Chair: David Kessens
-               <mailto:david.kessens@nsn.com>
-
-     WG Chair: Juergen Schoenwaelder
-               <mailto:j.schoenwaelder@jacobs-university.de>
-
-     Editor:   Martin Bjorklund
-               <mailto:mbj@tail-f.com>";
-
-  description
-    "This module contains a collection of YANG definitions for
-     managing network interfaces.
-
-     Copyright (c) 2013 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC XXXX; see
-     the RFC itself for full legal notices.";
-
-  // RFC Ed.: replace XXXX with actual RFC number and remove this
-  // note.
-
-  // RFC Ed.: update the date below with the date of RFC publication
-  // and remove this note.
-  revision 2013-07-04 {
-    description
-      "Initial revision.";
-    reference
-      "RFC XXXX: A YANG Data Model for Interface Management";
-  }
-
-  /* Typedefs */
-
-  typedef interface-ref {
-    type leafref {
-      path "/if:interfaces/if:interface/if:name";
-    }
-    description
-      "This type is used by data models that need to reference
-       configured interfaces.";
-  }
-
-  typedef interface-state-ref {
-    type leafref {
-      path "/if:interfaces-state/if:interface/if:name";
-    }
-    description
-      "This type is used by data models that need to reference
-       the operationally present interfaces.";
-  }
-
-  /* Features */
-
-  feature arbitrary-names {
-    description
-      "This feature indicates that the device allows user-controlled
-       interfaces to be named arbitrarily.";
-  }
-
-  feature pre-provisioning {
-    description
-      "This feature indicates that the device supports
-       pre-provisioning of interface configuration, i.e., it is
-       possible to configure an interface whose physical interface
-       hardware is not present on the device.";
-  }
-
-  feature if-mib {
-    description
-      "This feature indicates that the device implements IF-MIB.";
-    reference
-      "RFC 2863: The Interfaces Group MIB";
-  }
-
-  /* Data nodes */
-
-  container interfaces {
-    description
-      "Interface configuration parameters.";
-
-    list interface {
-      key "name";
-
-      description
-        "The list of configured interfaces on the device.
-
-         The operational state of an interface is available in the
-         /interfaces-state/interface list.  If the configuration of a
-         system-controlled interface cannot be used by the system
-         (e.g., the interface hardware present does not match the
-         interface type), then the configuration is not applied to
-         the system-controlled interface shown in the
-         /interfaces-state/interface list.  If the the configuration
-         of a user-controlled interface cannot be used by the system,
-         the configured interface is not instantiated in the
-         /interfaces-state/interface list.";
-
-     leaf name {
-        type string;
-        description
-          "The name of the interface.
-
-           A device MAY restrict the allowed values for this leaf,
-           possibly depending on the type of the interface.
-
-           For system-controlled interfaces, this leaf is the
-           device-specific name of the interface.  The 'config false'
-           list /interfaces-state/interface contains the currently
-           existing interfaces on the device.
-
-           If a client tries to create configuration for a
-           system-controlled interface that is not present in the
-           /interfaces-state/interface list, the server MAY reject
-           the request, if the implementation does not support
-           pre-provisioning of interfaces, or if the name refers to
-           an interface that can never exist in the system.  A
-           NETCONF server MUST reply with an rpc-error with the
-           error-tag 'invalid-value' in this case.
-
-           If the device supports pre-provisioning of interface
-           configuration, the feature 'pre-provisioning' is
-           advertised.
-
-           If the device allows arbitrarily named user-controlled
-           interfaces, the feature 'arbitrary-names' is advertised.
-
-           When a configured user-controlled interface is created by
-           the system, it is instantiated with the same name in the
-           /interface-state/interface list.  Since the name in that
-           list MAY be mapped to ifName by an implementation, such an
-           implementation MUST restrict the allowed values for this
-           leaf so that it matches the restrictions of ifName.
-
-           If a NETCONF server that implements this restriction is
-           sent a value that doesn't match the restriction, it MUST
-           reply with an rpc-error with the error-tag
-           'invalid-value'.";
-      }
-
-      leaf description {
-        type string;
-        description
-          "A textual description of the interface.
-
-           This leaf MAY be mapped to ifAlias by an implementation.
-           Such an implementation MUST restrict the allowed values
-           for this leaf so that it matches the restrictions of
-           ifAlias.
-
-           If a NETCONF server that implements this restriction is
-           sent a value that doesn't match the restriction, it MUST
-           reply with an rpc-error with the error-tag
-           'invalid-value'.
-
-           Since ifAlias is defined to be stored in non-volatile
-           storage, the MIB implementation MUST map ifAlias to the
-           value of 'description' in the persistently stored
-           datastore.
-
-           Specifically, if the device supports ':startup', when
-           ifAlias is read the device MUST return the value of
-           'description' in the 'startup' datastore, and when it is
-           written, it MUST be written to the 'running' and 'startup'
-           datastores.  Note that it is up to the implementation if
-           it modifies this single leaf in 'startup', or if it
-           performs an implicit copy-config from 'running' to
-           'startup'.
-
-           If the device does not support ':startup', ifAlias MUST
-           be mapped to the 'description' leaf in the 'running'
-           datastore.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifAlias";
-      }
-
-      leaf type {
-        type ianaift:iana-if-type;
-        mandatory true;
-        description
-          "The type of the interface.
-
-           When an interface entry is created, a server MAY
-           initialize the type leaf with a valid value, e.g., if it
-           is possible to derive the type from the name of the
-           interface.
-
-           If a client tries to set the type of an interface to a
-           value that can never be used by the system, e.g., if the
-           type is not supported or if the type does not match the
-           name of the interface, the server MUST reject the request.
-           A NETCONF server MUST reply with an rpc-error with the
-           error-tag 'invalid-value' in this case.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifType";
-      }
-
-      leaf enabled {
-        type boolean;
-        default "true";
-        description
-          "This leaf contains the configured, desired state of the
-           interface.
-
-           Systems that implement the IF-MIB use the value of this
-           leaf in the 'running' datastore to set
-           IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
-           has been initialized, as described in RFC 2863.
-
-           Changes in this leaf in the 'running' datastore are
-           reflected in ifAdminStatus, but if ifAdminStatus is
-           changed over SNMP, this leaf is not affected.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
-      }
-
-      leaf link-up-down-trap-enable {
-        if-feature if-mib;
-        type enumeration {
-          enum enabled {
-            value 1;
-          }
-          enum disabled {
-            value 2;
-          }
-        }
-        description
-          "Controls whether linkUp/linkDown SNMP notifications
-           should be generated for this interface.
-
-           If this node is not configured, the value 'enabled' is
-           operationally used by the server for interfaces which do
-           not operate on top of any other interface (i.e., there are
-           no 'lower-layer-if' entries), and 'disabled' otherwise.";
-        reference
-          "RFC 2863: The Interfaces Group MIB -
-                     ifLinkUpDownTrapEnable";
-      }
-    }
-  }
-
-  container interfaces-state {
-    config false;
-    description
-      "Data nodes for the operational state of interfaces.";
-
-    list interface {
-      key "name";
-
-      description
-        "The list of interfaces on the device.
-
-         System-controlled interfaces created by the system are
-         always present in this list, whether they are configured or
-         not.";
-
-      leaf name {
-        type string;
-        description
-          "The name of the interface.
-
-           This leaf MAY be mapped to ifName by an implementation.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifName";
-      }
-
-      leaf type {
-        type ianaift:iana-if-type;
-        mandatory true;
-        description
-          "The type of the interface.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifType";
-      }
-
-      leaf admin-status {
-        if-feature if-mib;
-        type enumeration {
-          enum up {
-            value 1;
-            description
-              "Ready to pass packets.";
-          }
-          enum down {
-            value 2;
-            description
-              "Not ready to pass packets and not in some test mode.";
-          }
-          enum testing {
-            value 3;
-            description
-              "In some test mode.";
-          }
-        }
-        mandatory true;
-        description
-          "The desired state of the interface.
-
-           This leaf has the same read semantics as ifAdminStatus.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
-      }
-
-      leaf oper-status {
-        type enumeration {
-          enum up {
-            value 1;
-            description
-              "Ready to pass packets.";
-          }
-          enum down {
-            value 2;
-            description
-              "The interface does not pass any packets.";
-          }
-          enum testing {
-            value 3;
-            description
-              "In some test mode.  No operational packets can
-               be passed.";
-          }
-          enum unknown {
-            value 4;
-            description
-              "Status cannot be determined for some reason.";
-          }
-          enum dormant {
-            value 5;
-            description
-              "Waiting for some external event.";
-          }
-          enum not-present {
-            value 6;
-            description
-              "Some component (typically hardware) is missing.";
-          }
-          enum lower-layer-down {
-            value 7;
-            description
-              "Down due to state of lower-layer interface(s).";
-          }
-        }
-        mandatory true;
-        description
-          "The current operational state of the interface.
-
-           This leaf has the same semantics as ifOperStatus.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifOperStatus";
-      }
-
-      leaf last-change {
-        type yang:date-and-time;
-        description
-          "The time the interface entered its current operational
-           state.  If the current state was entered prior to the
-           last re-initialization of the local network management
-           subsystem, then this node is not present.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifLastChange";
-      }
-
-      leaf if-index {
-        if-feature if-mib;
-        type int32 {
-          range "1..2147483647";
-        }
-        mandatory true;
-        description
-          "The ifIndex value for the ifEntry represented by this
-           interface.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifIndex";
-      }
-
-      leaf phys-address {
-        type yang:phys-address;
-        description
-          "The interface's address at its protocol sub-layer.  For
-          example, for an 802.x interface, this object normally
-          contains a MAC address.  The interface's media-specific
-          modules must define the bit and byte ordering and the
-          format of the value of this object.  For interfaces that do
-          not have such an address (e.g., a serial line), this node
-          is not present.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifPhysAddress";
-      }
-
-      leaf-list higher-layer-if {
-        type interface-state-ref;
-        description
-          "A list of references to interfaces layered on top of this
-           interface.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifStackTable";
-      }
-
-      leaf-list lower-layer-if {
-        type interface-state-ref;
-        description
-          "A list of references to interfaces layered underneath this
-           interface.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifStackTable";
-      }
-
-      leaf speed {
-        type yang:gauge64;
-        units "bits / second";
-        description
-            "An estimate of the interface's current bandwidth in bits
-             per second.  For interfaces that do not vary in
-             bandwidth or for those where no accurate estimation can
-             be made, this node should contain the nominal bandwidth.
-             For interfaces that have no concept of bandwidth, this
-             node is not present.";
-        reference
-          "RFC 2863: The Interfaces Group MIB -
-                     ifSpeed, ifHighSpeed";
-      }
-
-      container statistics {
-        description
-          "A collection of interface-related statistics objects.";
-
-        leaf discontinuity-time {
-          type yang:date-and-time;
-          mandatory true;
-          description
-            "The time on the most recent occasion at which any one or
-             more of this interface's counters suffered a
-             discontinuity.  If no such discontinuities have occurred
-             since the last re-initialization of the local management
-             subsystem, then this node contains the time the local
-             management subsystem re-initialized itself.";
-        }
-
-        leaf in-octets {
-          type yang:counter64;
-          description
-            "The total number of octets received on the interface,
-             including framing characters.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifHCInOctets";
-        }
-        leaf in-unicast-pkts {
-          type yang:counter64;
-          description
-            "The number of packets, delivered by this sub-layer to a
-             higher (sub-)layer, which were not addressed to a
-             multicast or broadcast address at this sub-layer.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
-        }
-        leaf in-broadcast-pkts {
-          type yang:counter64;
-          description
-            "The number of packets, delivered by this sub-layer to a
-             higher (sub-)layer, which were addressed to a broadcast
-             address at this sub-layer.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB -
-                       ifHCInBroadcastPkts";
-        }
-        leaf in-multicast-pkts {
-          type yang:counter64;
-          description
-            "The number of packets, delivered by this sub-layer to a
-             higher (sub-)layer, which were addressed to a multicast
-             address at this sub-layer.  For a MAC layer protocol,
-             this includes both Group and Functional addresses.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB -
-                       ifHCInMulticastPkts";
-        }
-        leaf in-discards {
-          type yang:counter32;
-          description
-            "The number of inbound packets which were chosen to be
-             discarded even though no errors had been detected to
-             prevent their being deliverable to a higher-layer
-             protocol.  One possible reason for discarding such a
-             packet could be to free up buffer space.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifInDiscards";
-        }
-        leaf in-errors {
-          type yang:counter32;
-          description
-            "For packet-oriented interfaces, the number of inbound
-             packets that contained errors preventing them from being
-             deliverable to a higher-layer protocol.  For character-
-             oriented or fixed-length interfaces, the number of
-             inbound transmission units that contained errors
-             preventing them from being deliverable to a higher-layer
-             protocol.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifInErrors";
-        }
-        leaf in-unknown-protos {
-          type yang:counter32;
-          description
-            "For packet-oriented interfaces, the number of packets
-             received via the interface which were discarded because
-             of an unknown or unsupported protocol.  For
-             character-oriented or fixed-length interfaces that
-             support protocol multiplexing the number of transmission
-             units received via the interface which were discarded
-             because of an unknown or unsupported protocol.  For any
-             interface that does not support protocol multiplexing,
-             this counter is not present.
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
-        }
-
-        leaf out-octets {
-          type yang:counter64;
-          description
-            "The total number of octets transmitted out of the
-             interface, including framing characters.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
-        }
-        leaf out-unicast-pkts {
-          type yang:counter64;
-          description
-            "The total number of packets that higher-level protocols
-             requested be transmitted, and which were not addressed
-             to a multicast or broadcast address at this sub-layer,
-             including those that were discarded or not sent.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
-        }
-        leaf out-broadcast-pkts {
-          type yang:counter64;
-          description
-            "The total number of packets that higher-level protocols
-             requested be transmitted, and which were addressed to a
-             broadcast address at this sub-layer, including those
-             that were discarded or not sent.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB -
-                       ifHCOutBroadcastPkts";
-        }
-        leaf out-multicast-pkts {
-          type yang:counter64;
-          description
-            "The total number of packets that higher-level protocols
-             requested be transmitted, and which were addressed to a
-             multicast address at this sub-layer, including those
-             that were discarded or not sent.  For a MAC layer
-             protocol, this includes both Group and Functional
-             addresses.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB -
-                       ifHCOutMulticastPkts";
-        }
-        leaf out-discards {
-          type yang:counter32;
-          description
-            "The number of outbound packets which were chosen to be
-             discarded even though no errors had been detected to
-             prevent their being transmitted.  One possible reason
-             for discarding such a packet could be to free up buffer
-             space.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifOutDiscards";
-        }
-        leaf out-errors {
-          type yang:counter32;
-          description
-            "For packet-oriented interfaces, the number of outbound
-             packets that could not be transmitted because of errors.
-             For character-oriented or fixed-length interfaces, the
-             number of outbound transmission units that could not be
-             transmitted because of errors.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifOutErrors";
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/ietf-restconf@2013-10-19.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/ietf-restconf@2013-10-19.yang
deleted file mode 100644 (file)
index 16766b0..0000000
+++ /dev/null
@@ -1,684 +0,0 @@
-module ietf-restconf {
-     namespace "urn:ietf:params:xml:ns:yang:ietf-restconf";
-     prefix "restconf";
-
-     import ietf-yang-types { prefix yang; }
-     import ietf-inet-types { prefix inet; }
-     organization
-       "IETF NETCONF (Network Configuration) Working Group";
-
-     contact
-       "Editor:   Andy Bierman
-                  <mailto:andy@yumaworks.com>
-
-        Editor:   Martin Bjorklund
-                  <mailto:mbj@tail-f.com>
-
-        Editor:   Kent Watsen
-                  <mailto:kwatsen@juniper.net>
-
-        Editor:   Rex Fernando
-                  <mailto:rex@cisco.com>";
-
-     description
-       "This module contains conceptual YANG specifications
-        for the YANG Patch and error content that is used in
-        RESTCONF protocol messages. A conceptual container
-        representing the RESTCONF API nodes (media type
-        application/yang.api).
-
-        Note that the YANG definitions within this module do not
-        represent configuration data of any kind.
-        The YANG grouping statements provide a normative syntax
-        for XML and JSON message encoding purposes.
-        Copyright (c) 2013 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of RFC XXXX; see
-        the RFC itself for full legal notices.";
-
-     // RFC Ed.: replace XXXX with actual RFC number and remove this
-     // note.
-
-     // RFC Ed.: remove this note
-     // Note: extracted from draft-bierman-netconf-restconf-02.txt
-
-     // RFC Ed.: update the date below with the date of RFC publication
-     // and remove this note.
-     revision 2013-10-19 {
-       description
-         "Initial revision.";
-       reference
-         "RFC XXXX: RESTCONF Protocol.";
-     }
-
-     typedef data-resource-identifier {
-       type string {
-         length "1 .. max";
-       }
-       description
-         "Contains a Data Resource Identifier formatted string
-          to identify a specific data node. The data node that
-          uses this data type SHOULD define the document root
-          for data resource identifiers.  The default document
-          root is the target datastore conceptual root node.
-          Data resource identifiers are defined relative to
-          this document root.";
-       reference
-         "RFC XXXX: [sec. 5.3.1.1 ABNF For Data Resource Identifiers]";
-     }
-
-     // this typedef is TBD; not currently used
-     typedef datastore-identifier {
-       type union {
-         type enumeration {
-           enum candidate {
-             description
-               "Identifies the NETCONF shared candidate datastore.";
-             reference
-               "RFC 6241, section 8.3";
-           }
-           enum running {
-             description
-               "Identifies the NETCONF running datastore.";
-             reference
-               "RFC 6241, section 5.1";
-           }
-           enum startup {
-             description
-               "Identifies the NETCONF startup datastore.";
-             reference
-               "RFC 6241, section 8.7";
-           }
-         }
-         type string;
-       }
-       description
-         "Contains a string to identify a specific datastore.
-          The enumerated datastore identifier values are
-          reserved for standard datastore names.";
-     }
-
-     typedef revision-identifier {
-       type string {
-         pattern '\d{4}-\d{2}-\d{2}';
-       }
-       description
-         "Represents a specific date in YYYY-MM-DD format.
-          TBD: make pattern more precise to exclude leading zeros.";
-     }
-
-     grouping yang-patch {
-       description
-         "A grouping that contains a YANG container
-          representing the syntax and semantics of a
-          YANG Patch edit request message.";
-
-       container yang-patch {
-         description
-           "Represents a conceptual sequence of datastore edits,
-            called a patch. Each patch is given a client-assigned
-            patch identifier. Each edit MUST be applied
-            in ascending order, and all edits MUST be applied.
-            If any errors occur, then the target datastore MUST NOT
-            be changed by the patch operation.
-
-            A patch MUST be validated by the server to be a
-            well-formed message before any of the patch edits
-            are validated or attempted.
-
-            YANG datastore validation (defined in RFC 6020, section 
-            8.3.3) is performed after all edits have been
-            individually validated.
-
-            It is possible for a datastore constraint violation to occur
-            due to any node in the datastore, including nodes not
-            included in the edit list. Any validation errors MUST
-            be reported in the reply message.";
-
-         reference
-           "RFC 6020, section 8.3.";
-
-         leaf patch-id {
-           type string;
-           description
-             "An arbitrary string provided by the client to identify
-              the entire patch.  This value SHOULD be present in any
-              audit logging records generated by the server for the
-              patch. Error messages returned by the server pertaining
-              to this patch will be identified by this patch-id value.";
-         }
-
-         leaf comment {
-           type string {
-             length "0 .. 1024";
-           }
-           description
-             "An arbitrary string provided by the client to describe
-              the entire patch.  This value SHOULD be present in any
-              audit logging records generated by the server for the
-              patch.";
-         }
-
-         list edit {
-           key edit-id;
-           ordered-by user;
-
-           description
-             "Represents one edit within the YANG Patch
-              request message.";
-           leaf edit-id {
-             type string;
-             description
-               "Arbitrary string index for the edit.
-                Error messages returned by the server pertaining
-                to a specific edit will be identified by this
-                value.";
-           }
-
-           leaf operation {
-             type enumeration {
-               enum create {
-                 description
-                   "The target data node is created using the
-                    supplied value, only if it does not already
-                    exist.";
-               }
-               enum delete {
-                 description
-                   "Delete the target node, only if the data resource
-                    currently exists, otherwise return an error.";
-               }
-               enum insert {
-                 description
-                   "Insert the supplied value into a user-ordered
-                    list or leaf-list entry. The target node must
-                    represent a new data resource.";
-               }
-               enum merge {
-                 description
-                   "The supplied value is merged with the target data
-                    node.";
-               }
-               enum move {
-                 description
-                   "Move the target node. Reorder a user-ordered
-                    list or leaf-list. The target node must represent
-                    an existing data resource.";
-               }
-               enum replace {
-                 description
-                   "The supplied value is used to replace the target
-                    data node.";
-               }
-               enum remove {
-                 description
-                   "Delete the target node if it currently exists.";
-               }
-             }
-             mandatory true;
-             description
-               "The datastore operation requested for the associated
-                edit entry";
-           }
-
-           leaf target {
-             type data-resource-identifier;
-             mandatory true;
-             description
-               "Identifies the target data resource for the edit
-                operation.";
-           }
-
-           leaf point {
-             when "(../operation = 'insert' or " +
-               "../operation = 'move') and " +
-               "(../where = 'before' or ../where = 'after')" {
-               description
-                 "Point leaf only applies for insert or move
-                  operations, before or after an existing entry.";
-             }
-             type data-resource-identifier;
-             description
-               "The absolute URL path for the data node that is being
-                used as the insertion point or move point for the
-                target of this edit entry.";
-           }
-
-           leaf where {
-             when "../operation = 'insert' or ../operation = 'move'" {
-               description
-                 "Where leaf only applies for insert or move
-                  operations.";
-             }
-             type enumeration {
-               enum before {
-                 description
-                   "Insert or move a data node before the data resource
-                    identified by the 'point' parameter.";
-               }
-               enum after {
-                 description
-                   "Insert or move a data node after the data resource
-                    identified by the 'point' parameter.";
-               }
-               enum first {
-                 description
-                   "Insert or move a data node so it becomes ordered
-                    as the first entry.";
-               }
-               enum last {
-                 description
-                   "Insert or move a data node so it becomes ordered
-                    as the last entry.";
-               }
-
-             }
-             default last;
-             description
-               "Identifies where a data resource will be inserted or
-                moved. YANG only allows these operations for
-                list and leaf-list data nodes that are ordered-by
-                user.";
-           }
-
-           anyxml value {
-             when "(../operation = 'create' or " +
-               "../operation = 'merge' " +
-               "or ../operation = 'replace' or " +
-               "../operation = 'insert')" {
-               description
-                 "Value node only used for create, merge,
-                  replace, and insert operations";
-             }
-             description
-               "Value used for this edit operation.";
-           }
-         }
-       }
-
-     } // grouping yang-patch
-
-
-     grouping yang-patch-status {
-
-       description
-         "A grouping that contains a YANG container
-          representing the syntax and semantics of
-          YANG Patch status response message.";
-
-       container yang-patch-status {
-         description
-           "A container representing the response message
-            sent by the server after a YANG Patch edit
-            request message has been processed.";
-
-         leaf patch-id {
-           type string;
-           description
-             "The patch-id value used in the request";
-         }
-
-         choice global-status {
-           description
-             "Report global errors or complete success.
-              If there is no case selected then errors
-              are reported in the edit-status container.";
-
-           case global-errors {
-             uses errors;
-             description
-               "This container will be present if global
-                errors unrelated to a specific edit occurred.";
-           }
-           leaf ok {
-             type empty;
-             description
-               "This leaf will be present if the request succeeded
-                and there are no errors reported in the edit-status
-                container.";
-           }
-         }
-
-         container edit-status {
-           description
-             "This container will be present if there are
-              edit-specific status responses to report.";
-
-           list edit {
-             key edit-id;
-
-             description
-               "Represents a list of status responses,
-                corresponding to edits in the YANG Patch
-                request message.  If an edit entry was
-                skipped or not reached by the server,
-                then this list will not contain a corresponding
-                entry for that edit.";
-
-             leaf edit-id {
-               type string;
-                description
-                  "Response status is for the edit list entry
-                   with this edit-id value.";
-             }
-             choice edit-status-choice {
-               description
-                 "A choice between different types of status
-                  responses for each edit entry.";
-               leaf ok {
-                 type empty;
-                 description
-                   "This edit entry was invoked without any
-                    errors detected by the server associated
-                    with this edit.";
-               }
-               leaf location {
-                 type inet:uri;
-                 description
-                   "Contains the Location header value that would be
-                    returned if this edit causes a new resource to be
-                    created. If the edit identified by the same edit-id
-                    value was successfully invoked and a new resource
-                    was created, then this field will be returned
-                    instead of 'ok'.";
-               }
-               case errors {
-                 uses errors;
-                 description
-                   "The server detected errors associated with the
-                     edit identified by the same edit-id value.";
-               }
-             }
-           }
-         }
-       }
-     }  // grouping yang-patch-status
-
-
-     grouping errors {
-
-       description
-         "A grouping that contains a YANG container
-          representing the syntax and semantics of a
-          YANG Patch errors report within a response message.";
-
-       container errors {
-         config false;  // needed so list error does not need a key
-         description
-           "Represents an error report returned by the server if
-            a request results in an error.";
-
-         list error {
-           description
-             "An entry containing information about one
-              specific error that occurred while processing
-              a RESTCONF request.";
-           reference "RFC 6241, Section 4.3";
-
-           leaf error-type {
-             type enumeration {
-               enum transport {
-                 description "The transport layer";
-               }
-               enum rpc {
-                 description "The rpc or notification layer";
-               }
-               enum protocol {
-                 description "The protocol operation layer";
-               }
-               enum application {
-                 description "The server application layer";
-               }
-             }
-             mandatory true;
-             description
-               "The protocol layer where the error occurred.";
-           }
-
-           leaf error-tag {
-             type string;
-             mandatory true;
-             description
-               "The enumerated error tag.";
-           }
-
-           leaf error-app-tag {
-             type string;
-             description
-               "The application-specific error tag.";
-           }
-
-           leaf error-path {
-             type data-resource-identifier;
-             description
-               "The target data resource identifier associated
-                with the error, if any.";
-           }
-           leaf error-message {
-             type string;
-             description
-               "A message describing the error.";
-           }
-
-           container error-info {
-              description
-                "A container allowing additional information
-                 to be included in the error report.";
-              // arbitrary anyxml content here
-           }
-         }
-       }
-     } // grouping errors
-
-
-     grouping restconf {
-
-       description
-         "A grouping that contains a YANG container
-          representing the syntax and semantics of
-          the RESTCONF API resource.";
-
-       container restconf {
-         description
-           "Conceptual container representing the
-            application/yang.api resource type.";
-
-         container config {
-           description
-             "Container representing the application/yang.datastore
-              resource type. Represents the conceptual root of the
-              unified configuration datastore containing YANG data
-              nodes. The child nodes of this container are
-              configuration data resources (application/yang.data)
-              defined as top-level YANG data nodes from the modules
-              advertised by the server in /restconf/modules.";
-         }
-
-         container operational {
-           description
-             "Container representing the application/yang.datastore
-              resource type. Represents the conceptual root of the
-              operational data supported by the server.  The child
-              nodes of this container are operational data resources
-              (application/yang.data) defined as top-level
-              YANG data nodes from the modules advertised by
-              the server in /restconf/modules.";
-         }
-
-         container modules {
-           description
-             "Contains a list of module description entries.
-              These modules are currently loaded into the server.";
-
-           list module {
-             key "name revision";
-             description
-               "Each entry represents one module currently
-                supported by the server.";
-
-             leaf name {
-               type yang:yang-identifier;
-               description "The YANG module name.";
-             }
-             leaf revision {
-               type union {
-                 type revision-identifier;
-                 type string { length 0; }
-               }
-               description
-                 "The YANG module revision date. An empty string is
-                  used if no revision statement is present in the
-                  YANG module.";
-             }
-             leaf namespace {
-               type inet:uri;
-               mandatory true;
-               description
-                 "The XML namespace identifier for this module.";
-             }
-             leaf-list feature {
-               type yang:yang-identifier;
-               description
-                 "List of YANG feature names from this module that are
-                  supported by the server.";
-             }
-             leaf-list deviation {
-               type yang:yang-identifier;
-               description
-                 "List of YANG deviation module names used by this
-                  server to modify the conformance of the module
-                  associated with this entry.";
-             }
-           }
-         }
-
-         container operations {
-           description
-             "Container for all operation resources
-              (application/yang.operation),
-
-              Each resource is represented as an empty leaf with the
-              name of the RPC operation from the YANG rpc statement.
-
-              E.g.;
-
-                 POST /restconf/operations/show-log-errors
-
-                 leaf show-log-errors {
-                   type empty;
-                 }
-             ";
-         }
-
-         container streams {
-           description
-             "Container representing the notification event streams
-              supported by the server.";
-            reference
-              "RFC 5277, Section 3.4, <streams> element.";
-
-           list stream {
-             key name;
-             description
-               "Each entry describes an event stream supported by
-                the server.";
-
-             leaf name {
-               type string;
-               description "The stream name";
-               reference "RFC 5277, Section 3.4, <name> element.";
-             }
-
-             leaf description {
-               type string;
-               description "Description of stream content";
-               reference
-                 "RFC 5277, Section 3.4, <description> element.";
-             }
-
-             leaf replay-support {
-               type boolean;
-               description
-                 "Indicates if replay buffer supported for this stream";
-               reference
-                 "RFC 5277, Section 3.4, <replaySupport> element.";
-             }
-
-             leaf replay-log-creation-time {
-               type yang:date-and-time;
-               description
-                 "Indicates the time the replay log for this stream
-                  was created.";
-               reference
-                 "RFC 5277, Section 3.4, <replayLogCreationTime>
-                  element.";
-             }
-
-             leaf events {
-               type empty;
-               description
-                 "Represents the entry point for establishing
-                  notification delivery via server sent events.";
-             }
-           }
-         }
-
-         leaf version {
-           type enumeration {
-             enum "1.0" {
-               description
-                 "Version 1.0 of the RESTCONF protocol.";
-             }
-           }
-           config false;
-           description
-             "Contains the RESTCONF protocol version.";
-         }
-       }
-     }  // grouping restconf
-
-
-     grouping notification {
-       description
-         "Contains the notification message wrapper definition.";
-
-       container notification {
-         description
-           "RESTCONF notification message wrapper.";
-         leaf event-time {
-           type yang:date-and-time;
-           mandatory true;
-           description
-             "The time the event was generated by the
-              event source.";
-           reference
-             "RFC 5277, section 4, <eventTime> element.";
-         }
-
-         /* The YANG-specific notification container is encoded
-          * after the 'event-time' element.  The format
-          * corresponds to the notificationContent element
-          * in RFC 5277, section 4. For example:
-          *
-          *  module example-one {
-          *     ...
-          *     notification event1 { ... }
-          *
-          *  }
-          *
-          *  Encoded as element 'event1' in the namespace
-          *  for module 'example-one'.
-          */
-       }
-     }  // grouping notification
-
-   }
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/ietf-yang-types.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/ietf-yang-types.yang
deleted file mode 100644 (file)
index 07e50b3..0000000
+++ /dev/null
@@ -1,417 +0,0 @@
- module ietf-yang-types {
-
-   namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
-   prefix "yang";
-
-   organization
-    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-   contact
-    "WG Web:   <http://tools.ietf.org/wg/netmod/>
-     WG List:  <mailto:netmod@ietf.org>
-
-     WG Chair: David Partain
-               <mailto:david.partain@ericsson.com>
-
-     WG Chair: David Kessens
-               <mailto:david.kessens@nsn.com>
-
-     Editor:   Juergen Schoenwaelder
-               <mailto:j.schoenwaelder@jacobs-university.de>";
-
-   description
-    "This module contains a collection of generally useful derived
-     YANG data types.
-
-     Copyright (c) 2010 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or without
-     modification, is permitted pursuant to, and subject to the license
-     terms contained in, the Simplified BSD License set forth in Section
-     4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6021; see
-     the RFC itself for full legal notices.";
-
-   revision 2010-09-24 {
-     description
-      "Initial revision.";
-     reference
-      "RFC 6021: Common YANG Data Types";
-   }
-
-   /*** collection of counter and gauge types ***/
-
-   typedef counter32 {
-     type uint32;
-     description
-      "The counter32 type represents a non-negative integer
-       that monotonically increases until it reaches a
-       maximum value of 2^32-1 (4294967295 decimal), when it
-       wraps around and starts increasing again from zero.
-
-       Counters have no defined 'initial' value, and thus, a
-       single value of a counter has (in general) no information
-       content.  Discontinuities in the monotonically increasing
-       value normally occur at re-initialization of the
-       management system, and at other times as specified in the
-       description of a schema node using this type.  If such
-       other times can occur, for example, the creation of
-       a schema node of type counter32 at times other than
-       re-initialization, then a corresponding schema node
-       should be defined, with an appropriate type, to indicate
-       the last discontinuity.
-
-       The counter32 type should not be used for configuration
-       schema nodes.  A default statement SHOULD NOT be used in
-       combination with the type counter32.
-
-       In the value set and its semantics, this type is equivalent
-       to the Counter32 type of the SMIv2.";
-     reference
-      "RFC 2578: Structure of Management Information Version 2 (SMIv2)";
-   }
-
-   typedef zero-based-counter32 {
-     type yang:counter32;
-     default "0";
-     description
-      "The zero-based-counter32 type represents a counter32
-       that has the defined 'initial' value zero.
-
-       A schema node of this type will be set to zero (0) on creation
-       and will thereafter increase monotonically until it reaches
-       a maximum value of 2^32-1 (4294967295 decimal), when it
-       wraps around and starts increasing again from zero.
-
-       Provided that an application discovers a new schema node
-       of this type within the minimum time to wrap, it can use the
-       'initial' value as a delta.  It is important for a management
-       station to be aware of this minimum time and the actual time
-       between polls, and to discard data if the actual time is too
-       long or there is no defined minimum time.
-
-       In the value set and its semantics, this type is equivalent
-       to the ZeroBasedCounter32 textual convention of the SMIv2.";
-     reference
-       "RFC 4502: Remote Network Monitoring Management Information
-                  Base Version 2";
-   }
-
-   typedef counter64 {
-     type uint64;
-     description
-      "The counter64 type represents a non-negative integer
-       that monotonically increases until it reaches a
-       maximum value of 2^64-1 (18446744073709551615 decimal),
-       when it wraps around and starts increasing again from zero.
-
-       Counters have no defined 'initial' value, and thus, a
-       single value of a counter has (in general) no information
-       content.  Discontinuities in the monotonically increasing
-       value normally occur at re-initialization of the
-       management system, and at other times as specified in the
-       description of a schema node using this type.  If such
-       other times can occur, for example, the creation of
-       a schema node of type counter64 at times other than
-       re-initialization, then a corresponding schema node
-       should be defined, with an appropriate type, to indicate
-       the last discontinuity.
-
-       The counter64 type should not be used for configuration
-       schema nodes.  A default statement SHOULD NOT be used in
-       combination with the type counter64.
-
-       In the value set and its semantics, this type is equivalent
-       to the Counter64 type of the SMIv2.";
-     reference
-      "RFC 2578: Structure of Management Information Version 2 (SMIv2)";
-   }
-
-   typedef zero-based-counter64 {
-     type yang:counter64;
-     default "0";
-     description
-      "The zero-based-counter64 type represents a counter64 that
-       has the defined 'initial' value zero.
-
-       A schema node of this type will be set to zero (0) on creation
-       and will thereafter increase monotonically until it reaches
-       a maximum value of 2^64-1 (18446744073709551615 decimal),
-       when it wraps around and starts increasing again from zero.
-
-       Provided that an application discovers a new schema node
-       of this type within the minimum time to wrap, it can use the
-       'initial' value as a delta.  It is important for a management
-       station to be aware of this minimum time and the actual time
-       between polls, and to discard data if the actual time is too
-       long or there is no defined minimum time.
-
-       In the value set and its semantics, this type is equivalent
-       to the ZeroBasedCounter64 textual convention of the SMIv2.";
-     reference
-      "RFC 2856: Textual Conventions for Additional High Capacity
-                 Data Types";
-   }
-
-   typedef gauge32 {
-     type uint32;
-     description
-      "The gauge32 type represents a non-negative integer, which
-       may increase or decrease, but shall never exceed a maximum
-       value, nor fall below a minimum value.  The maximum value
-       cannot be greater than 2^32-1 (4294967295 decimal), and
-       the minimum value cannot be smaller than 0.  The value of
-       a gauge32 has its maximum value whenever the information
-       being modeled is greater than or equal to its maximum
-       value, and has its minimum value whenever the information
-       being modeled is smaller than or equal to its minimum value.
-       If the information being modeled subsequently decreases
-       below (increases above) the maximum (minimum) value, the
-       gauge32 also decreases (increases).
-
-       In the value set and its semantics, this type is equivalent
-       to the Gauge32 type of the SMIv2.";
-     reference
-      "RFC 2578: Structure of Management Information Version 2 (SMIv2)";
-   }
-
-   typedef gauge64 {
-     type uint64;
-     description
-      "The gauge64 type represents a non-negative integer, which
-       may increase or decrease, but shall never exceed a maximum
-       value, nor fall below a minimum value.  The maximum value
-       cannot be greater than 2^64-1 (18446744073709551615), and
-       the minimum value cannot be smaller than 0.  The value of
-       a gauge64 has its maximum value whenever the information
-       being modeled is greater than or equal to its maximum
-       value, and has its minimum value whenever the information
-       being modeled is smaller than or equal to its minimum value.
-       If the information being modeled subsequently decreases
-       below (increases above) the maximum (minimum) value, the
-       gauge64 also decreases (increases).
-
-       In the value set and its semantics, this type is equivalent
-       to the CounterBasedGauge64 SMIv2 textual convention defined
-       in RFC 2856";
-     reference
-      "RFC 2856: Textual Conventions for Additional High Capacity
-                 Data Types";
-   }
-
-   /*** collection of identifier related types ***/
-
-   typedef object-identifier {
-     type string {
-       pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
-             + '(\.(0|([1-9]\d*)))*';
-     }
-     description
-      "The object-identifier type represents administratively
-       assigned names in a registration-hierarchical-name tree.
-
-       Values of this type are denoted as a sequence of numerical
-       non-negative sub-identifier values.  Each sub-identifier
-       value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
-       are separated by single dots and without any intermediate
-       whitespace.
-
-       The ASN.1 standard restricts the value space of the first
-       sub-identifier to 0, 1, or 2.  Furthermore, the value space
-       of the second sub-identifier is restricted to the range
-       0 to 39 if the first sub-identifier is 0 or 1.  Finally,
-       the ASN.1 standard requires that an object identifier
-       has always at least two sub-identifier.  The pattern
-       captures these restrictions.
-
-       Although the number of sub-identifiers is not limited,
-       module designers should realize that there may be
-       implementations that stick with the SMIv2 limit of 128
-       sub-identifiers.
-
-       This type is a superset of the SMIv2 OBJECT IDENTIFIER type
-       since it is not restricted to 128 sub-identifiers.  Hence,
-       this type SHOULD NOT be used to represent the SMIv2 OBJECT
-       IDENTIFIER type, the object-identifier-128 type SHOULD be
-       used instead.";
-     reference
-      "ISO9834-1: Information technology -- Open Systems
-       Interconnection -- Procedures for the operation of OSI
-       Registration Authorities: General procedures and top
-       arcs of the ASN.1 Object Identifier tree";
-   }
-
-
-
-
-   typedef object-identifier-128 {
-     type object-identifier {
-       pattern '\d*(\.\d*){1,127}';
-     }
-     description
-      "This type represents object-identifiers restricted to 128
-       sub-identifiers.
-
-       In the value set and its semantics, this type is equivalent
-       to the OBJECT IDENTIFIER type of the SMIv2.";
-     reference
-      "RFC 2578: Structure of Management Information Version 2 (SMIv2)";
-   }
-   
-    typedef yang-identifier {
-       type string {
-         length "1..max";
-         pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
-         pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
-       }
-       description
-         "A YANG identifier string as defined by the 'identifier'
-          rule in Section 12 of RFC 6020.  An identifier must
-          start with an alphabetic character or an underscore
-          followed by an arbitrary sequence of alphabetic or
-          numeric characters, underscores, hyphens, or dots.
-
-          A YANG identifier MUST NOT start with any possible
-          combination of the lowercase or uppercase character
-          sequence 'xml'.";
-       reference
-         "RFC 6020: YANG - A Data Modeling Language for the Network
-                    Configuration Protocol (NETCONF)";
-     }   
-
-   /*** collection of date and time related types ***/
-
-   typedef date-and-time {
-     type string {
-       pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
-             + '(Z|[\+\-]\d{2}:\d{2})';
-     }
-     description
-      "The date-and-time type is a profile of the ISO 8601
-       standard for representation of dates and times using the
-       Gregorian calendar.  The profile is defined by the
-       date-time production in Section 5.6 of RFC 3339.
-
-       The date-and-time type is compatible with the dateTime XML
-       schema type with the following notable exceptions:
-
-       (a) The date-and-time type does not allow negative years.
-
-       (b) The date-and-time time-offset -00:00 indicates an unknown
-           time zone (see RFC 3339) while -00:00 and +00:00 and Z all
-           represent the same time zone in dateTime.
-
-       (c) The canonical format (see below) of data-and-time values
-           differs from the canonical format used by the dateTime XML
-           schema type, which requires all times to be in UTC using the
-           time-offset 'Z'.
-
-       This type is not equivalent to the DateAndTime textual
-       convention of the SMIv2 since RFC 3339 uses a different
-       separator between full-date and full-time and provides
-       higher resolution of time-secfrac.
-
-       The canonical format for date-and-time values with a known time
-       zone uses a numeric time zone offset that is calculated using
-       the device's configured known offset to UTC time.  A change of
-       the device's offset to UTC time will cause date-and-time values
-       to change accordingly.  Such changes might happen periodically
-       in case a server follows automatically daylight saving time
-       (DST) time zone offset changes.  The canonical format for
-       date-and-time values with an unknown time zone (usually referring
-       to the notion of local time) uses the time-offset -00:00.";
-     reference
-      "RFC 3339: Date and Time on the Internet: Timestamps
-       RFC 2579: Textual Conventions for SMIv2
-       XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
-   }
-
-   typedef timeticks {
-     type uint32;
-     description
-      "The timeticks type represents a non-negative integer that
-       represents the time, modulo 2^32 (4294967296 decimal), in
-       hundredths of a second between two epochs.  When a schema
-       node is defined that uses this type, the description of
-       the schema node identifies both of the reference epochs.
-
-       In the value set and its semantics, this type is equivalent
-       to the TimeTicks type of the SMIv2.";
-     reference
-      "RFC 2578: Structure of Management Information Version 2 (SMIv2)";
-   }
-
-   typedef timestamp {
-     type yang:timeticks;
-     description
-      "The timestamp type represents the value of an associated
-       timeticks schema node at which a specific occurrence happened.
-       The specific occurrence must be defined in the description
-       of any schema node defined using this type.  When the specific
-       occurrence occurred prior to the last time the associated
-       timeticks attribute was zero, then the timestamp value is
-       zero.  Note that this requires all timestamp values to be
-       reset to zero when the value of the associated timeticks
-       attribute reaches 497+ days and wraps around to zero.
-
-       The associated timeticks schema node must be specified
-       in the description of any schema node using this type.
-
-       In the value set and its semantics, this type is equivalent
-       to the TimeStamp textual convention of the SMIv2.";
-     reference
-      "RFC 2579: Textual Conventions for SMIv2";
-   }
-
-   /*** collection of generic address types ***/
-
-   typedef phys-address {
-     type string {
-       pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-     }
-     description
-      "Represents media- or physical-level addresses represented
-       as a sequence octets, each octet represented by two hexadecimal
-       numbers.  Octets are separated by colons.  The canonical
-       representation uses lowercase characters.
-
-       In the value set and its semantics, this type is equivalent
-       to the PhysAddress textual convention of the SMIv2.";
-     reference
-      "RFC 2579: Textual Conventions for SMIv2";
-   }
-
-   typedef mac-address {
-     type string {
-       pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
-     }
-     description
-      "The mac-address type represents an IEEE 802 MAC address.
-       The canonical representation uses lowercase characters.
-
-       In the value set and its semantics, this type is equivalent
-       to the MacAddress textual convention of the SMIv2.";
-     reference
-      "IEEE 802: IEEE Standard for Local and Metropolitan Area
-                 Networks: Overview and Architecture
-       RFC 2579: Textual Conventions for SMIv2";
-   }
-
-   /*** collection of XML specific types ***/
-
-   typedef xpath1.0 {
-     type string;
-     description
-      "This type represents an XPATH 1.0 expression.
-
-       When a schema node is defined that uses this type, the
-       description of the schema node MUST specify the XPath
-       context in which the XPath expression is evaluated.";
-     reference
-      "XPATH: XML Path Language (XPath) Version 1.0";
-   }
-
- }
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/module1.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/module1.yang
deleted file mode 100644 (file)
index 604fe94..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-module module1 {
-    namespace "module:1";
-    prefix "mod1";
-    revision "2014-01-01";
-    
-    rpc dummy-rpc1-module1 {
-    }
-    
-    rpc dummy-rpc2-module1 {
-    }
-    
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/module2.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/module2.yang
deleted file mode 100644 (file)
index 7b359f3..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-module module2 {
-    namespace "module:2";
-    prefix "mod2";
-    revision "2014-01-02";
-    
-    rpc dummy-rpc1-module2 {
-    }
-    
-    rpc dummy-rpc2-module2 {
-    }    
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/module3.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/module3.yang
deleted file mode 100644 (file)
index 39bb690..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module module3 {
-    namespace "module:3";
-    prefix "mod3";
-    revision "2014-01-03";
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/iana-if-type.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/iana-if-type.yang
deleted file mode 100644 (file)
index 7bd0003..0000000
+++ /dev/null
@@ -1,1517 +0,0 @@
-module iana-if-type {
-  namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
-  prefix ianaift;
-
-  organization "IANA";
-  contact
-    "        Internet Assigned Numbers Authority
-
-     Postal: ICANN
-             4676 Admiralty Way, Suite 330
-             Marina del Rey, CA 90292
-
-     Tel:    +1 310 823 9358
-     E-Mail: iana&iana.org";
-  description
-    "This YANG module defines the iana-if-type typedef, which
-     contains YANG definitions for IANA-registered interface types.
-
-     This YANG module is maintained by IANA, and reflects the
-     'ifType definitions' registry.
-
-     The latest revision of this YANG module can be obtained from
-     the IANA web site.
-
-     Copyright (c) 2011 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC XXXX; see
-     the RFC itself for full legal notices.";
-  // RFC Ed.: replace XXXX with actual RFC number and remove this
-  // note.
-
-  // RFC Ed.: update the date below with the date of RFC publication
-  // and remove this note.
-  revision 2013-07-04 {
-    description
-      "Initial revision.";
-    reference
-      "RFC XXXX: IANA Interface Type YANG Module";
-  }
-
-  typedef iana-if-type {
-    type enumeration {
-      enum "other" {
-        value 1;
-        description
-          "None of the following";
-      }
-      enum "regular1822" {
-        value 2;
-      }
-      enum "hdh1822" {
-        value 3;
-      }
-      enum "ddnX25" {
-        value 4;
-      }
-      enum "rfc877x25" {
-        value 5;
-        reference
-          "RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
-      }
-      enum "ethernetCsmacd" {
-        value 6;
-        description
-          "For all ethernet-like interfaces, regardless of speed,
-           as per RFC3635.";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "iso88023Csmacd" {
-        value 7;
-        status deprecated;
-        description
-          "Deprecated via RFC3635.
-           Use ethernetCsmacd(6) instead.";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "iso88024TokenBus" {
-        value 8;
-      }
-      enum "iso88025TokenRing" {
-        value 9;
-      }
-      enum "iso88026Man" {
-        value 10;
-      }
-      enum "starLan" {
-        value 11;
-        status deprecated;
-        description
-          "Deprecated via RFC3635.
-           Use ethernetCsmacd(6) instead.";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "proteon10Mbit" {
-        value 12;
-      }
-      enum "proteon80Mbit" {
-        value 13;
-      }
-      enum "hyperchannel" {
-        value 14;
-      }
-      enum "fddi" {
-        value 15;
-        reference
-          "RFC 1512 - FDDI Management Information Base";
-      }
-      enum "lapb" {
-        value 16;
-        reference
-          "RFC 1381 - SNMP MIB Extension for X.25 LAPB";
-      }
-      enum "sdlc" {
-        value 17;
-      }
-      enum "ds1" {
-        value 18;
-        description
-          "DS1-MIB";
-        reference
-          "RFC 4805 - Definitions of Managed Objects for the
-                      DS1, J1, E1, DS2, and E2 Interface Types";
-      }
-      enum "e1" {
-        value 19;
-        status obsolete;
-        description
-          "Obsolete see DS1-MIB";
-        reference
-          "RFC 4805 - Definitions of Managed Objects for the
-                      DS1, J1, E1, DS2, and E2 Interface Types";
-      }
-      enum "basicISDN" {
-        value 20;
-        description
-          "see also RFC2127";
-      }
-      enum "primaryISDN" {
-        value 21;
-      }
-      enum "propPointToPointSerial" {
-        value 22;
-        description
-          "proprietary serial";
-      }
-      enum "ppp" {
-        value 23;
-      }
-      enum "softwareLoopback" {
-        value 24;
-      }
-      enum "eon" {
-        value 25;
-        description
-          "CLNP over IP";
-      }
-      enum "ethernet3Mbit" {
-        value 26;
-      }
-      enum "nsip" {
-        value 27;
-        description
-          "XNS over IP";
-      }
-      enum "slip" {
-        value 28;
-        description
-          "generic SLIP";
-      }
-      enum "ultra" {
-        value 29;
-        description
-          "ULTRA technologies";
-      }
-      enum "ds3" {
-        value 30;
-        description
-          "DS3-MIB";
-        reference
-          "RFC 3896 - Definitions of Managed Objects for the
-                      DS3/E3 Interface Type";
-      }
-      enum "sip" {
-        value 31;
-        description
-          "SMDS, coffee";
-        reference
-          "RFC 1694 - Definitions of Managed Objects for SMDS
-                      Interfaces using SMIv2";
-      }
-      enum "frameRelay" {
-        value 32;
-        description
-          "DTE only.";
-        reference
-          "RFC 2115 - Management Information Base for Frame Relay
-                      DTEs Using SMIv2";
-      }
-      enum "rs232" {
-        value 33;
-        reference
-          "RFC 1659 - Definitions of Managed Objects for RS-232-like
-                      Hardware Devices using SMIv2";
-      }
-      enum "para" {
-        value 34;
-        description
-          "parallel-port";
-        reference
-          "RFC 1660 - Definitions of Managed Objects for
-                      Parallel-printer-like Hardware Devices using
-                      SMIv2";
-      }
-      enum "arcnet" {
-        value 35;
-        description
-          "arcnet";
-      }
-      enum "arcnetPlus" {
-        value 36;
-        description
-          "arcnet plus";
-      }
-      enum "atm" {
-        value 37;
-        description
-          "ATM cells";
-      }
-      enum "miox25" {
-        value 38;
-        reference
-          "RFC 1461 - SNMP MIB extension for Multiprotocol
-                      Interconnect over X.25";
-      }
-      enum "sonet" {
-        value 39;
-        description
-          "SONET or SDH";
-      }
-      enum "x25ple" {
-        value 40;
-        reference
-          "RFC 2127 - ISDN Management Information Base using SMIv2";
-      }
-      enum "iso88022llc" {
-        value 41;
-      }
-      enum "localTalk" {
-        value 42;
-      }
-      enum "smdsDxi" {
-        value 43;
-      }
-      enum "frameRelayService" {
-        value 44;
-        description
-          "FRNETSERV-MIB";
-        reference
-          "RFC 2954 - Definitions of Managed Objects for Frame
-                      Relay Service";
-      }
-      enum "v35" {
-        value 45;
-      }
-      enum "hssi" {
-        value 46;
-      }
-      enum "hippi" {
-        value 47;
-      }
-      enum "modem" {
-        value 48;
-        description
-          "Generic modem";
-      }
-      enum "aal5" {
-        value 49;
-        description
-          "AAL5 over ATM";
-      }
-      enum "sonetPath" {
-        value 50;
-      }
-      enum "sonetVT" {
-        value 51;
-      }
-      enum "smdsIcip" {
-        value 52;
-        description
-          "SMDS InterCarrier Interface";
-      }
-      enum "propVirtual" {
-        value 53;
-        description
-          "proprietary virtual/internal";
-        reference
-          "RFC 2863 - The Interfaces Group MIB";
-      }
-      enum "propMultiplexor" {
-        value 54;
-        description
-          "proprietary multiplexing";
-        reference
-          "RFC 2863 - The Interfaces Group MIB";
-      }
-      enum "ieee80212" {
-        value 55;
-        description
-          "100BaseVG";
-      }
-      enum "fibreChannel" {
-        value 56;
-        description
-          "Fibre Channel";
-      }
-      enum "hippiInterface" {
-        value 57;
-        description
-          "HIPPI interfaces";
-      }
-      enum "frameRelayInterconnect" {
-        value 58;
-        status obsolete;
-        description
-          "Obsolete use either
-           frameRelay(32) or frameRelayService(44).";
-      }
-      enum "aflane8023" {
-        value 59;
-        description
-          "ATM Emulated LAN for 802.3";
-      }
-      enum "aflane8025" {
-        value 60;
-        description
-          "ATM Emulated LAN for 802.5";
-      }
-      enum "cctEmul" {
-        value 61;
-        description
-         "ATM Emulated circuit";
-      }
-      enum "fastEther" {
-        value 62;
-        status deprecated;
-        description
-          "Obsoleted via RFC3635.
-          ethernetCsmacd(6) should be used instead";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "isdn" {
-        value 63;
-        description
-          "ISDN and X.25";
-        reference
-          "RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
-                      in the Packet Mode";
-      }
-      enum "v11" {
-        value 64;
-        description
-         "CCITT V.11/X.21";
-      }
-      enum "v36" {
-        value 65;
-        description
-          "CCITT V.36";
-      }
-      enum "g703at64k" {
-        value 66;
-        description
-          "CCITT G703 at 64Kbps";
-      }
-      enum "g703at2mb" {
-        value 67;
-        status obsolete;
-        description
-          "Obsolete see DS1-MIB";
-      }
-      enum "qllc" {
-        value 68;
-        description
-          "SNA QLLC";
-      }
-      enum "fastEtherFX" {
-        value 69;
-        status deprecated;
-        description
-          "Obsoleted via RFC3635
-          ethernetCsmacd(6) should be used instead";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "channel" {
-        value 70;
-        description
-          "channel";
-      }
-      enum "ieee80211" {
-        value 71;
-        description
-          "radio spread spectrum";
-      }
-      enum "ibm370parChan" {
-        value 72;
-        description
-          "IBM System 360/370 OEMI Channel";
-      }
-      enum "escon" {
-        value 73;
-        description
-          "IBM Enterprise Systems Connection";
-      }
-      enum "dlsw" {
-        value 74;
-        description
-          "Data Link Switching";
-      }
-      enum "isdns" {
-        value 75;
-        description
-          "ISDN S/T interface";
-      }
-      enum "isdnu" {
-        value 76;
-        description
-          "ISDN U interface";
-      }
-      enum "lapd" {
-        value 77;
-        description
-          "Link Access Protocol D";
-      }
-      enum "ipSwitch" {
-        value 78;
-        description
-          "IP Switching Objects";
-      }
-      enum "rsrb" {
-        value 79;
-        description
-          "Remote Source Route Bridging";
-      }
-      enum "atmLogical" {
-        value 80;
-        description
-          "ATM Logical Port";
-        reference
-          "RFC 3606 - Definitions of Supplemental Managed Objects
-                      for ATM Interface";
-      }
-      enum "ds0" {
-        value 81;
-        description
-          "Digital Signal Level 0";
-        reference
-          "RFC 2494 - Definitions of Managed Objects for the DS0
-                      and DS0 Bundle Interface Type";
-      }
-      enum "ds0Bundle" {
-        value 82;
-        description
-          "group of ds0s on the same ds1";
-        reference
-          "RFC 2494 - Definitions of Managed Objects for the DS0
-                      and DS0 Bundle Interface Type";
-      }
-      enum "bsc" {
-        value 83;
-        description
-          "Bisynchronous Protocol";
-      }
-      enum "async" {
-        value 84;
-        description
-          "Asynchronous Protocol";
-      }
-      enum "cnr" {
-        value 85;
-        description
-          "Combat Net Radio";
-      }
-      enum "iso88025Dtr" {
-        value 86;
-        description
-          "ISO 802.5r DTR";
-      }
-      enum "eplrs" {
-        value 87;
-        description
-          "Ext Pos Loc Report Sys";
-      }
-      enum "arap" {
-        value 88;
-        description
-          "Appletalk Remote Access Protocol";
-      }
-      enum "propCnls" {
-        value 89;
-        description
-          "Proprietary Connectionless Protocol";
-      }
-      enum "hostPad" {
-        value 90;
-        description
-          "CCITT-ITU X.29 PAD Protocol";
-      }
-      enum "termPad" {
-        value 91;
-        description
-          "CCITT-ITU X.3 PAD Facility";
-      }
-      enum "frameRelayMPI" {
-        value 92;
-        description
-          "Multiproto Interconnect over FR";
-      }
-      enum "x213" {
-        value 93;
-        description
-          "CCITT-ITU X213";
-      }
-      enum "adsl" {
-        value 94;
-        description
-          "Asymmetric Digital Subscriber Loop";
-      }
-      enum "radsl" {
-        value 95;
-        description
-          "Rate-Adapt. Digital Subscriber Loop";
-      }
-      enum "sdsl" {
-        value 96;
-        description
-          "Symmetric Digital Subscriber Loop";
-      }
-      enum "vdsl" {
-        value 97;
-        description
-          "Very H-Speed Digital Subscrib. Loop";
-      }
-      enum "iso88025CRFPInt" {
-        value 98;
-        description
-          "ISO 802.5 CRFP";
-      }
-      enum "myrinet" {
-        value 99;
-        description
-          "Myricom Myrinet";
-      }
-      enum "voiceEM" {
-        value 100;
-        description
-          "voice recEive and transMit";
-      }
-      enum "voiceFXO" {
-        value 101;
-        description
-          "voice Foreign Exchange Office";
-      }
-      enum "voiceFXS" {
-        value 102;
-        description
-          "voice Foreign Exchange Station";
-      }
-      enum "voiceEncap" {
-        value 103;
-        description
-          "voice encapsulation";
-      }
-      enum "voiceOverIp" {
-        value 104;
-        description
-          "voice over IP encapsulation";
-      }
-      enum "atmDxi" {
-        value 105;
-        description
-          "ATM DXI";
-      }
-      enum "atmFuni" {
-        value 106;
-        description
-          "ATM FUNI";
-      }
-      enum "atmIma" {
-        value 107;
-        description
-          "ATM IMA";
-      }
-      enum "pppMultilinkBundle" {
-        value 108;
-        description
-          "PPP Multilink Bundle";
-      }
-      enum "ipOverCdlc" {
-        value 109;
-        description
-          "IBM ipOverCdlc";
-      }
-      enum "ipOverClaw" {
-        value 110;
-        description
-          "IBM Common Link Access to Workstn";
-      }
-      enum "stackToStack" {
-        value 111;
-        description
-          "IBM stackToStack";
-      }
-      enum "virtualIpAddress" {
-        value 112;
-        description
-          "IBM VIPA";
-      }
-      enum "mpc" {
-        value 113;
-        description
-          "IBM multi-protocol channel support";
-      }
-      enum "ipOverAtm" {
-        value 114;
-        description
-          "IBM ipOverAtm";
-        reference
-          "RFC 2320 - Definitions of Managed Objects for Classical IP
-                      and ARP Over ATM Using SMIv2 (IPOA-MIB)";
-      }
-      enum "iso88025Fiber" {
-        value 115;
-        description
-          "ISO 802.5j Fiber Token Ring";
-      }
-      enum "tdlc" {
-        value 116;
-        description
-          "IBM twinaxial data link control";
-      }
-      enum "gigabitEthernet" {
-        value 117;
-        status deprecated;
-        description
-          "Obsoleted via RFC3635
-           ethernetCsmacd(6) should be used instead";
-        reference
-          "RFC 3635 - Definitions of Managed Objects for the
-                      Ethernet-like Interface Types.";
-      }
-      enum "hdlc" {
-        value 118;
-        description
-          "HDLC";
-      }
-      enum "lapf" {
-        value 119;
-        description
-          "LAP F";
-      }
-      enum "v37" {
-        value 120;
-        description
-          "V.37";
-      }
-      enum "x25mlp" {
-        value 121;
-        description
-          "Multi-Link Protocol";
-      }
-      enum "x25huntGroup" {
-        value 122;
-        description
-          "X25 Hunt Group";
-      }
-      enum "transpHdlc" {
-        value 123;
-        description
-          "Transp HDLC";
-      }
-      enum "interleave" {
-        value 124;
-        description
-          "Interleave channel";
-      }
-      enum "fast" {
-        value 125;
-        description
-          "Fast channel";
-      }
-      enum "ip" {
-        value 126;
-        description
-          "IP (for APPN HPR in IP networks)";
-      }
-      enum "docsCableMaclayer" {
-        value 127;
-        description
-          "CATV Mac Layer";
-      }
-      enum "docsCableDownstream" {
-        value 128;
-        description
-          "CATV Downstream interface";
-      }
-      enum "docsCableUpstream" {
-        value 129;
-        description
-          "CATV Upstream interface";
-      }
-      enum "a12MppSwitch" {
-        value 130;
-        description
-          "Avalon Parallel Processor";
-      }
-      enum "tunnel" {
-        value 131;
-        description
-          "Encapsulation interface";
-      }
-      enum "coffee" {
-        value 132;
-        description
-          "coffee pot";
-        reference
-          "RFC 2325 - Coffee MIB";
-      }
-      enum "ces" {
-        value 133;
-        description
-          "Circuit Emulation Service";
-      }
-      enum "atmSubInterface" {
-        value 134;
-        description
-          "ATM Sub Interface";
-      }
-      enum "l2vlan" {
-        value 135;
-        description
-          "Layer 2 Virtual LAN using 802.1Q";
-      }
-      enum "l3ipvlan" {
-        value 136;
-        description
-          "Layer 3 Virtual LAN using IP";
-      }
-      enum "l3ipxvlan" {
-        value 137;
-        description
-          "Layer 3 Virtual LAN using IPX";
-      }
-      enum "digitalPowerline" {
-        value 138;
-        description
-          "IP over Power Lines";
-      }
-      enum "mediaMailOverIp" {
-        value 139;
-        description
-          "Multimedia Mail over IP";
-      }
-      enum "dtm" {
-        value 140;
-        description
-          "Dynamic syncronous Transfer Mode";
-      }
-      enum "dcn" {
-        value 141;
-        description
-          "Data Communications Network";
-      }
-      enum "ipForward" {
-        value 142;
-        description
-          "IP Forwarding Interface";
-      }
-      enum "msdsl" {
-        value 143;
-        description
-          "Multi-rate Symmetric DSL";
-      }
-      enum "ieee1394" {
-        value 144;
-        description
-          "IEEE1394 High Performance Serial Bus";
-      }
-      enum "if-gsn" {
-        value 145;
-        description
-          "HIPPI-6400";
-      }
-      enum "dvbRccMacLayer" {
-        value 146;
-        description
-          "DVB-RCC MAC Layer";
-      }
-      enum "dvbRccDownstream" {
-        value 147;
-        description
-          "DVB-RCC Downstream Channel";
-      }
-      enum "dvbRccUpstream" {
-        value 148;
-        description
-          "DVB-RCC Upstream Channel";
-      }
-      enum "atmVirtual" {
-        value 149;
-        description
-          "ATM Virtual Interface";
-      }
-      enum "mplsTunnel" {
-        value 150;
-        description
-          "MPLS Tunnel Virtual Interface";
-      }
-      enum "srp" {
-        value 151;
-        description
-          "Spatial Reuse Protocol";
-      }
-      enum "voiceOverAtm" {
-        value 152;
-        description
-          "Voice Over ATM";
-      }
-      enum "voiceOverFrameRelay" {
-        value 153;
-        description
-          "Voice Over Frame Relay";
-      }
-      enum "idsl" {
-        value 154;
-        description
-          "Digital Subscriber Loop over ISDN";
-      }
-      enum "compositeLink" {
-        value 155;
-        description
-          "Avici Composite Link Interface";
-      }
-      enum "ss7SigLink" {
-        value 156;
-        description
-          "SS7 Signaling Link";
-      }
-      enum "propWirelessP2P" {
-        value 157;
-        description
-          "Prop. P2P wireless interface";
-      }
-      enum "frForward" {
-        value 158;
-        description
-          "Frame Forward Interface";
-      }
-      enum "rfc1483" {
-        value 159;
-        description
-          "Multiprotocol over ATM AAL5";
-        reference
-          "RFC 1483 - Multiprotocol Encapsulation over ATM
-                      Adaptation Layer 5";
-      }
-      enum "usb" {
-        value 160;
-        description
-          "USB Interface";
-      }
-      enum "ieee8023adLag" {
-        value 161;
-        description
-          "IEEE 802.3ad Link Aggregate";
-      }
-      enum "bgppolicyaccounting" {
-        value 162;
-        description
-          "BGP Policy Accounting";
-      }
-      enum "frf16MfrBundle" {
-        value 163;
-        description
-          "FRF .16 Multilink Frame Relay";
-      }
-      enum "h323Gatekeeper" {
-        value 164;
-        description
-          "H323 Gatekeeper";
-      }
-      enum "h323Proxy" {
-        value 165;
-        description
-          "H323 Voice and Video Proxy";
-      }
-      enum "mpls" {
-        value 166;
-        description
-          "MPLS";
-      }
-      enum "mfSigLink" {
-        value 167;
-        description
-          "Multi-frequency signaling link";
-      }
-      enum "hdsl2" {
-        value 168;
-        description
-          "High Bit-Rate DSL - 2nd generation";
-      }
-      enum "shdsl" {
-        value 169;
-        description
-          "Multirate HDSL2";
-      }
-      enum "ds1FDL" {
-        value 170;
-        description
-          "Facility Data Link 4Kbps on a DS1";
-      }
-      enum "pos" {
-        value 171;
-        description
-          "Packet over SONET/SDH Interface";
-      }
-      enum "dvbAsiIn" {
-        value 172;
-        description
-          "DVB-ASI Input";
-      }
-      enum "dvbAsiOut" {
-        value 173;
-        description
-          "DVB-ASI Output";
-      }
-      enum "plc" {
-        value 174;
-        description
-          "Power Line Communtications";
-      }
-      enum "nfas" {
-        value 175;
-        description
-          "Non Facility Associated Signaling";
-      }
-      enum "tr008" {
-        value 176;
-        description
-          "TR008";
-      }
-      enum "gr303RDT" {
-        value 177;
-        description
-          "Remote Digital Terminal";
-      }
-      enum "gr303IDT" {
-        value 178;
-        description
-          "Integrated Digital Terminal";
-      }
-      enum "isup" {
-        value 179;
-        description
-          "ISUP";
-      }
-      enum "propDocsWirelessMaclayer" {
-        value 180;
-        description
-          "Cisco proprietary Maclayer";
-      }
-      enum "propDocsWirelessDownstream" {
-        value 181;
-        description
-          "Cisco proprietary Downstream";
-      }
-      enum "propDocsWirelessUpstream" {
-        value 182;
-        description
-          "Cisco proprietary Upstream";
-      }
-      enum "hiperlan2" {
-        value 183;
-        description
-          "HIPERLAN Type 2 Radio Interface";
-      }
-      enum "propBWAp2Mp" {
-        value 184;
-        description
-          "PropBroadbandWirelessAccesspt2multipt use of this value
-           for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
-           is deprecated and ieee80216WMAN(237) should be used
-           instead.";
-      }
-      enum "sonetOverheadChannel" {
-        value 185;
-        description
-          "SONET Overhead Channel";
-      }
-      enum "digitalWrapperOverheadChannel" {
-        value 186;
-        description
-          "Digital Wrapper";
-      }
-      enum "aal2" {
-        value 187;
-        description
-          "ATM adaptation layer 2";
-      }
-      enum "radioMAC" {
-        value 188;
-        description
-          "MAC layer over radio links";
-      }
-      enum "atmRadio" {
-        value 189;
-        description
-          "ATM over radio links";
-      }
-      enum "imt" {
-        value 190;
-        description
-          "Inter Machine Trunks";
-      }
-      enum "mvl" {
-        value 191;
-        description
-          "Multiple Virtual Lines DSL";
-      }
-      enum "reachDSL" {
-        value 192;
-        description
-          "Long Reach DSL";
-      }
-      enum "frDlciEndPt" {
-        value 193;
-        description
-          "Frame Relay DLCI End Point";
-      }
-      enum "atmVciEndPt" {
-        value 194;
-        description
-          "ATM VCI End Point";
-      }
-      enum "opticalChannel" {
-        value 195;
-        description
-          "Optical Channel";
-      }
-      enum "opticalTransport" {
-        value 196;
-        description
-          "Optical Transport";
-      }
-      enum "propAtm" {
-        value 197;
-        description
-          "Proprietary ATM";
-      }
-      enum "voiceOverCable" {
-        value 198;
-        description
-          "Voice Over Cable Interface";
-      }
-      enum "infiniband" {
-        value 199;
-        description
-          "Infiniband";
-      }
-      enum "teLink" {
-        value 200;
-        description
-          "TE Link";
-      }
-      enum "q2931" {
-        value 201;
-        description
-          "Q.2931";
-      }
-      enum "virtualTg" {
-        value 202;
-        description
-          "Virtual Trunk Group";
-      }
-      enum "sipTg" {
-        value 203;
-        description
-          "SIP Trunk Group";
-      }
-      enum "sipSig" {
-        value 204;
-        description
-          "SIP Signaling";
-      }
-      enum "docsCableUpstreamChannel" {
-        value 205;
-        description
-          "CATV Upstream Channel";
-      }
-      enum "econet" {
-        value 206;
-        description
-          "Acorn Econet";
-      }
-      enum "pon155" {
-        value 207;
-        description
-          "FSAN 155Mb Symetrical PON interface";
-      }
-      enum "pon622" {
-        value 208;
-        description
-          "FSAN622Mb Symetrical PON interface";
-      }
-      enum "bridge" {
-        value 209;
-        description
-          "Transparent bridge interface";
-      }
-      enum "linegroup" {
-        value 210;
-        description
-          "Interface common to multiple lines";
-      }
-      enum "voiceEMFGD" {
-        value 211;
-        description
-          "voice E&M Feature Group D";
-      }
-      enum "voiceFGDEANA" {
-        value 212;
-        description
-          "voice FGD Exchange Access North American";
-      }
-      enum "voiceDID" {
-        value 213;
-        description
-          "voice Direct Inward Dialing";
-      }
-      enum "mpegTransport" {
-        value 214;
-        description
-          "MPEG transport interface";
-      }
-      enum "sixToFour" {
-        value 215;
-        status deprecated;
-        description
-          "6to4 interface (DEPRECATED)";
-        reference
-          "RFC 4087 - IP Tunnel MIB";
-      }
-      enum "gtp" {
-        value 216;
-        description
-          "GTP (GPRS Tunneling Protocol)";
-      }
-      enum "pdnEtherLoop1" {
-        value 217;
-        description
-          "Paradyne EtherLoop 1";
-      }
-      enum "pdnEtherLoop2" {
-        value 218;
-        description
-          "Paradyne EtherLoop 2";
-      }
-      enum "opticalChannelGroup" {
-        value 219;
-        description
-          "Optical Channel Group";
-      }
-      enum "homepna" {
-        value 220;
-        description
-          "HomePNA ITU-T G.989";
-      }
-      enum "gfp" {
-        value 221;
-        description
-          "Generic Framing Procedure (GFP)";
-      }
-      enum "ciscoISLvlan" {
-        value 222;
-        description
-          "Layer 2 Virtual LAN using Cisco ISL";
-      }
-      enum "actelisMetaLOOP" {
-        value 223;
-        description
-          "Acteleis proprietary MetaLOOP High Speed Link";
-      }
-      enum "fcipLink" {
-        value 224;
-        description
-          "FCIP Link";
-      }
-      enum "rpr" {
-        value 225;
-        description
-          "Resilient Packet Ring Interface Type";
-      }
-      enum "qam" {
-        value 226;
-        description
-          "RF Qam Interface";
-      }
-      enum "lmp" {
-        value 227;
-        description
-          "Link Management Protocol";
-        reference
-          "RFC 4327 - Link Management Protocol (LMP) Management
-                      Information Base (MIB)";
-      }
-      enum "cblVectaStar" {
-        value 228;
-        description
-          "Cambridge Broadband Networks Limited VectaStar";
-      }
-      enum "docsCableMCmtsDownstream" {
-        value 229;
-        description
-          "CATV Modular CMTS Downstream Interface";
-      }
-      enum "adsl2" {
-        value 230;
-        status deprecated;
-        description
-          "Asymmetric Digital Subscriber Loop Version 2
-           (DEPRECATED/OBSOLETED - please use adsl2plus(238)
-           instead)";
-        reference
-          "RFC 4706 - Definitions of Managed Objects for Asymmetric
-                      Digital Subscriber Line 2 (ADSL2)";
-      }
-      enum "macSecControlledIF" {
-        value 231;
-        description
-          "MACSecControlled";
-      }
-      enum "macSecUncontrolledIF" {
-        value 232;
-        description
-          "MACSecUncontrolled";
-      }
-      enum "aviciOpticalEther" {
-        value 233;
-        description
-         "Avici Optical Ethernet Aggregate";
-      }
-      enum "atmbond" {
-        value 234;
-        description
-          "atmbond";
-      }
-      enum "voiceFGDOS" {
-        value 235;
-        description
-          "voice FGD Operator Services";
-      }
-      enum "mocaVersion1" {
-        value 236;
-        description
-          "MultiMedia over Coax Alliance (MoCA) Interface
-           as documented in information provided privately to IANA";
-      }
-      enum "ieee80216WMAN" {
-        value 237;
-        description
-          "IEEE 802.16 WMAN interface";
-      }
-      enum "adsl2plus" {
-        value 238;
-        description
-          "Asymmetric Digital Subscriber Loop Version 2,
-           Version 2 Plus and all variants";
-      }
-      enum "dvbRcsMacLayer" {
-        value 239;
-        description
-          "DVB-RCS MAC Layer";
-        reference
-          "RFC 5728 - The SatLabs Group DVB-RCS MIB";
-      }
-      enum "dvbTdm" {
-        value 240;
-        description
-          "DVB Satellite TDM";
-        reference
-          "RFC 5728 - The SatLabs Group DVB-RCS MIB";
-      }
-      enum "dvbRcsTdma" {
-        value 241;
-        description
-          "DVB-RCS TDMA";
-        reference
-          "RFC 5728 - The SatLabs Group DVB-RCS MIB";
-      }
-      enum "x86Laps" {
-        value 242;
-        description
-          "LAPS based on ITU-T X.86/Y.1323";
-      }
-      enum "wwanPP" {
-        value 243;
-        description
-          "3GPP WWAN";
-      }
-      enum "wwanPP2" {
-        value 244;
-        description
-          "3GPP2 WWAN";
-      }
-      enum "voiceEBS" {
-        value 245;
-        description
-          "voice P-phone EBS physical interface";
-      }
-      enum "ifPwType" {
-        value 246;
-        description
-          "Pseudowire interface type";
-        reference
-          "RFC 5601 - Pseudowire (PW) Management Information Base";
-      }
-      enum "ilan" {
-        value 247;
-        description
-          "Internal LAN on a bridge per IEEE 802.1ap";
-      }
-      enum "pip" {
-        value 248;
-        description
-          "Provider Instance Port on a bridge per IEEE 802.1ah PBB";
-      }
-      enum "aluELP" {
-        value 249;
-        description
-          "Alcatel-Lucent Ethernet Link Protection";
-      }
-      enum "gpon" {
-        value 250;
-        description
-          "Gigabit-capable passive optical networks (G-PON) as per
-           ITU-T G.948";
-      }
-      enum "vdsl2" {
-        value 251;
-        description
-          "Very high speed digital subscriber line Version 2
-           (as per ITU-T Recommendation G.993.2)";
-        reference
-          "RFC 5650 - Definitions of Managed Objects for Very High
-                      Speed Digital Subscriber Line 2 (VDSL2)";
-      }
-      enum "capwapDot11Profile" {
-        value 252;
-        description
-          "WLAN Profile Interface";
-        reference
-          "RFC 5834 - Control and Provisioning of Wireless Access
-                      Points (CAPWAP) Protocol Binding MIB for
-                      IEEE 802.11";
-      }
-      enum "capwapDot11Bss" {
-        value 253;
-        description
-          "WLAN BSS Interface";
-        reference
-          "RFC 5834 - Control and Provisioning of Wireless Access
-                      Points (CAPWAP) Protocol Binding MIB for
-                      IEEE 802.11";
-      }
-      enum "capwapWtpVirtualRadio" {
-        value 254;
-        description
-          "WTP Virtual Radio Interface";
-        reference
-          "RFC 5833 - Control and Provisioning of Wireless Access
-                      Points (CAPWAP) Protocol Base MIB";
-      }
-      enum "bits" {
-        value 255;
-        description
-          "bitsport";
-      }
-      enum "docsCableUpstreamRfPort" {
-        value 256;
-        description
-          "DOCSIS CATV Upstream RF Port";
-      }
-      enum "cableDownstreamRfPort" {
-        value 257;
-        description
-          "CATV downstream RF port";
-      }
-      enum "vmwareVirtualNic" {
-        value 258;
-        description
-          "VMware Virtual Network Interface";
-      }
-      enum "ieee802154" {
-        value 259;
-        description
-          "IEEE 802.15.4 WPAN interface";
-        reference
-          "IEEE 802.15.4-2006";
-      }
-      enum "otnOdu" {
-        value 260;
-        description
-          "OTN Optical Data Unit";
-      }
-      enum "otnOtu" {
-        value 261;
-        description
-          "OTN Optical channel Transport Unit";
-      }
-      enum "ifVfiType" {
-        value 262;
-        description
-          "VPLS Forwarding Instance Interface Type";
-      }
-      enum "g9981" {
-        value 263;
-        description
-          "G.998.1 bonded interface";
-      }
-      enum "g9982" {
-        value 264;
-        description
-          "G.998.2 bonded interface";
-      }
-      enum "g9983" {
-        value 265;
-        description
-          "G.998.3 bonded interface";
-      }
-      enum "aluEpon" {
-        value 266;
-        description
-          "Ethernet Passive Optical Networks (E-PON)";
-      }
-      enum "aluEponOnu" {
-        value 267;
-        description
-          "EPON Optical Network Unit";
-      }
-      enum "aluEponPhysicalUni" {
-        value 268;
-        description
-          "EPON physical User to Network interface";
-      }
-      enum "aluEponLogicalLink" {
-        value 269;
-        description
-          "The emulation of a point-to-point link over the EPON
-           layer";
-      }
-      enum "aluGponOnu" {
-        value 270;
-        description
-          "GPON Optical Network Unit";
-        reference
-          "ITU-T G.984.2";
-      }
-      enum "aluGponPhysicalUni" {
-        value 271;
-        description
-          "GPON physical User to Network interface";
-        reference
-          "ITU-T G.984.2";
-      }
-      enum "vmwareNicTeam" {
-        value 272;
-        description
-          "VMware NIC Team";
-      }
-      // value 273 reserved by IANA
-    }
-    description
-      "This data type is used as the syntax of the 'type'
-       leaf in the 'interface' list in the YANG module
-       ietf-interface.
-
-       The definition of this typedef with the
-       addition of newly assigned values is published
-       periodically by the IANA, in either the Assigned
-       Numbers RFC, or some derivative of it specific to
-       Internet Network Management number assignments.  (The
-       latest arrangements can be obtained by contacting the
-       IANA.)
-
-       Requests for new values should be made to IANA via
-       email (iana&iana.org).";
-    reference
-      "IANA ifType definitions registry.
-       <http://www.iana.org/assignments/smi-numbers>";
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/ietf-inet-types.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/ietf-inet-types.yang
deleted file mode 100644 (file)
index de20feb..0000000
+++ /dev/null
@@ -1,418 +0,0 @@
- module ietf-inet-types {
-
-   namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
-   prefix "inet";
-
-   organization
-    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-   contact
-    "WG Web:   <http://tools.ietf.org/wg/netmod/>
-     WG List:  <mailto:netmod@ietf.org>
-
-     WG Chair: David Partain
-               <mailto:david.partain@ericsson.com>
-
-     WG Chair: David Kessens
-               <mailto:david.kessens@nsn.com>
-
-     Editor:   Juergen Schoenwaelder
-               <mailto:j.schoenwaelder@jacobs-university.de>";
-
-   description
-    "This module contains a collection of generally useful derived
-     YANG data types for Internet addresses and related things.
-
-     Copyright (c) 2010 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or without
-     modification, is permitted pursuant to, and subject to the license
-     terms contained in, the Simplified BSD License set forth in Section
-     4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6021; see
-     the RFC itself for full legal notices.";
-
-   revision 2010-09-24 {
-     description
-      "Initial revision.";
-     reference
-      "RFC 6021: Common YANG Data Types";
-   }
-
-   /*** collection of protocol field related types ***/
-
-   typedef ip-version {
-     type enumeration {
-       enum unknown {
-         value "0";
-         description
-          "An unknown or unspecified version of the Internet protocol.";
-       }
-       enum ipv4 {
-         value "1";
-         description
-          "The IPv4 protocol as defined in RFC 791.";
-       }
-       enum ipv6 {
-         value "2";
-         description
-          "The IPv6 protocol as defined in RFC 2460.";
-       }
-     }
-     description
-      "This value represents the version of the IP protocol.
-
-       In the value set and its semantics, this type is equivalent
-       to the InetVersion textual convention of the SMIv2.";
-     reference
-      "RFC  791: Internet Protocol
-       RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
-       RFC 4001: Textual Conventions for Internet Network Addresses";
-   }
-
-   typedef dscp {
-     type uint8 {
-       range "0..63";
-     }
-     description
-      "The dscp type represents a Differentiated Services Code-Point
-       that may be used for marking packets in a traffic stream.
-
-       In the value set and its semantics, this type is equivalent
-       to the Dscp textual convention of the SMIv2.";
-     reference
-      "RFC 3289: Management Information Base for the Differentiated
-                 Services Architecture
-       RFC 2474: Definition of the Differentiated Services Field
-                 (DS Field) in the IPv4 and IPv6 Headers
-       RFC 2780: IANA Allocation Guidelines For Values In
-                 the Internet Protocol and Related Headers";
-   }
-
-   typedef ipv6-flow-label {
-     type uint32 {
-       range "0..1048575";
-     }
-     description
-      "The flow-label type represents flow identifier or Flow Label
-       in an IPv6 packet header that may be used to discriminate
-       traffic flows.
-
-       In the value set and its semantics, this type is equivalent
-       to the IPv6FlowLabel textual convention of the SMIv2.";
-     reference
-      "RFC 3595: Textual Conventions for IPv6 Flow Label
-       RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
-   }
-
-   typedef port-number {
-     type uint16 {
-       range "0..65535";
-     }
-     description
-      "The port-number type represents a 16-bit port number of an
-       Internet transport layer protocol such as UDP, TCP, DCCP, or
-       SCTP.  Port numbers are assigned by IANA.  A current list of
-       all assignments is available from <http://www.iana.org/>.
-
-       Note that the port number value zero is reserved by IANA.  In
-       situations where the value zero does not make sense, it can
-       be excluded by subtyping the port-number type.
-
-       In the value set and its semantics, this type is equivalent
-       to the InetPortNumber textual convention of the SMIv2.";
-     reference
-      "RFC  768: User Datagram Protocol
-       RFC  793: Transmission Control Protocol
-       RFC 4960: Stream Control Transmission Protocol
-       RFC 4340: Datagram Congestion Control Protocol (DCCP)
-       RFC 4001: Textual Conventions for Internet Network Addresses";
-   }
-
-   /*** collection of autonomous system related types ***/
-
-   typedef as-number {
-     type uint32;
-     description
-      "The as-number type represents autonomous system numbers
-       which identify an Autonomous System (AS).  An AS is a set
-       of routers under a single technical administration, using
-       an interior gateway protocol and common metrics to route
-       packets within the AS, and using an exterior gateway
-       protocol to route packets to other ASs'.  IANA maintains
-       the AS number space and has delegated large parts to the
-       regional registries.
-
-       Autonomous system numbers were originally limited to 16
-       bits.  BGP extensions have enlarged the autonomous system
-       number space to 32 bits.  This type therefore uses an uint32
-       base type without a range restriction in order to support
-       a larger autonomous system number space.
-
-       In the value set and its semantics, this type is equivalent
-       to the InetAutonomousSystemNumber textual convention of
-       the SMIv2.";
-     reference
-      "RFC 1930: Guidelines for creation, selection, and registration
-                 of an Autonomous System (AS)
-       RFC 4271: A Border Gateway Protocol 4 (BGP-4)
-       RFC 4893: BGP Support for Four-octet AS Number Space
-       RFC 4001: Textual Conventions for Internet Network Addresses";
-   }
-
-   /*** collection of IP address and hostname related types ***/
-
-   typedef ip-address {
-     type union {
-       type inet:ipv4-address;
-       type inet:ipv6-address;
-     }
-     description
-      "The ip-address type represents an IP address and is IP
-       version neutral.  The format of the textual representations
-       implies the IP version.";
-   }
-
-   typedef ipv4-address {
-     type string {
-       pattern
-         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-       + '(%[\p{N}\p{L}]+)?';
-     }
-     description
-       "The ipv4-address type represents an IPv4 address in
-        dotted-quad notation.  The IPv4 address may include a zone
-        index, separated by a % sign.
-
-        The zone index is used to disambiguate identical address
-        values.  For link-local addresses, the zone index will
-        typically be the interface index number or the name of an
-        interface.  If the zone index is not present, the default
-        zone of the device will be used.
-
-        The canonical format for the zone index is the numerical
-        format";
-   }
-
-   typedef ipv6-address {
-     type string {
-       pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-             + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-             + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-             + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-             + '(%[\p{N}\p{L}]+)?';
-       pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-             + '(%.+)?';
-     }
-     description
-      "The ipv6-address type represents an IPv6 address in full,
-       mixed, shortened, and shortened-mixed notation.  The IPv6
-       address may include a zone index, separated by a % sign.
-
-       The zone index is used to disambiguate identical address
-       values.  For link-local addresses, the zone index will
-       typically be the interface index number or the name of an
-       interface.  If the zone index is not present, the default
-       zone of the device will be used.
-
-       The canonical format of IPv6 addresses uses the compressed
-       format described in RFC 4291, Section 2.2, item 2 with the
-       following additional rules: the :: substitution must be
-       applied to the longest sequence of all-zero 16-bit chunks
-       in an IPv6 address.  If there is a tie, the first sequence
-       of all-zero 16-bit chunks is replaced by ::.  Single
-       all-zero 16-bit chunks are not compressed.  The canonical
-       format uses lowercase characters and leading zeros are
-       not allowed.  The canonical format for the zone index is
-       the numerical format as described in RFC 4007, Section
-       11.2.";
-     reference
-      "RFC 4291: IP Version 6 Addressing Architecture
-       RFC 4007: IPv6 Scoped Address Architecture
-       RFC 5952: A Recommendation for IPv6 Address Text Representation";
-   }
-
-   typedef ip-prefix {
-     type union {
-       type inet:ipv4-prefix;
-       type inet:ipv6-prefix;
-     }
-     description
-      "The ip-prefix type represents an IP prefix and is IP
-       version neutral.  The format of the textual representations
-       implies the IP version.";
-   }
-
-   typedef ipv4-prefix {
-     type string {
-       pattern
-          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-        +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-        + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
-     }
-     description
-      "The ipv4-prefix type represents an IPv4 address prefix.
-       The prefix length is given by the number following the
-       slash character and must be less than or equal to 32.
-
-       A prefix length value of n corresponds to an IP address
-       mask that has n contiguous 1-bits from the most
-       significant bit (MSB) and all other bits set to 0.
-
-       The canonical format of an IPv4 prefix has all bits of
-       the IPv4 address set to zero that are not part of the
-       IPv4 prefix.";
-   }
-
-   typedef ipv6-prefix {
-     type string {
-       pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-             + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-             + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-             + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-             + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
-       pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-             + '(/.+)';
-     }
-     description
-      "The ipv6-prefix type represents an IPv6 address prefix.
-       The prefix length is given by the number following the
-       slash character and must be less than or equal 128.
-
-       A prefix length value of n corresponds to an IP address
-       mask that has n contiguous 1-bits from the most
-       significant bit (MSB) and all other bits set to 0.
-
-       The IPv6 address should have all bits that do not belong
-       to the prefix set to zero.
-
-       The canonical format of an IPv6 prefix has all bits of
-       the IPv6 address set to zero that are not part of the
-       IPv6 prefix.  Furthermore, IPv6 address is represented
-       in the compressed format described in RFC 4291, Section
-       2.2, item 2 with the following additional rules: the ::
-       substitution must be applied to the longest sequence of
-       all-zero 16-bit chunks in an IPv6 address.  If there is
-       a tie, the first sequence of all-zero 16-bit chunks is
-       replaced by ::.  Single all-zero 16-bit chunks are not
-       compressed.  The canonical format uses lowercase
-       characters and leading zeros are not allowed.";
-     reference
-      "RFC 4291: IP Version 6 Addressing Architecture";
-   }
-
-   /*** collection of domain name and URI types ***/
-
-   typedef domain-name {
-     type string {
-       pattern '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
-            +  '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
-            +  '|\.';
-       length "1..253";
-     }
-     description
-      "The domain-name type represents a DNS domain name.  The
-       name SHOULD be fully qualified whenever possible.
-
-       Internet domain names are only loosely specified.  Section
-       3.5 of RFC 1034 recommends a syntax (modified in Section
-       2.1 of RFC 1123).  The pattern above is intended to allow
-       for current practice in domain name use, and some possible
-       future expansion.  It is designed to hold various types of
-       domain names, including names used for A or AAAA records
-       (host names) and other records, such as SRV records.  Note
-       that Internet host names have a stricter syntax (described
-       in RFC 952) than the DNS recommendations in RFCs 1034 and
-       1123, and that systems that want to store host names in
-       schema nodes using the domain-name type are recommended to
-       adhere to this stricter standard to ensure interoperability.
-
-       The encoding of DNS names in the DNS protocol is limited
-       to 255 characters.  Since the encoding consists of labels
-       prefixed by a length bytes and there is a trailing NULL
-       byte, only 253 characters can appear in the textual dotted
-       notation.
-
-       The description clause of schema nodes using the domain-name
-       type MUST describe when and how these names are resolved to
-       IP addresses.  Note that the resolution of a domain-name value
-       may require to query multiple DNS records (e.g., A for IPv4
-       and AAAA for IPv6).  The order of the resolution process and
-       which DNS record takes precedence can either be defined
-       explicitely or it may depend on the configuration of the
-       resolver.
-
-       Domain-name values use the US-ASCII encoding.  Their canonical
-       format uses lowercase US-ASCII characters.  Internationalized
-       domain names MUST be encoded in punycode as described in RFC
-       3492";
-     reference
-      "RFC  952: DoD Internet Host Table Specification
-       RFC 1034: Domain Names - Concepts and Facilities
-       RFC 1123: Requirements for Internet Hosts -- Application
-                 and Support
-       RFC 2782: A DNS RR for specifying the location of services
-                 (DNS SRV)
-       RFC 3492: Punycode: A Bootstring encoding of Unicode for
-                 Internationalized Domain Names in Applications
-                 (IDNA)
-       RFC 5891: Internationalizing Domain Names in Applications
-                 (IDNA): Protocol";
-   }
-
-   typedef host {
-     type union {
-       type inet:ip-address;
-       type inet:domain-name;
-     }
-     description
-      "The host type represents either an IP address or a DNS
-       domain name.";
-   }
-
-   typedef uri {
-     type string;
-     description
-      "The uri type represents a Uniform Resource Identifier
-       (URI) as defined by STD 66.
-
-       Objects using the uri type MUST be in US-ASCII encoding,
-       and MUST be normalized as described by RFC 3986 Sections
-       6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
-       percent-encoding is removed, and all case-insensitive
-       characters are set to lowercase except for hexadecimal
-       digits, which are normalized to uppercase as described in
-       Section 6.2.2.1.
-
-       The purpose of this normalization is to help provide
-       unique URIs.  Note that this normalization is not
-       sufficient to provide uniqueness.  Two URIs that are
-       textually distinct after this normalization may still be
-       equivalent.
-
-       Objects using the uri type may restrict the schemes that
-       they permit.  For example, 'data:' and 'urn:' schemes
-       might not be appropriate.
-
-       A zero-length URI is not a valid URI.  This can be used to
-       express 'URI absent' where required.
-
-       In the value set and its semantics, this type is equivalent
-       to the Uri SMIv2 textual convention defined in RFC 5017.";
-     reference
-      "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
-       RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
-                 Group: Uniform Resource Identifiers (URIs), URLs,
-                 and Uniform Resource Names (URNs): Clarifications
-                 and Recommendations
-       RFC 5017: MIB Textual Conventions for Uniform Resource
-                 Identifiers (URIs)";
-   }
-
- }
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/ietf-interfaces@2013-07-04.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/ietf-interfaces@2013-07-04.yang
deleted file mode 100644 (file)
index 9db753c..0000000
+++ /dev/null
@@ -1,673 +0,0 @@
-module ietf-interfaces {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
-  prefix if;
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-  import iana-if-type {
-    prefix ianaift;
-  }
-
-  organization
-    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/netmod/>
-     WG List:  <mailto:netmod@ietf.org>
-
-     WG Chair: David Kessens
-               <mailto:david.kessens@nsn.com>
-
-     WG Chair: Juergen Schoenwaelder
-               <mailto:j.schoenwaelder@jacobs-university.de>
-
-     Editor:   Martin Bjorklund
-               <mailto:mbj@tail-f.com>";
-
-  description
-    "This module contains a collection of YANG definitions for
-     managing network interfaces.
-
-     Copyright (c) 2013 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC XXXX; see
-     the RFC itself for full legal notices.";
-
-  // RFC Ed.: replace XXXX with actual RFC number and remove this
-  // note.
-
-  // RFC Ed.: update the date below with the date of RFC publication
-  // and remove this note.
-  revision 2013-07-04 {
-    description
-      "Initial revision.";
-    reference
-      "RFC XXXX: A YANG Data Model for Interface Management";
-  }
-
-  /* Typedefs */
-
-  typedef interface-ref {
-    type leafref {
-      path "/if:interfaces/if:interface/if:name";
-    }
-    description
-      "This type is used by data models that need to reference
-       configured interfaces.";
-  }
-
-  typedef interface-state-ref {
-    type leafref {
-      path "/if:interfaces-state/if:interface/if:name";
-    }
-    description
-      "This type is used by data models that need to reference
-       the operationally present interfaces.";
-  }
-
-  /* Features */
-
-  feature arbitrary-names {
-    description
-      "This feature indicates that the device allows user-controlled
-       interfaces to be named arbitrarily.";
-  }
-
-  feature pre-provisioning {
-    description
-      "This feature indicates that the device supports
-       pre-provisioning of interface configuration, i.e., it is
-       possible to configure an interface whose physical interface
-       hardware is not present on the device.";
-  }
-
-  feature if-mib {
-    description
-      "This feature indicates that the device implements IF-MIB.";
-    reference
-      "RFC 2863: The Interfaces Group MIB";
-  }
-
-  /* Data nodes */
-
-  container interfaces {
-    description
-      "Interface configuration parameters.";
-
-    list interface {
-      key "name";
-
-      description
-        "The list of configured interfaces on the device.
-
-         The operational state of an interface is available in the
-         /interfaces-state/interface list.  If the configuration of a
-         system-controlled interface cannot be used by the system
-         (e.g., the interface hardware present does not match the
-         interface type), then the configuration is not applied to
-         the system-controlled interface shown in the
-         /interfaces-state/interface list.  If the the configuration
-         of a user-controlled interface cannot be used by the system,
-         the configured interface is not instantiated in the
-         /interfaces-state/interface list.";
-
-     leaf name {
-        type string;
-        description
-          "The name of the interface.
-
-           A device MAY restrict the allowed values for this leaf,
-           possibly depending on the type of the interface.
-
-           For system-controlled interfaces, this leaf is the
-           device-specific name of the interface.  The 'config false'
-           list /interfaces-state/interface contains the currently
-           existing interfaces on the device.
-
-           If a client tries to create configuration for a
-           system-controlled interface that is not present in the
-           /interfaces-state/interface list, the server MAY reject
-           the request, if the implementation does not support
-           pre-provisioning of interfaces, or if the name refers to
-           an interface that can never exist in the system.  A
-           NETCONF server MUST reply with an rpc-error with the
-           error-tag 'invalid-value' in this case.
-
-           If the device supports pre-provisioning of interface
-           configuration, the feature 'pre-provisioning' is
-           advertised.
-
-           If the device allows arbitrarily named user-controlled
-           interfaces, the feature 'arbitrary-names' is advertised.
-
-           When a configured user-controlled interface is created by
-           the system, it is instantiated with the same name in the
-           /interface-state/interface list.  Since the name in that
-           list MAY be mapped to ifName by an implementation, such an
-           implementation MUST restrict the allowed values for this
-           leaf so that it matches the restrictions of ifName.
-
-           If a NETCONF server that implements this restriction is
-           sent a value that doesn't match the restriction, it MUST
-           reply with an rpc-error with the error-tag
-           'invalid-value'.";
-      }
-
-      leaf description {
-        type string;
-        description
-          "A textual description of the interface.
-
-           This leaf MAY be mapped to ifAlias by an implementation.
-           Such an implementation MUST restrict the allowed values
-           for this leaf so that it matches the restrictions of
-           ifAlias.
-
-           If a NETCONF server that implements this restriction is
-           sent a value that doesn't match the restriction, it MUST
-           reply with an rpc-error with the error-tag
-           'invalid-value'.
-
-           Since ifAlias is defined to be stored in non-volatile
-           storage, the MIB implementation MUST map ifAlias to the
-           value of 'description' in the persistently stored
-           datastore.
-
-           Specifically, if the device supports ':startup', when
-           ifAlias is read the device MUST return the value of
-           'description' in the 'startup' datastore, and when it is
-           written, it MUST be written to the 'running' and 'startup'
-           datastores.  Note that it is up to the implementation if
-           it modifies this single leaf in 'startup', or if it
-           performs an implicit copy-config from 'running' to
-           'startup'.
-
-           If the device does not support ':startup', ifAlias MUST
-           be mapped to the 'description' leaf in the 'running'
-           datastore.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifAlias";
-      }
-
-      leaf type {
-        type ianaift:iana-if-type;
-        mandatory true;
-        description
-          "The type of the interface.
-
-           When an interface entry is created, a server MAY
-           initialize the type leaf with a valid value, e.g., if it
-           is possible to derive the type from the name of the
-           interface.
-
-           If a client tries to set the type of an interface to a
-           value that can never be used by the system, e.g., if the
-           type is not supported or if the type does not match the
-           name of the interface, the server MUST reject the request.
-           A NETCONF server MUST reply with an rpc-error with the
-           error-tag 'invalid-value' in this case.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifType";
-      }
-
-      leaf enabled {
-        type boolean;
-        default "true";
-        description
-          "This leaf contains the configured, desired state of the
-           interface.
-
-           Systems that implement the IF-MIB use the value of this
-           leaf in the 'running' datastore to set
-           IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
-           has been initialized, as described in RFC 2863.
-
-           Changes in this leaf in the 'running' datastore are
-           reflected in ifAdminStatus, but if ifAdminStatus is
-           changed over SNMP, this leaf is not affected.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
-      }
-
-      leaf link-up-down-trap-enable {
-        if-feature if-mib;
-        type enumeration {
-          enum enabled {
-            value 1;
-          }
-          enum disabled {
-            value 2;
-          }
-        }
-        description
-          "Controls whether linkUp/linkDown SNMP notifications
-           should be generated for this interface.
-
-           If this node is not configured, the value 'enabled' is
-           operationally used by the server for interfaces which do
-           not operate on top of any other interface (i.e., there are
-           no 'lower-layer-if' entries), and 'disabled' otherwise.";
-        reference
-          "RFC 2863: The Interfaces Group MIB -
-                     ifLinkUpDownTrapEnable";
-      }
-    }
-  }
-
-  container interfaces-state {
-    config false;
-    description
-      "Data nodes for the operational state of interfaces.";
-
-    list interface {
-      key "name";
-
-      description
-        "The list of interfaces on the device.
-
-         System-controlled interfaces created by the system are
-         always present in this list, whether they are configured or
-         not.";
-
-      leaf name {
-        type string;
-        description
-          "The name of the interface.
-
-           This leaf MAY be mapped to ifName by an implementation.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifName";
-      }
-
-      leaf type {
-        type ianaift:iana-if-type;
-        mandatory true;
-        description
-          "The type of the interface.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifType";
-      }
-
-      leaf admin-status {
-        if-feature if-mib;
-        type enumeration {
-          enum up {
-            value 1;
-            description
-              "Ready to pass packets.";
-          }
-          enum down {
-            value 2;
-            description
-              "Not ready to pass packets and not in some test mode.";
-          }
-          enum testing {
-            value 3;
-            description
-              "In some test mode.";
-          }
-        }
-        mandatory true;
-        description
-          "The desired state of the interface.
-
-           This leaf has the same read semantics as ifAdminStatus.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
-      }
-
-      leaf oper-status {
-        type enumeration {
-          enum up {
-            value 1;
-            description
-              "Ready to pass packets.";
-          }
-          enum down {
-            value 2;
-            description
-              "The interface does not pass any packets.";
-          }
-          enum testing {
-            value 3;
-            description
-              "In some test mode.  No operational packets can
-               be passed.";
-          }
-          enum unknown {
-            value 4;
-            description
-              "Status cannot be determined for some reason.";
-          }
-          enum dormant {
-            value 5;
-            description
-              "Waiting for some external event.";
-          }
-          enum not-present {
-            value 6;
-            description
-              "Some component (typically hardware) is missing.";
-          }
-          enum lower-layer-down {
-            value 7;
-            description
-              "Down due to state of lower-layer interface(s).";
-          }
-        }
-        mandatory true;
-        description
-          "The current operational state of the interface.
-
-           This leaf has the same semantics as ifOperStatus.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifOperStatus";
-      }
-
-      leaf last-change {
-        type yang:date-and-time;
-        description
-          "The time the interface entered its current operational
-           state.  If the current state was entered prior to the
-           last re-initialization of the local network management
-           subsystem, then this node is not present.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifLastChange";
-      }
-
-      leaf if-index {
-        if-feature if-mib;
-        type int32 {
-          range "1..2147483647";
-        }
-        mandatory true;
-        description
-          "The ifIndex value for the ifEntry represented by this
-           interface.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifIndex";
-      }
-
-      leaf phys-address {
-        type yang:phys-address;
-        description
-          "The interface's address at its protocol sub-layer.  For
-          example, for an 802.x interface, this object normally
-          contains a MAC address.  The interface's media-specific
-          modules must define the bit and byte ordering and the
-          format of the value of this object.  For interfaces that do
-          not have such an address (e.g., a serial line), this node
-          is not present.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifPhysAddress";
-      }
-
-      leaf-list higher-layer-if {
-        type interface-state-ref;
-        description
-          "A list of references to interfaces layered on top of this
-           interface.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifStackTable";
-      }
-
-      leaf-list lower-layer-if {
-        type interface-state-ref;
-        description
-          "A list of references to interfaces layered underneath this
-           interface.";
-        reference
-          "RFC 2863: The Interfaces Group MIB - ifStackTable";
-      }
-
-      leaf speed {
-        type yang:gauge64;
-        units "bits / second";
-        description
-            "An estimate of the interface's current bandwidth in bits
-             per second.  For interfaces that do not vary in
-             bandwidth or for those where no accurate estimation can
-             be made, this node should contain the nominal bandwidth.
-             For interfaces that have no concept of bandwidth, this
-             node is not present.";
-        reference
-          "RFC 2863: The Interfaces Group MIB -
-                     ifSpeed, ifHighSpeed";
-      }
-
-      container statistics {
-        description
-          "A collection of interface-related statistics objects.";
-
-        leaf discontinuity-time {
-          type yang:date-and-time;
-          mandatory true;
-          description
-            "The time on the most recent occasion at which any one or
-             more of this interface's counters suffered a
-             discontinuity.  If no such discontinuities have occurred
-             since the last re-initialization of the local management
-             subsystem, then this node contains the time the local
-             management subsystem re-initialized itself.";
-        }
-
-        leaf in-octets {
-          type yang:counter64;
-          description
-            "The total number of octets received on the interface,
-             including framing characters.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifHCInOctets";
-        }
-        leaf in-unicast-pkts {
-          type yang:counter64;
-          description
-            "The number of packets, delivered by this sub-layer to a
-             higher (sub-)layer, which were not addressed to a
-             multicast or broadcast address at this sub-layer.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
-        }
-        leaf in-broadcast-pkts {
-          type yang:counter64;
-          description
-            "The number of packets, delivered by this sub-layer to a
-             higher (sub-)layer, which were addressed to a broadcast
-             address at this sub-layer.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB -
-                       ifHCInBroadcastPkts";
-        }
-        leaf in-multicast-pkts {
-          type yang:counter64;
-          description
-            "The number of packets, delivered by this sub-layer to a
-             higher (sub-)layer, which were addressed to a multicast
-             address at this sub-layer.  For a MAC layer protocol,
-             this includes both Group and Functional addresses.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB -
-                       ifHCInMulticastPkts";
-        }
-        leaf in-discards {
-          type yang:counter32;
-          description
-            "The number of inbound packets which were chosen to be
-             discarded even though no errors had been detected to
-             prevent their being deliverable to a higher-layer
-             protocol.  One possible reason for discarding such a
-             packet could be to free up buffer space.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifInDiscards";
-        }
-        leaf in-errors {
-          type yang:counter32;
-          description
-            "For packet-oriented interfaces, the number of inbound
-             packets that contained errors preventing them from being
-             deliverable to a higher-layer protocol.  For character-
-             oriented or fixed-length interfaces, the number of
-             inbound transmission units that contained errors
-             preventing them from being deliverable to a higher-layer
-             protocol.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifInErrors";
-        }
-        leaf in-unknown-protos {
-          type yang:counter32;
-          description
-            "For packet-oriented interfaces, the number of packets
-             received via the interface which were discarded because
-             of an unknown or unsupported protocol.  For
-             character-oriented or fixed-length interfaces that
-             support protocol multiplexing the number of transmission
-             units received via the interface which were discarded
-             because of an unknown or unsupported protocol.  For any
-             interface that does not support protocol multiplexing,
-             this counter is not present.
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
-        }
-
-        leaf out-octets {
-          type yang:counter64;
-          description
-            "The total number of octets transmitted out of the
-             interface, including framing characters.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
-        }
-        leaf out-unicast-pkts {
-          type yang:counter64;
-          description
-            "The total number of packets that higher-level protocols
-             requested be transmitted, and which were not addressed
-             to a multicast or broadcast address at this sub-layer,
-             including those that were discarded or not sent.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
-        }
-        leaf out-broadcast-pkts {
-          type yang:counter64;
-          description
-            "The total number of packets that higher-level protocols
-             requested be transmitted, and which were addressed to a
-             broadcast address at this sub-layer, including those
-             that were discarded or not sent.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB -
-                       ifHCOutBroadcastPkts";
-        }
-        leaf out-multicast-pkts {
-          type yang:counter64;
-          description
-            "The total number of packets that higher-level protocols
-             requested be transmitted, and which were addressed to a
-             multicast address at this sub-layer, including those
-             that were discarded or not sent.  For a MAC layer
-             protocol, this includes both Group and Functional
-             addresses.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB -
-                       ifHCOutMulticastPkts";
-        }
-        leaf out-discards {
-          type yang:counter32;
-          description
-            "The number of outbound packets which were chosen to be
-             discarded even though no errors had been detected to
-             prevent their being transmitted.  One possible reason
-             for discarding such a packet could be to free up buffer
-             space.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifOutDiscards";
-        }
-        leaf out-errors {
-          type yang:counter32;
-          description
-            "For packet-oriented interfaces, the number of outbound
-             packets that could not be transmitted because of errors.
-             For character-oriented or fixed-length interfaces, the
-             number of outbound transmission units that could not be
-             transmitted because of errors.
-
-             Discontinuities in the value of this counter can occur
-             at re-initialization of the management system, and at
-             other times as indicated by the value of
-             'discontinuity-time'.";
-          reference
-            "RFC 2863: The Interfaces Group MIB - ifOutErrors";
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/ietf-restconf@2013-10-19.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/ietf-restconf@2013-10-19.yang
deleted file mode 100644 (file)
index 16766b0..0000000
+++ /dev/null
@@ -1,684 +0,0 @@
-module ietf-restconf {
-     namespace "urn:ietf:params:xml:ns:yang:ietf-restconf";
-     prefix "restconf";
-
-     import ietf-yang-types { prefix yang; }
-     import ietf-inet-types { prefix inet; }
-     organization
-       "IETF NETCONF (Network Configuration) Working Group";
-
-     contact
-       "Editor:   Andy Bierman
-                  <mailto:andy@yumaworks.com>
-
-        Editor:   Martin Bjorklund
-                  <mailto:mbj@tail-f.com>
-
-        Editor:   Kent Watsen
-                  <mailto:kwatsen@juniper.net>
-
-        Editor:   Rex Fernando
-                  <mailto:rex@cisco.com>";
-
-     description
-       "This module contains conceptual YANG specifications
-        for the YANG Patch and error content that is used in
-        RESTCONF protocol messages. A conceptual container
-        representing the RESTCONF API nodes (media type
-        application/yang.api).
-
-        Note that the YANG definitions within this module do not
-        represent configuration data of any kind.
-        The YANG grouping statements provide a normative syntax
-        for XML and JSON message encoding purposes.
-        Copyright (c) 2013 IETF Trust and the persons identified as
-        authors of the code.  All rights reserved.
-
-        Redistribution and use in source and binary forms, with or
-        without modification, is permitted pursuant to, and subject
-        to the license terms contained in, the Simplified BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (http://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of RFC XXXX; see
-        the RFC itself for full legal notices.";
-
-     // RFC Ed.: replace XXXX with actual RFC number and remove this
-     // note.
-
-     // RFC Ed.: remove this note
-     // Note: extracted from draft-bierman-netconf-restconf-02.txt
-
-     // RFC Ed.: update the date below with the date of RFC publication
-     // and remove this note.
-     revision 2013-10-19 {
-       description
-         "Initial revision.";
-       reference
-         "RFC XXXX: RESTCONF Protocol.";
-     }
-
-     typedef data-resource-identifier {
-       type string {
-         length "1 .. max";
-       }
-       description
-         "Contains a Data Resource Identifier formatted string
-          to identify a specific data node. The data node that
-          uses this data type SHOULD define the document root
-          for data resource identifiers.  The default document
-          root is the target datastore conceptual root node.
-          Data resource identifiers are defined relative to
-          this document root.";
-       reference
-         "RFC XXXX: [sec. 5.3.1.1 ABNF For Data Resource Identifiers]";
-     }
-
-     // this typedef is TBD; not currently used
-     typedef datastore-identifier {
-       type union {
-         type enumeration {
-           enum candidate {
-             description
-               "Identifies the NETCONF shared candidate datastore.";
-             reference
-               "RFC 6241, section 8.3";
-           }
-           enum running {
-             description
-               "Identifies the NETCONF running datastore.";
-             reference
-               "RFC 6241, section 5.1";
-           }
-           enum startup {
-             description
-               "Identifies the NETCONF startup datastore.";
-             reference
-               "RFC 6241, section 8.7";
-           }
-         }
-         type string;
-       }
-       description
-         "Contains a string to identify a specific datastore.
-          The enumerated datastore identifier values are
-          reserved for standard datastore names.";
-     }
-
-     typedef revision-identifier {
-       type string {
-         pattern '\d{4}-\d{2}-\d{2}';
-       }
-       description
-         "Represents a specific date in YYYY-MM-DD format.
-          TBD: make pattern more precise to exclude leading zeros.";
-     }
-
-     grouping yang-patch {
-       description
-         "A grouping that contains a YANG container
-          representing the syntax and semantics of a
-          YANG Patch edit request message.";
-
-       container yang-patch {
-         description
-           "Represents a conceptual sequence of datastore edits,
-            called a patch. Each patch is given a client-assigned
-            patch identifier. Each edit MUST be applied
-            in ascending order, and all edits MUST be applied.
-            If any errors occur, then the target datastore MUST NOT
-            be changed by the patch operation.
-
-            A patch MUST be validated by the server to be a
-            well-formed message before any of the patch edits
-            are validated or attempted.
-
-            YANG datastore validation (defined in RFC 6020, section 
-            8.3.3) is performed after all edits have been
-            individually validated.
-
-            It is possible for a datastore constraint violation to occur
-            due to any node in the datastore, including nodes not
-            included in the edit list. Any validation errors MUST
-            be reported in the reply message.";
-
-         reference
-           "RFC 6020, section 8.3.";
-
-         leaf patch-id {
-           type string;
-           description
-             "An arbitrary string provided by the client to identify
-              the entire patch.  This value SHOULD be present in any
-              audit logging records generated by the server for the
-              patch. Error messages returned by the server pertaining
-              to this patch will be identified by this patch-id value.";
-         }
-
-         leaf comment {
-           type string {
-             length "0 .. 1024";
-           }
-           description
-             "An arbitrary string provided by the client to describe
-              the entire patch.  This value SHOULD be present in any
-              audit logging records generated by the server for the
-              patch.";
-         }
-
-         list edit {
-           key edit-id;
-           ordered-by user;
-
-           description
-             "Represents one edit within the YANG Patch
-              request message.";
-           leaf edit-id {
-             type string;
-             description
-               "Arbitrary string index for the edit.
-                Error messages returned by the server pertaining
-                to a specific edit will be identified by this
-                value.";
-           }
-
-           leaf operation {
-             type enumeration {
-               enum create {
-                 description
-                   "The target data node is created using the
-                    supplied value, only if it does not already
-                    exist.";
-               }
-               enum delete {
-                 description
-                   "Delete the target node, only if the data resource
-                    currently exists, otherwise return an error.";
-               }
-               enum insert {
-                 description
-                   "Insert the supplied value into a user-ordered
-                    list or leaf-list entry. The target node must
-                    represent a new data resource.";
-               }
-               enum merge {
-                 description
-                   "The supplied value is merged with the target data
-                    node.";
-               }
-               enum move {
-                 description
-                   "Move the target node. Reorder a user-ordered
-                    list or leaf-list. The target node must represent
-                    an existing data resource.";
-               }
-               enum replace {
-                 description
-                   "The supplied value is used to replace the target
-                    data node.";
-               }
-               enum remove {
-                 description
-                   "Delete the target node if it currently exists.";
-               }
-             }
-             mandatory true;
-             description
-               "The datastore operation requested for the associated
-                edit entry";
-           }
-
-           leaf target {
-             type data-resource-identifier;
-             mandatory true;
-             description
-               "Identifies the target data resource for the edit
-                operation.";
-           }
-
-           leaf point {
-             when "(../operation = 'insert' or " +
-               "../operation = 'move') and " +
-               "(../where = 'before' or ../where = 'after')" {
-               description
-                 "Point leaf only applies for insert or move
-                  operations, before or after an existing entry.";
-             }
-             type data-resource-identifier;
-             description
-               "The absolute URL path for the data node that is being
-                used as the insertion point or move point for the
-                target of this edit entry.";
-           }
-
-           leaf where {
-             when "../operation = 'insert' or ../operation = 'move'" {
-               description
-                 "Where leaf only applies for insert or move
-                  operations.";
-             }
-             type enumeration {
-               enum before {
-                 description
-                   "Insert or move a data node before the data resource
-                    identified by the 'point' parameter.";
-               }
-               enum after {
-                 description
-                   "Insert or move a data node after the data resource
-                    identified by the 'point' parameter.";
-               }
-               enum first {
-                 description
-                   "Insert or move a data node so it becomes ordered
-                    as the first entry.";
-               }
-               enum last {
-                 description
-                   "Insert or move a data node so it becomes ordered
-                    as the last entry.";
-               }
-
-             }
-             default last;
-             description
-               "Identifies where a data resource will be inserted or
-                moved. YANG only allows these operations for
-                list and leaf-list data nodes that are ordered-by
-                user.";
-           }
-
-           anyxml value {
-             when "(../operation = 'create' or " +
-               "../operation = 'merge' " +
-               "or ../operation = 'replace' or " +
-               "../operation = 'insert')" {
-               description
-                 "Value node only used for create, merge,
-                  replace, and insert operations";
-             }
-             description
-               "Value used for this edit operation.";
-           }
-         }
-       }
-
-     } // grouping yang-patch
-
-
-     grouping yang-patch-status {
-
-       description
-         "A grouping that contains a YANG container
-          representing the syntax and semantics of
-          YANG Patch status response message.";
-
-       container yang-patch-status {
-         description
-           "A container representing the response message
-            sent by the server after a YANG Patch edit
-            request message has been processed.";
-
-         leaf patch-id {
-           type string;
-           description
-             "The patch-id value used in the request";
-         }
-
-         choice global-status {
-           description
-             "Report global errors or complete success.
-              If there is no case selected then errors
-              are reported in the edit-status container.";
-
-           case global-errors {
-             uses errors;
-             description
-               "This container will be present if global
-                errors unrelated to a specific edit occurred.";
-           }
-           leaf ok {
-             type empty;
-             description
-               "This leaf will be present if the request succeeded
-                and there are no errors reported in the edit-status
-                container.";
-           }
-         }
-
-         container edit-status {
-           description
-             "This container will be present if there are
-              edit-specific status responses to report.";
-
-           list edit {
-             key edit-id;
-
-             description
-               "Represents a list of status responses,
-                corresponding to edits in the YANG Patch
-                request message.  If an edit entry was
-                skipped or not reached by the server,
-                then this list will not contain a corresponding
-                entry for that edit.";
-
-             leaf edit-id {
-               type string;
-                description
-                  "Response status is for the edit list entry
-                   with this edit-id value.";
-             }
-             choice edit-status-choice {
-               description
-                 "A choice between different types of status
-                  responses for each edit entry.";
-               leaf ok {
-                 type empty;
-                 description
-                   "This edit entry was invoked without any
-                    errors detected by the server associated
-                    with this edit.";
-               }
-               leaf location {
-                 type inet:uri;
-                 description
-                   "Contains the Location header value that would be
-                    returned if this edit causes a new resource to be
-                    created. If the edit identified by the same edit-id
-                    value was successfully invoked and a new resource
-                    was created, then this field will be returned
-                    instead of 'ok'.";
-               }
-               case errors {
-                 uses errors;
-                 description
-                   "The server detected errors associated with the
-                     edit identified by the same edit-id value.";
-               }
-             }
-           }
-         }
-       }
-     }  // grouping yang-patch-status
-
-
-     grouping errors {
-
-       description
-         "A grouping that contains a YANG container
-          representing the syntax and semantics of a
-          YANG Patch errors report within a response message.";
-
-       container errors {
-         config false;  // needed so list error does not need a key
-         description
-           "Represents an error report returned by the server if
-            a request results in an error.";
-
-         list error {
-           description
-             "An entry containing information about one
-              specific error that occurred while processing
-              a RESTCONF request.";
-           reference "RFC 6241, Section 4.3";
-
-           leaf error-type {
-             type enumeration {
-               enum transport {
-                 description "The transport layer";
-               }
-               enum rpc {
-                 description "The rpc or notification layer";
-               }
-               enum protocol {
-                 description "The protocol operation layer";
-               }
-               enum application {
-                 description "The server application layer";
-               }
-             }
-             mandatory true;
-             description
-               "The protocol layer where the error occurred.";
-           }
-
-           leaf error-tag {
-             type string;
-             mandatory true;
-             description
-               "The enumerated error tag.";
-           }
-
-           leaf error-app-tag {
-             type string;
-             description
-               "The application-specific error tag.";
-           }
-
-           leaf error-path {
-             type data-resource-identifier;
-             description
-               "The target data resource identifier associated
-                with the error, if any.";
-           }
-           leaf error-message {
-             type string;
-             description
-               "A message describing the error.";
-           }
-
-           container error-info {
-              description
-                "A container allowing additional information
-                 to be included in the error report.";
-              // arbitrary anyxml content here
-           }
-         }
-       }
-     } // grouping errors
-
-
-     grouping restconf {
-
-       description
-         "A grouping that contains a YANG container
-          representing the syntax and semantics of
-          the RESTCONF API resource.";
-
-       container restconf {
-         description
-           "Conceptual container representing the
-            application/yang.api resource type.";
-
-         container config {
-           description
-             "Container representing the application/yang.datastore
-              resource type. Represents the conceptual root of the
-              unified configuration datastore containing YANG data
-              nodes. The child nodes of this container are
-              configuration data resources (application/yang.data)
-              defined as top-level YANG data nodes from the modules
-              advertised by the server in /restconf/modules.";
-         }
-
-         container operational {
-           description
-             "Container representing the application/yang.datastore
-              resource type. Represents the conceptual root of the
-              operational data supported by the server.  The child
-              nodes of this container are operational data resources
-              (application/yang.data) defined as top-level
-              YANG data nodes from the modules advertised by
-              the server in /restconf/modules.";
-         }
-
-         container modules {
-           description
-             "Contains a list of module description entries.
-              These modules are currently loaded into the server.";
-
-           list module {
-             key "name revision";
-             description
-               "Each entry represents one module currently
-                supported by the server.";
-
-             leaf name {
-               type yang:yang-identifier;
-               description "The YANG module name.";
-             }
-             leaf revision {
-               type union {
-                 type revision-identifier;
-                 type string { length 0; }
-               }
-               description
-                 "The YANG module revision date. An empty string is
-                  used if no revision statement is present in the
-                  YANG module.";
-             }
-             leaf namespace {
-               type inet:uri;
-               mandatory true;
-               description
-                 "The XML namespace identifier for this module.";
-             }
-             leaf-list feature {
-               type yang:yang-identifier;
-               description
-                 "List of YANG feature names from this module that are
-                  supported by the server.";
-             }
-             leaf-list deviation {
-               type yang:yang-identifier;
-               description
-                 "List of YANG deviation module names used by this
-                  server to modify the conformance of the module
-                  associated with this entry.";
-             }
-           }
-         }
-
-         container operations {
-           description
-             "Container for all operation resources
-              (application/yang.operation),
-
-              Each resource is represented as an empty leaf with the
-              name of the RPC operation from the YANG rpc statement.
-
-              E.g.;
-
-                 POST /restconf/operations/show-log-errors
-
-                 leaf show-log-errors {
-                   type empty;
-                 }
-             ";
-         }
-
-         container streams {
-           description
-             "Container representing the notification event streams
-              supported by the server.";
-            reference
-              "RFC 5277, Section 3.4, <streams> element.";
-
-           list stream {
-             key name;
-             description
-               "Each entry describes an event stream supported by
-                the server.";
-
-             leaf name {
-               type string;
-               description "The stream name";
-               reference "RFC 5277, Section 3.4, <name> element.";
-             }
-
-             leaf description {
-               type string;
-               description "Description of stream content";
-               reference
-                 "RFC 5277, Section 3.4, <description> element.";
-             }
-
-             leaf replay-support {
-               type boolean;
-               description
-                 "Indicates if replay buffer supported for this stream";
-               reference
-                 "RFC 5277, Section 3.4, <replaySupport> element.";
-             }
-
-             leaf replay-log-creation-time {
-               type yang:date-and-time;
-               description
-                 "Indicates the time the replay log for this stream
-                  was created.";
-               reference
-                 "RFC 5277, Section 3.4, <replayLogCreationTime>
-                  element.";
-             }
-
-             leaf events {
-               type empty;
-               description
-                 "Represents the entry point for establishing
-                  notification delivery via server sent events.";
-             }
-           }
-         }
-
-         leaf version {
-           type enumeration {
-             enum "1.0" {
-               description
-                 "Version 1.0 of the RESTCONF protocol.";
-             }
-           }
-           config false;
-           description
-             "Contains the RESTCONF protocol version.";
-         }
-       }
-     }  // grouping restconf
-
-
-     grouping notification {
-       description
-         "Contains the notification message wrapper definition.";
-
-       container notification {
-         description
-           "RESTCONF notification message wrapper.";
-         leaf event-time {
-           type yang:date-and-time;
-           mandatory true;
-           description
-             "The time the event was generated by the
-              event source.";
-           reference
-             "RFC 5277, section 4, <eventTime> element.";
-         }
-
-         /* The YANG-specific notification container is encoded
-          * after the 'event-time' element.  The format
-          * corresponds to the notificationContent element
-          * in RFC 5277, section 4. For example:
-          *
-          *  module example-one {
-          *     ...
-          *     notification event1 { ... }
-          *
-          *  }
-          *
-          *  Encoded as element 'event1' in the namespace
-          *  for module 'example-one'.
-          */
-       }
-     }  // grouping notification
-
-   }
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/ietf-yang-types.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/ietf-yang-types.yang
deleted file mode 100644 (file)
index 07e50b3..0000000
+++ /dev/null
@@ -1,417 +0,0 @@
- module ietf-yang-types {
-
-   namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
-   prefix "yang";
-
-   organization
-    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-   contact
-    "WG Web:   <http://tools.ietf.org/wg/netmod/>
-     WG List:  <mailto:netmod@ietf.org>
-
-     WG Chair: David Partain
-               <mailto:david.partain@ericsson.com>
-
-     WG Chair: David Kessens
-               <mailto:david.kessens@nsn.com>
-
-     Editor:   Juergen Schoenwaelder
-               <mailto:j.schoenwaelder@jacobs-university.de>";
-
-   description
-    "This module contains a collection of generally useful derived
-     YANG data types.
-
-     Copyright (c) 2010 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or without
-     modification, is permitted pursuant to, and subject to the license
-     terms contained in, the Simplified BSD License set forth in Section
-     4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6021; see
-     the RFC itself for full legal notices.";
-
-   revision 2010-09-24 {
-     description
-      "Initial revision.";
-     reference
-      "RFC 6021: Common YANG Data Types";
-   }
-
-   /*** collection of counter and gauge types ***/
-
-   typedef counter32 {
-     type uint32;
-     description
-      "The counter32 type represents a non-negative integer
-       that monotonically increases until it reaches a
-       maximum value of 2^32-1 (4294967295 decimal), when it
-       wraps around and starts increasing again from zero.
-
-       Counters have no defined 'initial' value, and thus, a
-       single value of a counter has (in general) no information
-       content.  Discontinuities in the monotonically increasing
-       value normally occur at re-initialization of the
-       management system, and at other times as specified in the
-       description of a schema node using this type.  If such
-       other times can occur, for example, the creation of
-       a schema node of type counter32 at times other than
-       re-initialization, then a corresponding schema node
-       should be defined, with an appropriate type, to indicate
-       the last discontinuity.
-
-       The counter32 type should not be used for configuration
-       schema nodes.  A default statement SHOULD NOT be used in
-       combination with the type counter32.
-
-       In the value set and its semantics, this type is equivalent
-       to the Counter32 type of the SMIv2.";
-     reference
-      "RFC 2578: Structure of Management Information Version 2 (SMIv2)";
-   }
-
-   typedef zero-based-counter32 {
-     type yang:counter32;
-     default "0";
-     description
-      "The zero-based-counter32 type represents a counter32
-       that has the defined 'initial' value zero.
-
-       A schema node of this type will be set to zero (0) on creation
-       and will thereafter increase monotonically until it reaches
-       a maximum value of 2^32-1 (4294967295 decimal), when it
-       wraps around and starts increasing again from zero.
-
-       Provided that an application discovers a new schema node
-       of this type within the minimum time to wrap, it can use the
-       'initial' value as a delta.  It is important for a management
-       station to be aware of this minimum time and the actual time
-       between polls, and to discard data if the actual time is too
-       long or there is no defined minimum time.
-
-       In the value set and its semantics, this type is equivalent
-       to the ZeroBasedCounter32 textual convention of the SMIv2.";
-     reference
-       "RFC 4502: Remote Network Monitoring Management Information
-                  Base Version 2";
-   }
-
-   typedef counter64 {
-     type uint64;
-     description
-      "The counter64 type represents a non-negative integer
-       that monotonically increases until it reaches a
-       maximum value of 2^64-1 (18446744073709551615 decimal),
-       when it wraps around and starts increasing again from zero.
-
-       Counters have no defined 'initial' value, and thus, a
-       single value of a counter has (in general) no information
-       content.  Discontinuities in the monotonically increasing
-       value normally occur at re-initialization of the
-       management system, and at other times as specified in the
-       description of a schema node using this type.  If such
-       other times can occur, for example, the creation of
-       a schema node of type counter64 at times other than
-       re-initialization, then a corresponding schema node
-       should be defined, with an appropriate type, to indicate
-       the last discontinuity.
-
-       The counter64 type should not be used for configuration
-       schema nodes.  A default statement SHOULD NOT be used in
-       combination with the type counter64.
-
-       In the value set and its semantics, this type is equivalent
-       to the Counter64 type of the SMIv2.";
-     reference
-      "RFC 2578: Structure of Management Information Version 2 (SMIv2)";
-   }
-
-   typedef zero-based-counter64 {
-     type yang:counter64;
-     default "0";
-     description
-      "The zero-based-counter64 type represents a counter64 that
-       has the defined 'initial' value zero.
-
-       A schema node of this type will be set to zero (0) on creation
-       and will thereafter increase monotonically until it reaches
-       a maximum value of 2^64-1 (18446744073709551615 decimal),
-       when it wraps around and starts increasing again from zero.
-
-       Provided that an application discovers a new schema node
-       of this type within the minimum time to wrap, it can use the
-       'initial' value as a delta.  It is important for a management
-       station to be aware of this minimum time and the actual time
-       between polls, and to discard data if the actual time is too
-       long or there is no defined minimum time.
-
-       In the value set and its semantics, this type is equivalent
-       to the ZeroBasedCounter64 textual convention of the SMIv2.";
-     reference
-      "RFC 2856: Textual Conventions for Additional High Capacity
-                 Data Types";
-   }
-
-   typedef gauge32 {
-     type uint32;
-     description
-      "The gauge32 type represents a non-negative integer, which
-       may increase or decrease, but shall never exceed a maximum
-       value, nor fall below a minimum value.  The maximum value
-       cannot be greater than 2^32-1 (4294967295 decimal), and
-       the minimum value cannot be smaller than 0.  The value of
-       a gauge32 has its maximum value whenever the information
-       being modeled is greater than or equal to its maximum
-       value, and has its minimum value whenever the information
-       being modeled is smaller than or equal to its minimum value.
-       If the information being modeled subsequently decreases
-       below (increases above) the maximum (minimum) value, the
-       gauge32 also decreases (increases).
-
-       In the value set and its semantics, this type is equivalent
-       to the Gauge32 type of the SMIv2.";
-     reference
-      "RFC 2578: Structure of Management Information Version 2 (SMIv2)";
-   }
-
-   typedef gauge64 {
-     type uint64;
-     description
-      "The gauge64 type represents a non-negative integer, which
-       may increase or decrease, but shall never exceed a maximum
-       value, nor fall below a minimum value.  The maximum value
-       cannot be greater than 2^64-1 (18446744073709551615), and
-       the minimum value cannot be smaller than 0.  The value of
-       a gauge64 has its maximum value whenever the information
-       being modeled is greater than or equal to its maximum
-       value, and has its minimum value whenever the information
-       being modeled is smaller than or equal to its minimum value.
-       If the information being modeled subsequently decreases
-       below (increases above) the maximum (minimum) value, the
-       gauge64 also decreases (increases).
-
-       In the value set and its semantics, this type is equivalent
-       to the CounterBasedGauge64 SMIv2 textual convention defined
-       in RFC 2856";
-     reference
-      "RFC 2856: Textual Conventions for Additional High Capacity
-                 Data Types";
-   }
-
-   /*** collection of identifier related types ***/
-
-   typedef object-identifier {
-     type string {
-       pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
-             + '(\.(0|([1-9]\d*)))*';
-     }
-     description
-      "The object-identifier type represents administratively
-       assigned names in a registration-hierarchical-name tree.
-
-       Values of this type are denoted as a sequence of numerical
-       non-negative sub-identifier values.  Each sub-identifier
-       value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
-       are separated by single dots and without any intermediate
-       whitespace.
-
-       The ASN.1 standard restricts the value space of the first
-       sub-identifier to 0, 1, or 2.  Furthermore, the value space
-       of the second sub-identifier is restricted to the range
-       0 to 39 if the first sub-identifier is 0 or 1.  Finally,
-       the ASN.1 standard requires that an object identifier
-       has always at least two sub-identifier.  The pattern
-       captures these restrictions.
-
-       Although the number of sub-identifiers is not limited,
-       module designers should realize that there may be
-       implementations that stick with the SMIv2 limit of 128
-       sub-identifiers.
-
-       This type is a superset of the SMIv2 OBJECT IDENTIFIER type
-       since it is not restricted to 128 sub-identifiers.  Hence,
-       this type SHOULD NOT be used to represent the SMIv2 OBJECT
-       IDENTIFIER type, the object-identifier-128 type SHOULD be
-       used instead.";
-     reference
-      "ISO9834-1: Information technology -- Open Systems
-       Interconnection -- Procedures for the operation of OSI
-       Registration Authorities: General procedures and top
-       arcs of the ASN.1 Object Identifier tree";
-   }
-
-
-
-
-   typedef object-identifier-128 {
-     type object-identifier {
-       pattern '\d*(\.\d*){1,127}';
-     }
-     description
-      "This type represents object-identifiers restricted to 128
-       sub-identifiers.
-
-       In the value set and its semantics, this type is equivalent
-       to the OBJECT IDENTIFIER type of the SMIv2.";
-     reference
-      "RFC 2578: Structure of Management Information Version 2 (SMIv2)";
-   }
-   
-    typedef yang-identifier {
-       type string {
-         length "1..max";
-         pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
-         pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
-       }
-       description
-         "A YANG identifier string as defined by the 'identifier'
-          rule in Section 12 of RFC 6020.  An identifier must
-          start with an alphabetic character or an underscore
-          followed by an arbitrary sequence of alphabetic or
-          numeric characters, underscores, hyphens, or dots.
-
-          A YANG identifier MUST NOT start with any possible
-          combination of the lowercase or uppercase character
-          sequence 'xml'.";
-       reference
-         "RFC 6020: YANG - A Data Modeling Language for the Network
-                    Configuration Protocol (NETCONF)";
-     }   
-
-   /*** collection of date and time related types ***/
-
-   typedef date-and-time {
-     type string {
-       pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
-             + '(Z|[\+\-]\d{2}:\d{2})';
-     }
-     description
-      "The date-and-time type is a profile of the ISO 8601
-       standard for representation of dates and times using the
-       Gregorian calendar.  The profile is defined by the
-       date-time production in Section 5.6 of RFC 3339.
-
-       The date-and-time type is compatible with the dateTime XML
-       schema type with the following notable exceptions:
-
-       (a) The date-and-time type does not allow negative years.
-
-       (b) The date-and-time time-offset -00:00 indicates an unknown
-           time zone (see RFC 3339) while -00:00 and +00:00 and Z all
-           represent the same time zone in dateTime.
-
-       (c) The canonical format (see below) of data-and-time values
-           differs from the canonical format used by the dateTime XML
-           schema type, which requires all times to be in UTC using the
-           time-offset 'Z'.
-
-       This type is not equivalent to the DateAndTime textual
-       convention of the SMIv2 since RFC 3339 uses a different
-       separator between full-date and full-time and provides
-       higher resolution of time-secfrac.
-
-       The canonical format for date-and-time values with a known time
-       zone uses a numeric time zone offset that is calculated using
-       the device's configured known offset to UTC time.  A change of
-       the device's offset to UTC time will cause date-and-time values
-       to change accordingly.  Such changes might happen periodically
-       in case a server follows automatically daylight saving time
-       (DST) time zone offset changes.  The canonical format for
-       date-and-time values with an unknown time zone (usually referring
-       to the notion of local time) uses the time-offset -00:00.";
-     reference
-      "RFC 3339: Date and Time on the Internet: Timestamps
-       RFC 2579: Textual Conventions for SMIv2
-       XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
-   }
-
-   typedef timeticks {
-     type uint32;
-     description
-      "The timeticks type represents a non-negative integer that
-       represents the time, modulo 2^32 (4294967296 decimal), in
-       hundredths of a second between two epochs.  When a schema
-       node is defined that uses this type, the description of
-       the schema node identifies both of the reference epochs.
-
-       In the value set and its semantics, this type is equivalent
-       to the TimeTicks type of the SMIv2.";
-     reference
-      "RFC 2578: Structure of Management Information Version 2 (SMIv2)";
-   }
-
-   typedef timestamp {
-     type yang:timeticks;
-     description
-      "The timestamp type represents the value of an associated
-       timeticks schema node at which a specific occurrence happened.
-       The specific occurrence must be defined in the description
-       of any schema node defined using this type.  When the specific
-       occurrence occurred prior to the last time the associated
-       timeticks attribute was zero, then the timestamp value is
-       zero.  Note that this requires all timestamp values to be
-       reset to zero when the value of the associated timeticks
-       attribute reaches 497+ days and wraps around to zero.
-
-       The associated timeticks schema node must be specified
-       in the description of any schema node using this type.
-
-       In the value set and its semantics, this type is equivalent
-       to the TimeStamp textual convention of the SMIv2.";
-     reference
-      "RFC 2579: Textual Conventions for SMIv2";
-   }
-
-   /*** collection of generic address types ***/
-
-   typedef phys-address {
-     type string {
-       pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-     }
-     description
-      "Represents media- or physical-level addresses represented
-       as a sequence octets, each octet represented by two hexadecimal
-       numbers.  Octets are separated by colons.  The canonical
-       representation uses lowercase characters.
-
-       In the value set and its semantics, this type is equivalent
-       to the PhysAddress textual convention of the SMIv2.";
-     reference
-      "RFC 2579: Textual Conventions for SMIv2";
-   }
-
-   typedef mac-address {
-     type string {
-       pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
-     }
-     description
-      "The mac-address type represents an IEEE 802 MAC address.
-       The canonical representation uses lowercase characters.
-
-       In the value set and its semantics, this type is equivalent
-       to the MacAddress textual convention of the SMIv2.";
-     reference
-      "IEEE 802: IEEE Standard for Local and Metropolitan Area
-                 Networks: Overview and Architecture
-       RFC 2579: Textual Conventions for SMIv2";
-   }
-
-   /*** collection of XML specific types ***/
-
-   typedef xpath1.0 {
-     type string;
-     description
-      "This type represents an XPATH 1.0 expression.
-
-       When a schema node is defined that uses this type, the
-       description of the schema node MUST specify the XPath
-       context in which the XPath expression is evaluated.";
-     reference
-      "XPATH: XML Path Language (XPath) Version 1.0";
-   }
-
- }
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/module1-behind-mount-point.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/module1-behind-mount-point.yang
deleted file mode 100644 (file)
index e48184b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module module1-behind-mount-point {
-    namespace "module:1:behind:mount:point";
-    prefix "mod1bemopo";
-    revision "2014-02-03";
-    
-    rpc rpc-behind-module1 {
-    }
-    
-    
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/module2-behind-mount-point.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/modules-behind-mount-point/module2-behind-mount-point.yang
deleted file mode 100644 (file)
index 89b8c02..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module module2-behind-mount-point {
-    namespace "module:2:behind:mount:point";
-    prefix "mod2bemopo";
-    revision "2014-02-04";
-    
-    rpc rpc-behind-module2 {
-    }
-    
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/nested-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/modules/nested-module.yang
deleted file mode 100644 (file)
index 726b8d9..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-module nested-module {
-    namespace "urn:nested:module";
-    prefix "nested";
-    revision "2014-06-3";
-
-    container depth1-cont {
-        list depth2-cont1 {
-            container depth3-cont1 {
-                container depth4-cont1 {
-                    leaf depth5-leaf1 {
-                        type string;
-                    }
-                }
-
-                leaf depth4-leaf1 {
-                    type string;
-                }
-            }
-
-            leaf depth3-leaf1 {
-                type string;
-            }
-        }
-
-        /* list depth2-list2 was added to test keyed list */
-        list depth2-list2 {
-            key "depth3-lf1-key depth3-lf2-key";
-            leaf depth3-lf1-key {
-                type string;
-            }
-            leaf depth3-lf2-key {
-                type string;
-            }
-            leaf depth3-lf3 {
-                type string;
-            }
-        }
-
-        leaf-list depth2-lfLst1 {
-            type string;
-        }
-
-        container depth2-cont2 {
-            container depth3-cont2 {
-                container depth4-cont2 {
-                    leaf depth5-leaf2 {
-                        type string;
-                    }
-                }
-
-                leaf depth4-leaf2 {
-                    type string;
-                }
-            }
-
-            leaf depth3-leaf2 {
-                type string;
-            }
-        }
-
-        leaf depth2-leaf1 {
-            type string;
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/multiple-nodes/multiple-nodes.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/multiple-nodes/multiple-nodes.yang
deleted file mode 100644 (file)
index 22a1dae..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-module multiple-nodes {
-    namespace "multiple:nodes";
-    prefix "mod1";
-    revision "2014-06-23";
-
-    container cont {
-        container cont1 {
-            leaf lf11 {
-                type string;
-            }
-        }
-
-        leaf lf1 {
-            type string;
-        }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/augment-container.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/augment-container.yang
deleted file mode 100644 (file)
index 7efe4f7..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-module augment-container {
-  namespace "ns:augment:container";  
-  prefix "augcont";
-
-  
-  import yang {prefix yng; revision-date 2013-11-26;}  
-
-
-  revision "2013-11-26" {    
-  }
-  
-       augment "/yng:cont" {
-               container cont1 {
-                       leaf lf11 {
-                               type string;
-                       }
-               }
-       }
-       
-
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/augment-leaf.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/augment-leaf.yang
deleted file mode 100644 (file)
index 248d3bb..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-module augment-leaf {
-  namespace "ns:augment:leaf";  
-  prefix "auglf";
-
-  
-  import yang {prefix yng; revision-date 2013-11-26;}  
-
-
-  revision "2013-11-26" {    
-  }
-  
-       augment "/yng:cont" {
-               leaf lf2 {
-                       type string;
-               }
-       }
-       
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/augment-leaflist.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/augment-leaflist.yang
deleted file mode 100644 (file)
index 1f4b937..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module augment-leaflist {
-  namespace "ns:augment:leaflist";  
-  prefix "auglflst";
-
-  
-  import yang {prefix yng; revision-date 2013-11-26;}  
-
-
-  revision "2013-11-26" {    
-  }
-  
-       augment "/yng:cont" {
-               leaf-list lflst1 {
-                       type string;
-               }
-       }
-       
-
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/augment-list.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/augment-list.yang
deleted file mode 100644 (file)
index a35a87e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-module augment-list {
-  namespace "ns:augment:list";  
-  prefix "auglst";
-
-  
-  import yang {prefix yng; revision-date 2013-11-26;}  
-
-
-  revision "2013-11-26" {    
-  }
-  
-       augment "/yng:cont" {
-               list lst1 {
-                       leaf lf11 {
-                               type string;
-                       }
-               }
-       }
-       
-
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/xml/data.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/xml/data.xml
deleted file mode 100644 (file)
index fec6209..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<cont xmlns="ns:yang">
-    <lf1>lf1</lf1>
-    <lf2>lf2</lf2>
-    <cont1>
-        <lf11>lf11</lf11>
-    </cont1>
-    <lst1>
-        <lf11>lf1_1</lf11>
-    </lst1>
-    <lst1>
-        <lf11>lf1_2</lf11>
-    </lst1>
-    <lflst1>lflst1_1</lflst1>
-    <lflst1>lflst1_2</lflst1>
-    <lflst1>lflst1_3</lflst1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/yang.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/augmentation/yang.yang
deleted file mode 100644 (file)
index 64bf6f5..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-module yang {
-  namespace "ns:yang";  
-
-  prefix "yng";
-  revision 2013-11-26 {    
-  }
-  
-       container cont {
-               leaf lf1 {
-                       type string;
-               }
-               leaf lf2 {
-            type string;
-        }
-               container cont1{
-                   leaf lf11 {
-                   type string;
-               }
-               }
-               
-               list lst1{
-                   leaf lf11 {
-                   type string;
-               }
-               }
-               leaf-list lflst1{
-                   type string;
-               }
-       }
-}l
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/choice.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/choice.yang
deleted file mode 100644 (file)
index 22430b9..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-module choice-case-test {
-    namespace "choice:case:test";
-       
-       prefix "chcatst";
-       revision 2013-11-27 {
-       }
-       
-       container cont {
-               leaf lf1 {
-                       type string;
-               }               
-               
-               choice choi1 {
-                       case a1 {
-                               leaf lf1a {
-                                       type uint16;    
-                               }
-                               choice choi1a {
-                                       case aa1 {
-                                               leaf lf1aa {
-                                                       type string;
-                                               }
-                                               choice choi1aa {
-                                                       case aaa1 {
-                                                               leaf lf1aaa {
-                                                                       type string;
-                                                               }
-                                                       }
-                                                       case aab1 {
-                                                               leaf lf1aab {
-                                                                       type string;
-                                                               }
-                                                       }
-                                               }
-                                       }
-                                       case ab1 {
-                                               leaf lf1ab {
-                                                       type string;
-                                               }
-                                       }
-                               }
-                       }                       
-                       case b1 {
-                               list lst1b {
-                                       leaf lf11b {
-                                               type string;
-                                       }
-                               }
-                       }
-                       case c1 {
-                               container cont1c {
-                                       leaf lf11c {
-                                               type string;
-                                       }
-                               }
-                       }
-                       case d1 {
-                               leaf-list lflst1d {
-                                       type string;
-                               }
-                       }
-            leaf e1 {
-                type uint32;
-            }
-               }
-               
-               choice choi2 {
-                       case a2 {
-                               leaf lf2a {
-                                       type string;
-                               }
-                       }
-                       case b2 {
-                               leaf lf2b {
-                                       type string;
-                               }
-                       }
-               }
-        
-        choice choi4 {
-            case a4 {
-                list lst4a {
-                    choice choi4aa {
-                        case aa1 {
-                            leaf lf4aa {
-                                type string;
-                            }
-                        }
-                        case ab2 {
-                            leaf lf4ab {
-                                type int16;
-                            }
-                        }
-                    }
-                }
-            }
-            case b4 {
-                leaf-list lflst4b {
-                    type uint32;
-                }
-            }
-            
-        }
-               
-/*              equal identifiers in various cases are illegal 7.9.2 rfc6020 */
-/*             
-               choice choi3 {
-                       case 3a {
-                               leaf lf3a {
-                                       type string;
-                               }
-                       }
-                       case 3b {
-                               leaf lf3b {
-                                       type string;
-                               }
-                       }
-               }
-*/
-                               
-       }
-  
-       
-
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_case_defined_without_case.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_case_defined_without_case.xml
deleted file mode 100644 (file)
index 1d3f99f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<cont xmlns="choice:case:test">
-    <e1>45</e1>
-    <lf2b>lf2b val</lf2b>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_container.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_container.xml
deleted file mode 100644 (file)
index 146e256..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont xmlns="choice:case:test">
-    <cont1c>
-        <lf11c>lf11c val</lf11c>
-    </cont1c>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_leaflist.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_leaflist.xml
deleted file mode 100644 (file)
index f501e04..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<cont xmlns="choice:case:test">
-    <lflst1d>lflst1d_1 val</lflst1d>
-    <lflst1d>lflst1d_2 val</lflst1d>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_list.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_list.xml
deleted file mode 100644 (file)
index 6694b48..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<cont xmlns="choice:case:test">
-    <lst1b>
-        <lf11b>lf11b_1 val</lf11b>
-    </lst1b>
-    <lst1b>
-        <lf11b>lf11b_2 val</lf11b>
-    </lst1b>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_more_choices_same_level.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_more_choices_same_level.xml
deleted file mode 100644 (file)
index 3d2742a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<cont xmlns="choice:case:test">
-    <cont1c>
-        <lf11c>lf11c val</lf11c>
-    </cont1c>
-    <lf2b>lf2b value</lf2b>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_more_choices_same_level_various_paths_err.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_more_choices_same_level_various_paths_err.xml
deleted file mode 100644 (file)
index aa9e24c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<cont xmlns="choice:case:test">
-    <cont1c>
-        <lf11c>lf11c val</lf11c>
-    </cont1c>
-    <lf2b>lf2b value</lf2b>
-    <lf2a>lf2b value</lf2a>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_no_first_case.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_no_first_case.xml
deleted file mode 100644 (file)
index cc6f019..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont xmlns="choice:case:test">
-    <lf1>lf1 val</lf1>
-    <lf1a>121</lf1a>
-    <lf1ab>lf1ab val</lf1ab>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_random_level.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_random_level.xml
deleted file mode 100644 (file)
index 05ca42f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<cont xmlns="choice:case:test">
-    <lf1aa>lf1aa val</lf1aa>
-    <lf1>lf1 val</lf1>
-    <lf1a>121</lf1a>
-    <lf1aaa>lf1aaa val</lf1aaa>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_three_choices_same_level.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_three_choices_same_level.xml
deleted file mode 100644 (file)
index 7e54301..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<cont xmlns="choice:case:test">
-    <lf1aaa>lf1aaa value</lf1aaa>
-    <lf2b>lf2b value</lf2b>
-    <lst4a>
-        <lf4ab>33</lf4ab>
-    </lst4a>
-    <lst4a>
-        <lf4ab>33</lf4ab>
-    </lst4a>
-    <lst4a>
-        <lf4ab>37</lf4ab>
-    </lst4a>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_various_path_err.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/choice/xml/data_various_path_err.xml
deleted file mode 100644 (file)
index 5274679..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<cont xmlns="choice:case:test">
-    <lf1aa>lf1aa val</lf1aa>
-    <lf1>lf1 val</lf1>
-    <lf1a>121</lf1a>
-    <lf1ab>lf1ab value</lf1ab>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/data-of-several-modules/yang/module1.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/data-of-several-modules/yang/module1.yang
deleted file mode 100644 (file)
index 72a82ca..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module module1 {
-  namespace "module:one";  
-
-  prefix "m1";
-  revision 2014-01-17 {    
-  }
-
-    container cont_m1 {
-        leaf lf1_m1 {
-            type string;
-        }
-        uses confB_gr;
-    }
-    
-    grouping confB_gr {
-        container contB_m1 {
-        }
-    }
-  
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/data-of-several-modules/yang/module2.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/data-of-several-modules/yang/module2.yang
deleted file mode 100644 (file)
index 521d9c0..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module module2 {
-  namespace "module:two";  
-
-  prefix "m2";
-  revision 2014-01-17 {    
-  }
-
-    container cont_m2 {
-        leaf lf1_m2 {
-            type string;
-        }
-            uses confB_gr;
-    }
-        
-    grouping confB_gr {
-            container contB_m2 {
-            }
-        }
-      
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/identityref/identity-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/identityref/identity-module.yang
deleted file mode 100644 (file)
index 30890bf..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module identity-module {
-  namespace "identity:module";  
-
-  prefix "idemod";
-  revision 2013-12-2 {    
-  }
-  
-       identity iden {         
-       }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/identityref/identityref-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/identityref/identityref-module.yang
deleted file mode 100644 (file)
index 20f91b2..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-module identityref-module {
-  namespace "identityref:module";  
-
-  prefix "iderefmod";
-  
-  import identity-module {prefix idemo; revision-date 2013-12-2;}
-   
-  revision 2013-12-2 {    
-  }
-  
-       container cont {
-          container cont1 {
-               leaf lf1 {
-                       type identityref {
-                               base "idemo:iden";
-                       }
-               }
-               }
-       }
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/invalid-top-level-element/invalid-top-level-element.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/invalid-top-level-element/invalid-top-level-element.yang
deleted file mode 100644 (file)
index a9df486..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-module invalid-top-level-element {
-  namespace "invalid:top:level:element";  
-
-  prefix "intoleel";
-   revision 2013-12-17 {    
-  }
-  
-
-    leaf lf {
-        type string;
-    }
-
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/cont-augment-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/cont-augment-module.yang
deleted file mode 100644 (file)
index 528eb5e..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-module cont-augment-module {
-  namespace "cont:augment:module";
-
-  prefix "cntaugmod";
-
-  import main-module {prefix mamo; revision-date 2013-12-2;}
-
-  revision 2013-12-2 {
-
-  }
-
-  augment "/mamo:cont" {
-       leaf-list lflst1 {
-               type leafref {
-                       path "../mamo:lf1";
-               }
-       }
-
-       leaf lf4 {
-               type leafref {
-                       path "../mamo:lf1";
-               }
-       }
-
-       /* reference to not leaf element */
-       leaf lf6 {
-               type leafref {
-                       path "../lflst1";
-               }
-       }
-
-       leaf lf7 {
-               type leafref {
-                       path "../lf4";
-               }
-       }
-  }
-  
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/main-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/main-module.yang
deleted file mode 100644 (file)
index 1641aaa..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-module main-module {
-    namespace "main:module";
-
-    prefix "mainmod";
-    revision 2013-12-2 {
-    }
-
-    container cont {
-        leaf lf1 {
-           /*
-            *FIX ME
-            * If is this leaf lf1 called from cont-augment-module.yang 
-            * from lf4, type that will be returned to the lf1 is string.
-            * Than there are failing tests because of we have string, 
-            * do not number(uint32) 
-            */
-//            type uint32;
-            type string;
-        }
-
-        container cont1 {
-            leaf lf11 {
-               /*
-                * FIX ME TOO WITH BAD PARSING
-                */
-//             type boolean;
-                type string;
-            }
-        }
-
-        leaf lf2 {
-            type leafref {
-                path "../lf1";
-            }
-        }
-
-        leaf lf3 {
-            type leafref {
-                path "/cont/cont1/lf11";
-            }
-        }
-
-        /* reference to nonexisting leaf */
-        leaf lf5 {
-            type leafref {
-                path "/cont/lf";
-            }
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_absolut_ref_to_existing_leaf.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_absolut_ref_to_existing_leaf.xml
deleted file mode 100644 (file)
index bd5b6a2..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<cont xmlns="main:module"
-      xmlns:cont-augment-module="cont:augment:module">
-    <cont1>
-        <lf11>true</lf11>
-    </cont1>
-    <lf3>true</lf3>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_from_leafref_to_leafref.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_from_leafref_to_leafref.xml
deleted file mode 100644 (file)
index 7b1c277..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<cont xmlns="main:module"
-      xmlns:cont-augment-module="cont:augment:module">
-    <cont-augment-module:lf7>200</cont-augment-module:lf7>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_ref_to_non_existing_leaf.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_ref_to_non_existing_leaf.xml
deleted file mode 100644 (file)
index cdbd56b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<cont xmlns="main:module"
-      xmlns:cont-augment-module="cont:augment:module">
-    <lf5>137</lf5>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_ref_to_not_leaf.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_ref_to_not_leaf.xml
deleted file mode 100644 (file)
index 953280b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<cont xmlns="main:module"
-      xmlns:cont-augment-module="cont:augment:module">
-    <cont-augment-module:lf6>44</cont-augment-module:lf6>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_relativ_ref_from_leaflist_to_existing_leaf.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_relativ_ref_from_leaflist_to_existing_leaf.xml
deleted file mode 100644 (file)
index 8fe0ac4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<cont xmlns="main:module"
-      xmlns:cont-augment-module="cont:augment:module">
-      <cont-augment-module:lflst1>345</cont-augment-module:lflst1>
-      <cont-augment-module:lflst1>346</cont-augment-module:lflst1>
-      <cont-augment-module:lflst1>347</cont-augment-module:lflst1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_relativ_ref_to_existing_leaf.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/leafref/xml/data_relativ_ref_to_existing_leaf.xml
deleted file mode 100644 (file)
index 14a2544..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont xmlns="main:module"
-      xmlns:cont-augment-module="cont:augment:module">
-    <lf1>121</lf1>
-    <lf2>121</lf2>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/list/list-types-module b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/list/list-types-module
deleted file mode 100644 (file)
index 9bdea81..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
-module simple-data-types {
-  namespace "simple:data:types";  
-
-  prefix "smpdtp";
-  revision 2013-11-12 {    
-  }
-  
-  identity iden {
-  }
-  
-  typedef tpdfempty {
-       type empty;
-  }
-  
-  typedef tpdfbit {
-       type bits {
-               bit b1;
-               bit b2;
-               bit b3;
-       }
-  }
-  
-  typedef tpdfun4 {
-       type boolean;
-  }
-  
-  typedef tpdfun3 {
-       type union {
-               type tpdfbit;
-               type tpdfempty;
-       }
-  }  
-  
-  typedef tpdfun2 {
-       type union {
-               type tpdfun3;
-               type tpdfun4;
-       }
-  }
-  
-  typedef tpdfun1 {
-       type union {
-               type uint8;
-               type decimal64 {
-                       fraction-digits 2;
-               }
-       }
-  }
-  
-  container cont {
-         leaf lfnint8Min {
-               type int8; 
-         }
-         leaf lfnint8Max {
-               type int8; 
-         }
-         leaf lfnint16Min {
-               type int16; 
-         }
-         leaf lfnint16Max {
-               type int16; 
-         }
-         leaf lfnint32Min {
-               type int32; 
-         }
-         leaf lfnint32Max {
-               type int32; 
-         }
-         leaf lfnint64Min {
-               type int64; 
-         }
-         leaf lfnint64Max {
-               type int64; 
-         }
-         
-         leaf lfnuint8Max {
-               type uint8; 
-         }
-         leaf lfnuint16Max {
-               type uint16; 
-         }
-         leaf lfnuint32Max {
-               type uint32; 
-         }
-         leaf lfuint64Max {
-               type uint64; 
-         }
-         leaf lfstr {
-               type string;
-         }       
-         leaf lfstr1 {
-               type string;
-         }       
-         leaf lfbool1 {
-               type boolean;
-         }       
-         leaf lfbool2 {
-               type boolean;
-         }       
-         leaf lfbool3 {
-               type boolean;
-         }       
-         leaf lfdecimal1 {
-               type decimal64 {
-                       fraction-digits 2;
-               }       
-         }       
-         leaf lfdecimal2 {
-               type decimal64 {
-                       fraction-digits 2;
-               }       
-         }       
-         leaf lfdecimal3 {
-               type decimal64 {
-                       fraction-digits 2;
-               }       
-         }      
-          
-         leaf lfdecimal4 {
-               type decimal64 {
-                       fraction-digits 2;
-               }       
-         }
-                 
-         
-         leaf lfdecimal6 {
-               type decimal64 {
-                       fraction-digits 2;
-               }       
-         }       
-
-    leaf lfenum {
-      type enumeration {
-        enum enum1;
-        enum enum2;
-        enum enum3;
-        enum enum4;
-      }
-    }
-
-    leaf lfbits {
-      type bits {
-        bit bit1;
-        bit bit2;
-        bit bit3;
-        bit bit4;
-      }
-    }  
-    
-    leaf lfbinary {
-       type binary;
-    }  
-    
-    leaf lfref1 {                  //reference to string type
-       type leafref {
-               path "../lfstr";
-       }
-    }
-    
-    leaf lfref2 {                  //reference to number type
-       type leafref {
-               path "../lfnint8Max";
-       }
-    }
-    
-    leaf lfempty {
-       type empty;
-    }
-    
-    leaf lfunion1 {
-       type union {
-               type uint16;
-               type string;
-       }
-    }
-    leaf lfunion2 {
-       type union {
-               type decimal64 {
-                               fraction-digits 2;              
-               }
-               type string;
-       }
-    }
-    
-    leaf lfunion3 {
-       type union {
-               type empty;
-               type string;
-       }
-    }
-    
-    leaf lfunion4 {
-       type union {
-               type boolean;
-               type string;
-       }
-    }
-    
-    leaf lfunion5 {
-       type union {
-               type uint16;
-               type string;
-       }
-    }
-    
-    leaf lfunion6 {
-       type union {
-               type uint16;
-               type empty;
-       }
-    }
-    
-    leaf lfunion7 {
-               type tpdfun3;
-    }
-    
-    leaf lfunion8 {
-       type union {
-               type uint16;
-               type string;
-       }
-    }
-    
-    leaf lfunion9 {
-       type union {
-               type uint16;
-               type boolean;                   
-       }
-    }
-    
-    leaf lfunion10 {
-       type union {
-               type bits {
-                       bit bt1;
-                       bit bt2;
-               }
-               type boolean;                   
-       }
-    }
-    
-    leaf lfunion11 {
-               type union {
-                       type tpdfun1;
-                       type tpdfun2;
-               }
-    }
-    
-    leaf lfunion12 {
-               type tpdfun2;
-    }
-    
-    leaf lfunion13 {
-        type tpdfbit;    
-    }
-        
-    leaf lfunion14 {
-        type union {
-            type enumeration {
-                enum zero;
-                enum one;
-            }
-            type uint16;
-        }    
-    }    
-    
-    leaf identityref1 {
-        type identityref {
-            base iden;
-        }
-    }
-         
-         
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-data-types/simple-data-types.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-data-types/simple-data-types.yang
deleted file mode 100644 (file)
index cf6e513..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-module simple-data-types {
-  namespace "simple:data:types";  
-
-  prefix "smpdtp";
-  revision 2013-11-12 {    
-  }
-  
-  identity iden {
-  }
-  
-  typedef tpdfempty {
-       type empty;
-  }
-  
-  typedef tpdfbit {
-       type bits {
-               bit b1;
-               bit b2;
-               bit b3;
-       }
-  }
-  
-  typedef tpdfun4 {
-       type boolean;
-  }
-  
-  typedef tpdfun3 {
-       type union {
-               type tpdfbit;
-               type tpdfempty;
-       }
-  }  
-  
-  typedef tpdfun2 {
-       type union {
-               type tpdfun3;
-               type tpdfun4;
-       }
-  }
-  
-  typedef tpdfun1 {
-       type union {
-               type uint8;
-               type decimal64 {
-                       fraction-digits 2;
-               }
-       }
-  }
-  
-  container cont {
-         leaf lfnint8Min {
-               type int8; 
-         }
-         leaf lfnint8Max {
-               type int8; 
-         }
-         leaf lfnint16Min {
-               type int16; 
-         }
-         leaf lfnint16Max {
-               type int16; 
-         }
-         leaf lfnint32Min {
-               type int32; 
-         }
-         leaf lfnint32Max {
-               type int32; 
-         }
-         leaf lfnint64Min {
-               type int64; 
-         }
-         leaf lfnint64Max {
-               type int64; 
-         }
-         
-         leaf lfnuint8Max {
-               type uint8; 
-         }
-         leaf lfnuint16Max {
-               type uint16; 
-         }
-         leaf lfnuint32Max {
-               type uint32; 
-         }
-         leaf lfuint64Max {
-               type uint64; 
-         }
-         leaf lfstr {
-               type string;
-         }       
-         leaf lfstr1 {
-               type string;
-         }       
-         leaf lfbool1 {
-               type boolean;
-         }       
-         leaf lfbool2 {
-               type boolean;
-         }       
-         leaf lfbool3 {
-               type boolean;
-         }       
-         leaf lfdecimal1 {
-               type decimal64 {
-                       fraction-digits 2;
-               }       
-         }       
-         leaf lfdecimal2 {
-               type decimal64 {
-                       fraction-digits 2;
-               }       
-         }       
-         leaf lfdecimal3 {
-               type decimal64 {
-                       fraction-digits 2;
-               }       
-         }      
-          
-         leaf lfdecimal4 {
-               type decimal64 {
-                       fraction-digits 2;
-               }       
-         }
-                 
-         
-         leaf lfdecimal6 {
-               type decimal64 {
-                       fraction-digits 2;
-               }       
-         }       
-
-    leaf lfenum {
-      type enumeration {
-        enum enum1;
-        enum enum2;
-        enum enum3;
-        enum enum4;
-      }
-    }
-
-    leaf lfbits {
-      type bits {
-        bit bit1;
-        bit bit2;
-        bit bit3;
-        bit bit4;
-      }
-    }  
-    
-    leaf lfbinary {
-       type binary;
-    }  
-    
-    leaf lfref1 {                  //reference to string type
-       type leafref {
-               path "../lfstr";
-       }
-    }
-    
-    leaf lfref2 {                  //reference to number type
-       type leafref {
-               path "../lfnint8Max";
-       }
-    }
-    
-    leaf lfempty {
-       type empty;
-    }
-    
-    leaf lfunion1 {
-       type union {
-               type uint16;
-               type string;
-       }
-    }
-    leaf lfunion2 {
-       type union {
-               type decimal64 {
-                               fraction-digits 2;              
-               }
-               type string;
-       }
-    }
-    
-    leaf lfunion3 {
-       type union {
-               type empty;
-               type string;
-       }
-    }
-    
-    leaf lfunion4 {
-       type union {
-               type boolean;
-               type string;
-       }
-    }
-    
-    leaf lfunion5 {
-       type union {
-               type uint16;
-               type string;
-       }
-    }
-    
-    leaf lfunion6 {
-       type union {
-               type uint16;
-               type empty;
-       }
-    }
-    
-    leaf lfunion7 {
-               type tpdfun3;
-    }
-    
-    leaf lfunion8 {
-       type union {
-               type uint16;
-               type string;
-       }
-    }
-    
-    leaf lfunion9 {
-       type union {
-               type uint16;
-               type boolean;                   
-       }
-    }
-    
-    leaf lfunion10 {
-       type union {
-               type bits {
-                       bit bt1;
-                       bit bt2;
-               }
-               type boolean;                   
-       }
-    }
-    
-    leaf lfunion11 {
-               type union {
-                       type tpdfun1;
-                       type tpdfun2;
-               }
-    }
-    
-    leaf lfunion12 {
-               type tpdfun2;
-    }
-    
-    leaf lfunion13 {
-        type tpdfbit;    
-    }
-        
-    leaf lfunion14 {
-        type union {
-            type enumeration {
-                enum zero;
-                enum one;
-            }
-            type uint16;
-        }    
-    }    
-    
-    leaf identityref1 {
-        type identityref {
-            base iden;
-        }
-    }
-         
-       anyxml complex-any;
-       
-       anyxml simple-any;
-       
-       anyxml empty-any;
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-data-types/xml/bad-data.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-data-types/xml/bad-data.xml
deleted file mode 100644 (file)
index 31dfad1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<cont xmlns= "simple:data:types">
-    <lfnint8Min>invalid</lfnint8Min>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-data-types/xml/data.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-data-types/xml/data.xml
deleted file mode 100644 (file)
index 86043d7..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-<cont xmlns="simple:data:types">
-    <lfnint8Min>-128</lfnint8Min>
-    <lfnint8Max>127</lfnint8Max>
-    <lfnint16Min>-32768</lfnint16Min>
-    <lfnint16Max>32767</lfnint16Max>
-    <lfnint32Min>-2147483648</lfnint32Min>
-    <lfnint32Max>2147483647</lfnint32Max>
-    <lfnint64Min>-9223372036854775808</lfnint64Min>
-    <lfnint64Max>9223372036854775807</lfnint64Max>
-    <lfnuint8Max>255</lfnuint8Max>
-    <lfnuint16Max>65535</lfnuint16Max>
-    <lfnuint32Max>4294967295</lfnuint32Max>
-    <lfstr>lfstr</lfstr>
-    <lfstr1></lfstr1>
-    <lfbool1>true</lfbool1>
-    <lfbool2>false</lfbool2>
-    <lfbool3>bla</lfbool3>
-    <lfdecimal1>43.32</lfdecimal1>
-    <lfdecimal2>-0.43</lfdecimal2>
-    <lfdecimal3>43</lfdecimal3>
-    <lfdecimal4>43E3</lfdecimal4>
-    <lfdecimal6>33.12345</lfdecimal6>
-    <lfenum>enum3</lfenum>
-    <lfbits>bit3 bit2</lfbits>
-    <lfbinary>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</lfbinary>
-    <lfunion1>324</lfunion1>
-    <lfunion2>33.3</lfunion2>
-    <lfunion3>55</lfunion3>
-    <lfunion4>true</lfunion4>
-    <lfunion5>true</lfunion5>
-    <lfunion6>10</lfunion6>
-    <lfunion7></lfunion7>
-    <lfunion8></lfunion8>
-    <lfunion9></lfunion9>
-    <lfunion10>bt1</lfunion10>
-    <lfunion11>33</lfunion11>
-    <lfunion12>false</lfunion12>
-    <lfunion13>b1</lfunion13>
-    <lfunion14>zero</lfunion14>
-    <lfempty></lfempty>
-    <identityref1 xmlns:x="simple:data:types">x:iden</identityref1>
-    <complex-any>
-      <data>
-        <leaf1>leaf1-value</leaf1>
-        <leaf2>leaf2-value</leaf2>
-
-        <leaf-list>leaf-list-value1</leaf-list>
-        <leaf-list>leaf-list-value2</leaf-list>
-
-        <list>
-            <nested-list>
-                <nested-leaf>nested-value1</nested-leaf>
-            </nested-list>
-            <nested-list>
-                <nested-leaf>nested-value2</nested-leaf>
-            </nested-list>
-        </list>
-
-         <list>
-            <nested-list>
-                <nested-leaf>nested-value3</nested-leaf>
-            </nested-list>
-            <nested-list>
-                <nested-leaf>nested-value4</nested-leaf>
-            </nested-list>
-        </list>
-      </data>
-    </complex-any>
-    <simple-any>simple</simple-any>
-    <empty-any></empty-any>
-</cont>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/simple-yang-types.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/simple-yang-types.yang
deleted file mode 100644 (file)
index fdb3bfb..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-module simple-yang-types {
-  namespace "simple:yang:types";  
-
-  prefix "smptp";
-   revision 2013-11-5 {
-    description  "Initial revision.";
-  }
-  
-  container cont1 {
-         leaf lf11 {
-               type string;
-         }
-         leaf-list lflst11 {
-               type int32;
-         }
-         leaf-list lflst12 {
-               type string;
-         }
-         list lst11 {
-               key "lf111";
-               leaf lf111 {
-                       type uint8;
-               }
-               leaf lf112 {
-                       type string;
-               }               
-               container cont111 {
-                       leaf lf1111 {
-                               type string;
-                       }
-                       leaf-list lflst1111 {
-                               type int32;
-                       }
-                       list lst1111 {
-                               leaf lf1111A {
-                                       type string;
-                               }
-                               leaf lf1111B {
-                                       type uint8;
-                               }
-                       }
-               }
-               list lst111 {
-                       leaf lf1111 {
-                               type int32;
-                       }
-               }
-               list lst112 {
-                       leaf lf1121 {
-                               type string;
-                       }
-               }               
-         }
-         
-  }
-
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/xml/awaited_output_data.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/xml/awaited_output_data.json
deleted file mode 100644 (file)
index 8888e7f..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    "cont1": {
-        "lf11":"lf",
-        "lflst11": [55,56,57],
-        "lflst12": ["lflst12 str1", "lflst12 str2", "lflst12 str3"],
-        "lst11": [
-            {
-                "lf111":140,
-                "lf112":"lf112 str",
-                "cont111": {
-                    "lf1111":"lf1111 str",
-                    "lflst1111": [2048, 1024, 4096],
-                    "lst1111": [
-                    {
-                        "lf1111A": "lf1111A str11",
-                        "lf1111B": 4
-                    },
-                    {
-                        "lf1111A": "lf1111A str12",
-                        "lf1111B": 7
-                    }
-                    ]
-                },
-                "lst111" : [
-                {
-                       "lf1111" : 65
-                       }
-                       ],
-                       "lst112" : [
-                       {
-                       "lf1121" : "lf1121 str11"
-                       }
-                       ]
-                
-            },
-            {
-                "lf111":141,
-                "lf112":"lf112 str2",
-                "cont111": {
-                    "lf1111":"lf1111 str2",
-                    "lflst1111": [2049, 1025, 4097],
-                    "lst1111": [
-                    {
-                        "lf1111A": "lf1111A str21",
-                        "lf1111B": 5
-                    },
-                    {
-                        "lf1111A": "lf1111A str22",
-                        "lf1111B": 8
-                    }
-                    ]
-                },
-                "lst111" : [
-                {
-                       "lf1111" : 55
-                       },
-                {
-                       "lf1111" : 56
-                       }
-                       ],
-                       "lst112" : [
-                       {
-                       "lf1121" : "lf1121 str21"
-                       },
-                       {
-                       "lf1121" : "lf1121 str22"
-                       }
-                       ]
-            }
-         ]
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/xml/awaited_output_empty_data.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/xml/awaited_output_empty_data.json
deleted file mode 100644 (file)
index 4b19988..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-    "cont1": {
-        "lst11": [
-            {
-                "lf111": 1,
-                "lst111": [
-                    {
-                        "lf1111": 34
-                    },
-                    {
-                        "lf1111": 35
-                    },
-                    {},
-                    {}
-                ],
-                "cont111": {}
-            },
-            {
-                "lf111": 2,
-                "cont111": {
-                    "lflst1111": [
-                        1024,
-                        4096
-                    ],
-                    "lst1111": [
-                        {
-                            "lf1111B": 4
-                        },
-                        {
-                            "lf1111A": "lf1111A str12"
-                        }
-                    ]
-                },
-                "lst112": [
-                    {}
-                ]
-            },
-            {
-                "lf111": 3,
-                "cont111": {
-                    "lst1111": [
-                        {},
-                        {}
-                    ]
-                }
-            }
-        ]
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/xml/data.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/xml/data.xml
deleted file mode 100644 (file)
index 1df9ca5..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-<cont1 xmlns="simple:yang:types">
-    <lf11>lf</lf11>
-    <lflst11>56</lflst11>
-    <lflst11>55</lflst11>
-    <lflst11>57</lflst11>
-    <lflst12>lflst12 str3</lflst12>
-    <lst11>
-        <lst112>
-            <lf1121>lf1121 str22</lf1121>
-        </lst112>
-        <lf111>141</lf111>
-        <lf112>lf112 str2</lf112>
-        <lst111>
-            <lf1111>55</lf1111>
-        </lst111>
-        <cont111>
-            <lflst1111>4097</lflst1111>
-            <lflst1111>2049</lflst1111>
-            <lflst1111>1025</lflst1111>
-            <lst1111>
-                <lf1111A>lf1111A str22</lf1111A>
-                <lf1111B>8</lf1111B>
-            </lst1111>
-            <lf1111>lf1111 str2</lf1111>
-            <lst1111>
-                <lf1111B>5</lf1111B>
-                <lf1111A>lf1111A str21</lf1111A>
-            </lst1111>
-        </cont111>
-        <lst111>
-            <lf1111>56</lf1111>
-        </lst111>
-        <lst112>
-            <lf1121>lf1121 str21</lf1121>
-        </lst112>
-    </lst11>
-    <lflst12>lflst12 str1</lflst12>
-    <lst11>
-        <lf111>140</lf111>
-        <lf112>lf112 str</lf112>
-        <cont111>
-            <lf1111>lf1111 str</lf1111>
-            <lflst1111>2048</lflst1111>
-            <lflst1111>1024</lflst1111>
-            <lflst1111>4096</lflst1111>
-            <lst1111>
-                <lf1111A>lf1111A str11</lf1111A>
-                <lf1111B>4</lf1111B>
-            </lst1111>
-            <lst1111>
-                <lf1111A>lf1111A str12</lf1111A>
-                <lf1111B>7</lf1111B>
-            </lst1111>
-        </cont111>
-        <lst111>
-            <lf1111>65</lf1111>
-        </lst111>
-        <lst112>
-            <lf1121>lf1121 str11</lf1121>
-        </lst112>
-    </lst11>
-    <lflst12>lflst12 str2</lflst12>
-</cont1>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/xml/empty_data.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-json/simple-yang-types/xml/empty_data.xml
deleted file mode 100644 (file)
index 9cd503e..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<cont1>
-    <lst11>
-        <lf111>1</lf111>
-        <lst111></lst111>
-        <lst111></lst111>
-        <lst111>
-            <lf1111></lf1111>
-        </lst111>
-        <lst111>
-            <lf1111>35</lf1111>
-        </lst111>
-        <cont111></cont111>
-    </lst11>
-    <lst11>
-        <lf111>2</lf111>
-        <cont111>
-            <lf1111></lf1111>
-            <lflst1111></lflst1111>
-            <lflst1111>1024</lflst1111>
-            <lflst1111>4096</lflst1111>
-            <lst1111>
-                <lf1111B>4</lf1111B>
-            </lst1111>
-            <lst1111>
-                <lf1111A>lf1111A str12</lf1111A>
-            </lst1111>
-        </cont111>
-        <lst112></lst112>
-    </lst11>
-    <lst11>
-        <lf111>3</lf111>
-        <cont111>
-            <lf1111></lf1111>
-            <lflst1111></lflst1111>
-            <lflst1111></lflst1111>
-            <lst1111></lst1111>
-            <lst1111></lst1111>
-        </cont111>
-    </lst11>
-</cont1>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/choice/module-with-choice.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/choice/module-with-choice.yang
deleted file mode 100644 (file)
index 8454784..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-module module-with-choice {
-  namespace "module:with:choice";  
-
-  prefix "mowicho";
-  
-  revision 2013-12-18 {    
-  }
-  
-
-  container cont {
-    choice choA {
-        case caA1 {
-            leaf lf1 {
-                type string;
-            }
-        }
-        case caA2 {
-            leaf lf2 {
-                type string;
-            }
-        } 
-    }
-  }    
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/data-of-several-modules/yang/module1.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/data-of-several-modules/yang/module1.yang
deleted file mode 100644 (file)
index 72a82ca..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module module1 {
-  namespace "module:one";  
-
-  prefix "m1";
-  revision 2014-01-17 {    
-  }
-
-    container cont_m1 {
-        leaf lf1_m1 {
-            type string;
-        }
-        uses confB_gr;
-    }
-    
-    grouping confB_gr {
-        container contB_m1 {
-        }
-    }
-  
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/data-of-several-modules/yang/module2.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/data-of-several-modules/yang/module2.yang
deleted file mode 100644 (file)
index 521d9c0..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module module2 {
-  namespace "module:two";  
-
-  prefix "m2";
-  revision 2014-01-17 {    
-  }
-
-    container cont_m2 {
-        leaf lf1_m2 {
-            type string;
-        }
-            uses confB_gr;
-    }
-        
-    grouping confB_gr {
-            container contB_m2 {
-            }
-        }
-      
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/instance_identifier/aug-referenced-elements-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/instance_identifier/aug-referenced-elements-module.yang
deleted file mode 100644 (file)
index 1b861f5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-module aug-referenced-elements-module {
-  namespace "aug:referenced:elements:module";  
-
-  prefix "augrefelmo";
-  
-  import referenced-elements-module {prefix refelmo; revision-date 2013-12-3;}
-   
-  revision 2013-12-3 {    
-  }
-  
-  augment "/refelmo:cont" {
-    leaf lf2 {
-        type boolean;
-    }
-  }
-  
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/instance_identifier/eferenced-elements-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/instance_identifier/eferenced-elements-module.yang
deleted file mode 100644 (file)
index fd6e0fb..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module referenced-elements-module {
-  namespace "referenced:elements:module";  
-
-  prefix "refelmo";
-   
-  revision 2013-12-3 {    
-  }
-  
-       container cont {
-               leaf lf1 {
-                       type string;                            
-                       }
-               }
-               leaf-list lflst1 {
-                       type uint32;
-               }
-               
-       }
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/instance_identifier/rinstance-identifier-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/instance_identifier/rinstance-identifier-module.yang
deleted file mode 100644 (file)
index 61ce822..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-module instance-identifier-module {
-  namespace "instance:identifier:module";  
-
-  prefix "inidmod";
-   
-  revision 2013-12-3 {    
-  }
-  
-       container cont {
-               leaf lf1 {
-                       type instance-identifier {                              
-                       }
-               }
-       }
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/yang/basic-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/yang/basic-module.yang
deleted file mode 100644 (file)
index 9c61d47..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-module basic-module {
-    namespace "basic:module";
-
-    prefix "basmod";
-
-    import referenced-module {prefix refmo; revision-date 2013-12-2;}
-
-    revision 2013-12-2 {
-    }
-
-    container cont {
-        container cont1 {
-            leaf lf11 {
-                type identityref {
-                    base "refmo:iden";
-                }
-            }
-        }
-        leaf lfStr {
-            type string;
-        }
-        leaf lfInt8 {
-            type int8;
-        }
-
-        leaf lfInt16 {
-            type int16;
-        }
-
-        leaf lfInt32 {
-            type int32;
-        }
-
-        leaf lfInt64 {
-            type int64;
-        }
-
-        leaf lfUint8 {
-            type uint8;
-        }
-
-        leaf lfUint16 {
-            type uint16;
-        }
-
-        leaf lfUint32 {
-            type uint32;
-        }
-
-        leaf lfUint64 {
-            type uint64;
-        }
-
-        leaf lfBinary {
-            type binary;
-        }
-
-        leaf lfBits {
-            type bits {
-                bit one;
-                bit two;
-                bit three;
-            }
-        }
-
-        leaf lfEnumeration {
-            type enumeration {
-                enum enum1;
-                enum enum2;
-                enum enum3;
-            }
-        }
-
-        leaf lfEmpty {
-            type empty;
-        }
-
-        leaf lfBoolean {
-            type boolean;
-        }
-
-        leaf lfUnion {
-            type union {
-                type int8;
-                type string;
-                type bits {
-                    bit first;
-                    bit second;
-                }
-                type boolean;
-            }
-        }
-
-        leaf lfLfref {
-            type leafref {
-                path "/cont/lfBoolean";
-            }
-        }
-
-        leaf lfInIdentifier {
-            type instance-identifier;
-        }
-
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/yang/referenced-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/nn-to-xml/yang/referenced-module.yang
deleted file mode 100644 (file)
index 9821b1e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module referenced-module {
-  namespace "referenced:module";  
-
-  prefix "refmod";
-  revision 2013-12-2 {    
-  }
-  
-       identity iden {         
-       }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/normalize-node/yang/normalize-node-module b/opendaylight/md-sal/sal-rest-connector/src/test/resources/normalize-node/yang/normalize-node-module
deleted file mode 100644 (file)
index 15e68ef..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-module normalize-node-module {
-  namespace "normalize:node:module";  
-
-  prefix "nonomo";
-  revision 2014-01-09 {    
-  }
-
-    container cont {
-        leaf lf1 {
-            type int32;
-        }
-    }
-  
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces.json
deleted file mode 100644 (file)
index 0b39dc7..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-    "interface":[
-        {
-            "name":"eth0",
-            "type":"ethernetCsmacd",
-            "enabled":false,
-            "description": "some interface"
-        }
-    ]
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces.xml
deleted file mode 100644 (file)
index 19569b5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<interface xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
-  <name>eth0</name>
-  <type>ethernetCsmacd</type>
-  <enabled>false</enabled>
-  <description>some interface</description>
-</interface>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces2.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces2.xml
deleted file mode 100644 (file)
index b4bdec8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<class xmlns="test:module">
-    <name>xxx</name>
-    <address>bbb</address>
-    <email>ccc</email>
-</class>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces_absolute_path.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces_absolute_path.json
deleted file mode 100644 (file)
index 7de7fac..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    "ietf-interfaces:interfaces":{
-        "interface":[
-            {
-                "name":"eth0",
-                "type":"ethernetCsmacd",
-                "enabled":false,
-                "description": "some interface"
-            }
-        ]
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces_absolute_path.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces_absolute_path.xml
deleted file mode 100644 (file)
index 313f32d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" >
-    <interface>
-      <name>eth0</name>
-      <type>ethernetCsmacd</type>
-      <enabled>false</enabled>
-      <description>some interface</description>
-    </interface>
-</interfaces>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces_absolute_path2.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces_absolute_path2.xml
deleted file mode 100644 (file)
index 77cb026..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-<interface xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
-    <name>eth0</name>
-    <type>ethernetCsmacd</type>
-    <enabled>false</enabled>
-    <description>some interface</description>
-</interface>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces_interface_absolute_path.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/parts/ietf-interfaces_interfaces_interface_absolute_path.xml
deleted file mode 100644 (file)
index 19569b5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<interface xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
-  <name>eth0</name>
-  <type>ethernetCsmacd</type>
-  <enabled>false</enabled>
-  <description>some interface</description>
-</interface>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/test-mount-point/yang/test-interface.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/test-mount-point/yang/test-interface.yang
deleted file mode 100644 (file)
index 7502f85..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-module mount-interface {
-    yang-version 1;
-    namespace "urn:ietf:params:xml:ns:yang:mount-interface";
-    prefix "sn";
-
-    description
-        "test file";   
-
-    revision "2014-07-01" {
-        description
-            "Initial revision";
-        reference "will be defined";
-    }
-    
-    container interfaces {
-        list interface {
-            key "name";
-         
-            leaf name {
-                type string;
-            }
-            leaf type {
-                type string;
-            }
-            leaf enabled {
-                type string;
-            }
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/test-mount-point/yang/test-interface2.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/test-mount-point/yang/test-interface2.yang
deleted file mode 100644 (file)
index 086d682..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-module mount-interface2 {
-    yang-version 1;
-    namespace "urn:ietf:params:xml:ns:yang:mount-interface2";
-    prefix "snn";
-
-    description
-        "test file";   
-
-    revision "2014-08-01" {
-        description
-            "Initial revision";
-        reference "will be defined";
-    }
-    
-    container class {
-        list student {
-            key "name";
-         
-            leaf name {
-                type string;
-            }
-            leaf age {
-                type string;
-            }
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/block-data.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/block-data.xml
deleted file mode 100644 (file)
index 625b04d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<block xmlns="urn:ietf:params:xml:ns:yang:test-interface">
-    <address>456</address>
-    <location>First</location>
-</block>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/data2.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/data2.xml
deleted file mode 100644 (file)
index 21712cb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<student xmlns="urn:ietf:params:xml:ns:yang:test-interface2">
-    <name>Vojtech</name>
-    <age>17</age>
-</student>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/test-interface.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/test-interface.xml
deleted file mode 100644 (file)
index 755c8a9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<interfaces xmlns="urn:ietf:params:xml:ns:yang:test-interface">
-    <interface>
-        <name>eth0</name>
-        <type>ethernetCsmacd</type>
-        <enabled>false</enabled>
-    </interface>
-</interfaces>
-
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/test-interface2.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/test-interface2.xml
deleted file mode 100644 (file)
index 05db4a5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<interface>
-    <name>eth0</name>
-    <type>ethernetCsmacd</type>
-    <enabled>false</enabled>
-</interface>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/test-interface3.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/xml/test-interface3.xml
deleted file mode 100644 (file)
index e59ba17..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<class xmlns="urn:ietf:params:xml:ns:yang:test-interface2">
-    <student>
-        <name>Thomas</name>
-        <age>23</age>
-    </student>
-</class>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/yang1/test-interface.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/yang1/test-interface.yang
deleted file mode 100644 (file)
index d0699e2..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-module test-interface {
-    yang-version 1;
-    namespace "urn:ietf:params:xml:ns:yang:test-interface";
-    prefix "sn";
-
-    description
-        "test file";   
-
-    revision "2014-07-01" {
-        description
-            "Initial revision";
-        reference "will be defined";
-    }
-    
-    container interfaces {
-    
-        container block {
-            
-            leaf address {
-                type string;
-            }
-            leaf location {
-                type string;
-            }
-        }
-    
-        list interface {
-            key "name";
-         
-            list sub-interface {
-                key "sub-name";
-                
-                leaf sub-name {
-                    type string;
-                }
-            }
-            
-            leaf name {
-                type string;
-            }
-            leaf type {
-                type string;
-            }
-            leaf enabled {
-                type string;
-            }
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/yang2/test-interface2.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/test-config-data/yang2/test-interface2.yang
deleted file mode 100644 (file)
index 13bc0eb..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-module test-interface2 {
-    yang-version 1;
-    namespace "urn:ietf:params:xml:ns:yang:test-interface2";
-    prefix "snn";
-
-    description
-        "test file";   
-
-    revision "2014-08-01" {
-        description
-            "Initial revision";
-        reference "will be defined";
-    }
-    
-    container class {
-        list student {
-            key "name";
-         
-            leaf name {
-                type string;
-            }
-            leaf age {
-                type string;
-            }
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/varioustest/xmldata.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/varioustest/xmldata.xml
deleted file mode 100644 (file)
index 5d45980..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont xmlns="generalnamespace">
-    <cont1>
-        <lf1 xmlns:prefix="prefix:name" xmlns:prefix2="prefix2:name">/prefix:somepath1/prefix2:somepath2</lf1>
-    </cont1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-container-yang/data-container.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-container-yang/data-container.yang
deleted file mode 100644 (file)
index b038eb1..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-module data-container-yang {
-  namespace "data:container:yang";  
-
-  prefix "dtconyg";
-       revision 2013-11-19 {    
-  }
-  
-  container cont {
-       leaf lf1 {
-               type string;
-       }
-       
-       leaf lf2 {
-               type string;
-       }
-       
-       leaf lf3 {
-               type empty;
-       }
-       
-       leaf-list lflst1 {
-               type string;
-       }
-       list lst1 {
-               leaf lf11 {
-                       type string;
-               } 
-       }
-       container cont1 {
-               leaf lf11 {
-                       type uint8;
-               }
-       }
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-container.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-container.xml
deleted file mode 100644 (file)
index 841d351..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<cont>
-    <lf1>str0</lf1>
-    <lf2></lf2>
-    <lf3/>
-    <lflst1>121</lflst1>
-    <lflst1>131</lflst1>
-    <lflst1>str1</lflst1>
-    <lst1>
-        <lf11>str2</lf11>
-    </lst1>
-    <cont1>
-        <lf11>100</lf11>
-    </cont1>
-</cont>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-list-yang/data-container.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-list-yang/data-container.yang
deleted file mode 100644 (file)
index 3df3413..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-module data-container-yang {
-  namespace "data:container:yang";  
-
-  prefix "dtconyg";
-  revision 2013-11-19 {    
-  }
-  
-  container cont {     
-         list lst1 {
-               leaf lf11 {
-                       type string;
-               }
-               leaf-list lflst11 {
-                       type string;
-               }
-               list lst11 {
-                       leaf lf111 {
-                               type string;
-                       } 
-               }
-               container cont11 {
-                       leaf lf111 {
-                               type uint8;
-                       }
-               }
-         }  
-  }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-list-yang/data-list.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-list-yang/data-list.yang
deleted file mode 100644 (file)
index 47e2a45..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-module data-list-yang {
-  namespace "data:list:yang"; 
-  
-  prefix "dtlstyg";
-
-  import data-container-yang {
-       prefix "dtconyg";
-       revision-date 2013-11-19;
-  }
-  
-  
-  revision 2013-11-19 {    
-  }
-       
-
-
-  augment "/dtconyg:cont" {
-       leaf lf1 {
-               type string;
-       }
-  }    
-}
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-list.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-list.xml
deleted file mode 100644 (file)
index 9c4256a..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<cont>
-    <lst1>
-        <lf11>str0</lf11>
-        <lflst11>121</lflst11>
-        <lflst11>131</lflst11>
-        <lflst11>str1</lflst11>
-        <lst11>
-            <lf111>str2</lf111>
-        </lst11>
-        <cont11>
-            <lf111>100</lf111>
-        </cont11>
-    </lst1>
-    <lst1>
-        <lflst11>221</lflst11>
-        <cont11>
-            <lf111>100</lf111>
-        </cont11>
-    </lst1>
-    <lf1>lf1</lf1>
-</cont>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-nmspc-in-attributes.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-nmspc-in-attributes.xml
deleted file mode 100644 (file)
index 848c020..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont xmlns:x="x:namespace" xmlns:y="y:namespace">
-    <cont1 xmlns:z="z:namespace" xmlns:a="a:namespace" xmlns:b="b:namespace">
-        <lf11 xmlns:c="identity:module">c:iden</lf11>
-    </cont1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-of-several-modules/yang/module1.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-of-several-modules/yang/module1.yang
deleted file mode 100644 (file)
index f6a81ae..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-module module1 {
-  namespace "module:one";  
-
-  prefix "m1";
-  revision 2014-01-17 {    
-  }
-
-    container cont_m1 {
-        leaf lf1_m1 {
-            type string;
-        }
-    }
-    container contB_m1 {
-    }
-  
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-of-several-modules/yang/module2.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/data-of-several-modules/yang/module2.yang
deleted file mode 100644 (file)
index bdd8ece..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-module module2 {
-  namespace "module:two";  
-
-  prefix "m2";
-  revision 2014-01-17 {    
-  }
-
-    container cont_m2 {
-        leaf lf1_m2 {
-            type string;
-        }
-    }
-    container contB_m2 {
-    }
-
-  
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/empty-data.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/empty-data.xml
deleted file mode 100644 (file)
index 7d62b9e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<cont>
-    <lf1></lf1>
-    <lflst1></lflst1>
-    <lflst1></lflst1>
-    <lst1>
-        <lf11></lf11>
-    </lst1>
-</cont>
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/identity-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/identity-module.yang
deleted file mode 100644 (file)
index 30890bf..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module identity-module {
-  namespace "identity:module";  
-
-  prefix "idemod";
-  revision 2013-12-2 {    
-  }
-  
-       identity iden {         
-       }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/identityref-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/identityref-module.yang
deleted file mode 100644 (file)
index a43d439..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-module identityref-module {
-  namespace "identityref:module";  
-
-  prefix "iderefmod";
-  
-  import identity-module {prefix idemo; revision-date 2013-12-2;}
-   
-  revision 2013-12-2 {    
-  }
-  
-       container cont {
-          container cont1 {
-               leaf lf11 {
-                       type identityref {
-                               base "idemo:iden";
-                       }
-               }
-               }
-       }
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-default-nmspc-in-element.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-default-nmspc-in-element.xml
deleted file mode 100644 (file)
index ebf7ac6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont xmlns="general:module" xmlns:x="x:namespace" xmlns:y="y:namespace">
-    <cont1 xmlns:z="z:namespace" xmlns:a="a:namespace" xmlns:b="b:namespace">
-        <lf11 xmlns="identityref:module" xmlns:c="c:namespace">iden</lf11>
-    </cont1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-default-nmspc-in-parrent-element.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-default-nmspc-in-parrent-element.xml
deleted file mode 100644 (file)
index 3fe1e4b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont xmlns:x="x:namespace" xmlns:y="y:namespace">
-    <cont1 xmlns="identityref:module" xmlns:z="z:namespace" xmlns:a="a:namespace" xmlns:b="b:namespace">
-        <lf11 xmlns:c="c:namespace">iden</lf11>
-    </cont1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-nmspc-in-element.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-nmspc-in-element.xml
deleted file mode 100644 (file)
index 76de72d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont xmlns="identityref:module" xmlns:x="x:namespace" xmlns:y="y:namespace">
-    <cont1 xmlns:z="z:namespace" xmlns:a="a:namespace" xmlns:b="b:namespace">
-        <lf11 xmlns:c="identity:module">c:iden</lf11>
-    </cont1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-nmspc-in-parrent-element.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-nmspc-in-parrent-element.xml
deleted file mode 100644 (file)
index 30a5418..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont xmlns="identityref:module" xmlns:x="x:namespace" xmlns:y="y:namespace">
-    <cont1 xmlns:c="identity:module" xmlns:z="z:namespace" xmlns:a="a:namespace" xmlns:b="b:namespace">
-        <lf11>z:iden</lf11>
-    </cont1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-no-nmspc-value-with-prefix.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-no-nmspc-value-with-prefix.xml
deleted file mode 100644 (file)
index 7d31fa7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont>
-    <cont1>
-        <lf11>x:iden</lf11>
-    </cont1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-no-nmspc-value-without-prefix.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/xml/data-no-nmspc-value-without-prefix.xml
deleted file mode 100644 (file)
index c65df1a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<cont>
-    <cont1>
-        <lf11>iden</lf11>
-    </cont1>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/yang-augments/general-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/yang-augments/general-module.yang
deleted file mode 100644 (file)
index f1a1ea6..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-module general-module {
-  namespace "general:module";  
-
-  prefix "genmod";
-  revision 2013-12-12 {    
-  }
-
-    container cont {
-       container cont1 {
-        }
-    }
-
-  
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/yang-augments/identity-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/yang-augments/identity-module.yang
deleted file mode 100644 (file)
index 30890bf..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module identity-module {
-  namespace "identity:module";  
-
-  prefix "idemod";
-  revision 2013-12-2 {    
-  }
-  
-       identity iden {         
-       }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/yang-augments/identityref-module.yang b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/identityref/yang-augments/identityref-module.yang
deleted file mode 100644 (file)
index 719ac12..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module identityref-module {
-  namespace "identityref:module";  
-
-  prefix "iderefmod";
-  
-  import identity-module {prefix idemo; revision-date 2013-12-2;}
-  import general-module {prefix gmo; revision-date 2013-12-12;}
-   
-  revision 2013-12-2 {    
-  }
-  
-       augment "/gmo:cont/gmo:cont1" {
-               leaf lf11 {
-                       type identityref {
-                               base "idemo:iden";
-                       }
-               }
-       }
-         
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/leafref/leafref-module b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/leafref/leafref-module
deleted file mode 100644 (file)
index 6fe770b..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-module leafref-module {
-  namespace "leafref:module";
-
-  prefix "lfrfmo";
-  revision 2013-11-18 {
-  }
-
-  identity base {}
-
-    container cont {
-        leaf lf1 {
-            type int32;
-        }
-        leaf lf2 {
-            type leafref {
-                path "/cont/lf1";
-            }
-        }
-
-        leaf lf-ident {
-            type identityref {
-                base "lfrfmo:base";
-            }
-        }
-
-        leaf lf-ident-ref {
-            type leafref {
-                path "/cont/lf-ident";
-            }
-        }
-
-        leaf lf-ident-ref-relative {
-            type leafref {
-                path "../lf-ident";
-            }
-        }
-
-        leaf lf-ident-ref-relative-cnd {
-            type leafref {
-                path "/lfrfmo:cont/lfrfmo:lis[lfrfmo:id='abc']/lf-ident-ref";
-            }
-        }
-
-
-        list lis {
-            key "id";
-
-            leaf id {
-                type string;
-            }
-
-            leaf lf-ident-ref {
-                type leafref {
-                    path "/cont/lf-ident";
-                }
-            }
-        }
-
-    }
-
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/leafref/xml/data.xml b/opendaylight/md-sal/sal-rest-connector/src/test/resources/xml-to-cnsn/leafref/xml/data.xml
deleted file mode 100644 (file)
index c3071e5..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<cont>
-    <lf1>121</lf1>
-    <lf2>121</lf2>
-    <lf-ident xmlns:a="leafref:module">a:base</lf-ident>
-    <lf-ident-ref xmlns:a="leafref:module">a:base</lf-ident-ref>
-    <lf-ident-ref-relative xmlns:a="leafref:module">a:base</lf-ident-ref-relative>
-    <lf-ident-ref-relative-cnd xmlns:a="leafref:module">a:base</lf-ident-ref-relative-cnd>
-</cont>
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen-maven/pom.xml b/opendaylight/md-sal/sal-rest-docgen-maven/pom.xml
deleted file mode 100644 (file)
index c7d0f69..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
- 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
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.opendaylight.controller</groupId>
-        <artifactId>sal-parent</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>sal-rest-docgen-maven</artifactId>
-    <packaging>jar</packaging>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>sal-rest-docgen</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-core</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>yang-maven-plugin-spi</artifactId>
-        </dependency>
-    </dependencies>
-</project>
diff --git a/opendaylight/md-sal/sal-rest-docgen-maven/src/main/java/org/opendaylight/controller/sal/rest/doc/maven/StaticDocGenerator.java b/opendaylight/md-sal/sal-rest-docgen-maven/src/main/java/org/opendaylight/controller/sal/rest/doc/maven/StaticDocGenerator.java
deleted file mode 100644 (file)
index 0007bd4..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.maven;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import javax.ws.rs.core.UriInfo;
-import org.apache.maven.project.MavenProject;
-import org.opendaylight.controller.sal.rest.doc.impl.ApiDocGenerator;
-import org.opendaylight.controller.sal.rest.doc.swagger.ApiDeclaration;
-import org.opendaylight.controller.sal.rest.doc.swagger.Resource;
-import org.opendaylight.controller.sal.rest.doc.swagger.ResourceList;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang2sources.spi.BasicCodeGenerator;
-import org.opendaylight.yangtools.yang2sources.spi.MavenProjectAware;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This class gathers all yang defined {@link Module}s and generates Swagger compliant documentation.
- */
-public class StaticDocGenerator extends ApiDocGenerator implements BasicCodeGenerator, MavenProjectAware {
-
-    private static final String DEFAULT_OUTPUT_BASE_DIR_PATH = "target" + File.separator + "generated-resources"
-        + File.separator + "swagger-api-documentation";
-
-    private static final Logger _logger = LoggerFactory.getLogger(ApiDocGenerator.class);
-
-    private MavenProject mavenProject;
-    private File projectBaseDir;
-    private Map<String, String> additionalConfig;
-    private File resourceBaseDir;
-
-    /**
-     *
-     * @param context
-     * @param outputDir
-     * @param yangModules
-     * @return
-     * @throws IOException
-     */
-    @Override
-    public Collection<File> generateSources(final SchemaContext context, final File outputDir, final Set<Module> yangModules) throws IOException {
-        List<File> result = new ArrayList<>();
-
-        // Create Base Directory
-        final File outputBaseDir;
-        if (outputDir == null) {
-            outputBaseDir = new File(DEFAULT_OUTPUT_BASE_DIR_PATH);
-        } else {
-            outputBaseDir = outputDir;
-        }
-        outputBaseDir.mkdirs();
-
-        // Create Resources directory
-        File resourcesDir = new File(outputBaseDir, "resources");
-        resourcesDir.mkdirs();
-
-        // Create JS file
-        File resourcesJsFile = new File(outputBaseDir, "resources.js");
-        resourcesJsFile.createNewFile();
-        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(resourcesJsFile));
-        ObjectMapper mapper = new ObjectMapper();
-        mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
-
-        // Write resource listing to JS file
-        ResourceList resourceList = super.getResourceListing(null, context, "");
-        String resourceListJson = mapper.writeValueAsString(resourceList);
-        resourceListJson = resourceListJson.replace("\'", "\\\'").replace("\\n", "\\\\n");
-        bufferedWriter.write("function getSpec() {\n\treturn \'" + resourceListJson + "\';\n}\n\n");
-
-        // Write resources/APIs to JS file and to disk
-        bufferedWriter.write("function jsonFor(resource) {\n\tswitch(resource) {\n");
-        for (Resource resource : resourceList.getApis()) {
-            int revisionIndex = resource.getPath().indexOf('(');
-            String name = resource.getPath().substring(0, revisionIndex);
-            String revision = resource.getPath().substring(revisionIndex + 1, resource.getPath().length() - 1);
-            ApiDeclaration apiDeclaration = super.getApiDeclaration(name, revision, null, context, "");
-            String json = mapper.writeValueAsString(apiDeclaration);
-            // Manually insert models because org.json.JSONObject cannot be serialized by ObjectMapper
-            json = json.replace("\"models\":{}", "\"models\":" + apiDeclaration.getModels().toString().replace("\\\"", "\""));
-            // Escape single quotes and new lines
-            json = json.replace("\'", "\\\'").replace("\\n", "\\\\n");
-            bufferedWriter.write("\t\tcase \"" + name + "(" + revision + ")\": return \'" + json + "\';\n");
-
-            File resourceFile = new File(resourcesDir, name + "(" + revision + ").json");
-            BufferedWriter resourceFileWriter = new BufferedWriter(new FileWriter(resourceFile));
-            resourceFileWriter.write(json);
-            resourceFileWriter.close();
-            result.add(resourceFile);
-        }
-        bufferedWriter.write("\t}\n\treturn \"\";\n}");
-        bufferedWriter.close();
-
-        result.add(resourcesJsFile);
-        return result;
-    }
-
-    @Override
-    protected String generatePath(final UriInfo uriInfo, final String name, final String revision) {
-        if (uriInfo == null) {
-            return name + "(" + revision + ")";
-        }
-        return super.generatePath(uriInfo, name, revision);
-    }
-
-    @Override
-    protected String createBasePathFromUriInfo(final UriInfo uriInfo) {
-        if (uriInfo == null) {
-            return RESTCONF_CONTEXT_ROOT;
-        }
-        return super.createBasePathFromUriInfo(uriInfo);
-    }
-
-    @Override
-    public void setAdditionalConfig(final Map<String, String> additionalConfig) {
-        this.additionalConfig = additionalConfig;
-    }
-
-    @Override
-    public void setResourceBaseDir(final File resourceBaseDir) {
-        this.resourceBaseDir = resourceBaseDir;
-    }
-
-    @Override
-    public void setMavenProject(final MavenProject mavenProject) {
-        this.mavenProject = mavenProject;
-        this.projectBaseDir = mavenProject.getBasedir();
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/pom.xml b/opendaylight/md-sal/sal-rest-docgen/pom.xml
deleted file mode 100644 (file)
index 4e371a5..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.opendaylight.controller</groupId>
-    <artifactId>sal-parent</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>sal-rest-docgen</artifactId>
-  <packaging>bundle</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-annotations</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-databind</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.datatype</groupId>
-      <artifactId>jackson-datatype-json-org</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.google.guava</groupId>
-      <artifactId>guava</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-    </dependency>
-
-    <!-- Jax rs -->
-    <dependency>
-      <groupId>org.jboss.resteasy</groupId>
-      <artifactId>jaxrs-api</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.json</groupId>
-      <artifactId>json</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-core-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>yang-common</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>yang-model-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>yang-model-util</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>yang-parser-api</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>yang-parser-impl</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.osgi</groupId>
-      <artifactId>org.osgi.core</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-all</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>yang-data-api</artifactId>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <extensions>true</extensions>
-        <configuration>
-
-          <instructions>
-            <Bundle-Name>MD SAL Rest Api Doc Generator</Bundle-Name>
-            <Import-Package>!org.apache.maven.plugin.logging,
-              !org.apache.maven.project,
-              !org.opendaylight.yangtools.yang2sources.spi,
-              *,
-              com.sun.jersey.spi.container.servlet, org.eclipse.jetty.servlets
-            </Import-Package>
-            <Bundle-Activator>org.opendaylight.controller.sal.rest.doc.DocProvider</Bundle-Activator>
-            <Web-ContextPath>/apidoc</Web-ContextPath>
-          </instructions>
-
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/DocProvider.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/DocProvider.java
deleted file mode 100644 (file)
index ca11b9d..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.sal.core.api.Broker;
-import org.opendaylight.controller.sal.core.api.Provider;
-import org.opendaylight.controller.sal.core.api.model.SchemaService;
-import org.opendaylight.controller.sal.core.api.mount.MountProvisionListener;
-import org.opendaylight.controller.sal.rest.doc.impl.ApiDocGenerator;
-import org.opendaylight.controller.sal.rest.doc.mountpoints.MountPointSwagger;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DocProvider implements BundleActivator, ServiceTrackerCustomizer<Broker, Broker>,
-        Provider, AutoCloseable {
-
-    private final Logger _logger = LoggerFactory.getLogger(DocProvider.class);
-
-    private ServiceTracker<Broker, Broker> brokerServiceTracker;
-    private BundleContext bundleContext;
-    private Broker.ProviderSession session;
-
-    private final List<AutoCloseable> toClose = new LinkedList<>();
-
-    @Override
-    public void close() throws Exception {
-        stop(bundleContext);
-    }
-
-    @Override
-    public void onSessionInitiated(Broker.ProviderSession providerSession) {
-        SchemaService schemaService = providerSession.getService(SchemaService.class);
-        ApiDocGenerator.getInstance().setSchemaService(schemaService);
-
-        DOMMountPointService mountService = providerSession
-                .getService(DOMMountPointService.class);
-        ListenerRegistration<MountProvisionListener> registration = mountService
-                .registerProvisionListener(MountPointSwagger.getInstance());
-        MountPointSwagger.getInstance().setGlobalSchema(schemaService);
-        synchronized (toClose) {
-            toClose.add(registration);
-        }
-        MountPointSwagger.getInstance().setMountService(mountService);
-
-        _logger.debug("Restconf API Explorer started");
-    }
-
-    @Override
-    public Collection<ProviderFunctionality> getProviderFunctionality() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public void start(BundleContext context) throws Exception {
-        bundleContext = context;
-        brokerServiceTracker = new ServiceTracker<>(context, Broker.class, this);
-        brokerServiceTracker.open();
-    }
-
-    @Override
-    public void stop(BundleContext context) throws Exception {
-        if (brokerServiceTracker != null) {
-            brokerServiceTracker.close();
-        }
-
-        if (session != null) {
-            session.close();
-        }
-
-        synchronized (toClose) {
-            for (AutoCloseable close : toClose) {
-                close.close();
-            }
-        }
-    }
-
-    @Override
-    public Broker addingService(ServiceReference<Broker> reference) {
-        Broker broker = bundleContext.getService(reference);
-        session = broker.registerProvider(this, bundleContext);
-        return broker;
-    }
-
-    @Override
-    public void modifiedService(ServiceReference<Broker> reference, Broker service) {
-        if (session != null) {
-            session.close();
-        }
-
-        Broker broker = bundleContext.getService(reference);
-        session = broker.registerProvider(this, bundleContext);
-    }
-
-    @Override
-    public void removedService(ServiceReference<Broker> reference, Broker service) {
-        bundleContext.ungetService(reference);
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/api/ApiDocService.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/api/ApiDocService.java
deleted file mode 100644 (file)
index 2646a6a..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.api;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-/**
- * This service generates swagger (See <a
- * href="https://helloreverb.com/developers/swagger"
- * >https://helloreverb.com/developers/swagger</a>) compliant documentation for
- * RESTCONF APIs. The output of this is used by embedded Swagger UI.
- */
-@Path("/")
-public interface ApiDocService {
-
-    /**
-     * Generates index document for Swagger UI. This document lists out all
-     * modules with link to get APIs for each module. The API for each module is
-     * served by <code> getDocByModule()</code> method.
-     *
-     * @param uriInfo
-     * @return
-     */
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getRootDoc(@Context javax.ws.rs.core.UriInfo uriInfo);
-
-    /**
-     * Generates Swagger compliant document listing APIs for module.
-     *
-     * @param module
-     * @param revision
-     * @param uriInfo
-     * @return
-     */
-    @GET
-    @Path("/{module}({revision})")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getDocByModule(@PathParam("module") String module,
-            @PathParam("revision") String revision, @Context javax.ws.rs.core.UriInfo uriInfo);
-
-    /**
-     * Redirects to embedded swagger ui.
-     *
-     * @param uriInfo
-     * @return
-     */
-    @GET
-    @Path("/ui")
-    @Produces(MediaType.TEXT_HTML)
-    public Response getApiExplorer(@Context javax.ws.rs.core.UriInfo uriInfo);
-
-    /**
-     * Generates index document for Swagger UI. This document lists out all
-     * modules with link to get APIs for each module. The API for each module is
-     * served by <code> getDocByModule()</code> method.
-     *
-     * @param uriInfo
-     * @return
-     */
-    @GET
-    @Path("/mounts")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getListOfMounts(@Context javax.ws.rs.core.UriInfo uriInfo);
-
-    @GET
-    @Path("/mounts/{instance}")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getMountRootDoc(@PathParam("instance") String instanceNum,
-            @Context javax.ws.rs.core.UriInfo uriInfo);
-
-    /**
-     * Generates Swagger compliant document listing APIs for module.
-     *
-     * @param module
-     * @param revision
-     * @param uriInfo
-     * @return
-     */
-    @GET
-    @Path("/mounts/{instance}/{module}({revision})")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getMountDocByModule(@PathParam("instance") String instanceNum,
-            @PathParam("module") String module, @PathParam("revision") String revision,
-            @Context javax.ws.rs.core.UriInfo uriInfo);
-
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGenerator.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGenerator.java
deleted file mode 100644 (file)
index a89cbe5..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.impl;
-
-import com.google.common.base.Preconditions;
-import javax.ws.rs.core.UriInfo;
-import org.opendaylight.controller.sal.core.api.model.SchemaService;
-import org.opendaylight.controller.sal.rest.doc.swagger.ApiDeclaration;
-import org.opendaylight.controller.sal.rest.doc.swagger.ResourceList;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-/**
- * This class gathers all yang defined {@link Module}s and generates Swagger compliant documentation.
- */
-public class ApiDocGenerator extends BaseYangSwaggerGenerator {
-
-    private static final ApiDocGenerator INSTANCE = new ApiDocGenerator();
-    private SchemaService schemaService;
-
-    public ResourceList getResourceListing(UriInfo uriInfo) {
-        Preconditions.checkState(schemaService != null);
-        SchemaContext schemaContext = schemaService.getGlobalContext();
-        Preconditions.checkState(schemaContext != null);
-        return super.getResourceListing(uriInfo, schemaContext, "");
-    }
-
-    public ApiDeclaration getApiDeclaration(String module, String revision, UriInfo uriInfo) {
-        SchemaContext schemaContext = schemaService.getGlobalContext();
-        Preconditions.checkState(schemaContext != null);
-        return super.getApiDeclaration(module, revision, uriInfo, schemaContext, "");
-    }
-
-    /**
-     * Returns singleton instance
-     *
-     * @return
-     */
-    public static ApiDocGenerator getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     *
-     * @param schemaService
-     */
-    public void setSchemaService(SchemaService schemaService) {
-        this.schemaService = schemaService;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocServiceImpl.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocServiceImpl.java
deleted file mode 100644 (file)
index c95f41c..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.impl;
-
-import java.io.ByteArrayOutputStream;
-import java.io.OutputStreamWriter;
-import java.util.Map.Entry;
-
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-import org.json.JSONWriter;
-import org.opendaylight.controller.sal.rest.doc.api.ApiDocService;
-import org.opendaylight.controller.sal.rest.doc.mountpoints.MountPointSwagger;
-import org.opendaylight.controller.sal.rest.doc.swagger.ApiDeclaration;
-import org.opendaylight.controller.sal.rest.doc.swagger.ResourceList;
-
-/**
- * This service generates swagger (See <a
- * href="https://helloreverb.com/developers/swagger"
- * >https://helloreverb.com/developers/swagger</a>) compliant documentation for
- * RESTCONF APIs. The output of this is used by embedded Swagger UI.
- *
- * NOTE: These API's need to be synchronized due to bug 1198. Thread access to
- * the SchemaContext is not synchronized properly and thus you can end up with
- * missing definitions without this synchronization. There are likely otherways
- * to work around this limitation, but given that this API is a dev only tool
- * and not dependent UI, this was the fastest work around.
- *
- */
-public class ApiDocServiceImpl implements ApiDocService {
-
-    private static final ApiDocService INSTANCE = new ApiDocServiceImpl();
-
-    public static ApiDocService getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Generates index document for Swagger UI. This document lists out all
-     * modules with link to get APIs for each module. The API for each module is
-     * served by <code> getDocByModule()</code> method.
-     *
-     * @param uriInfo
-     * @return
-     */
-    @Override
-    public synchronized Response getRootDoc(UriInfo uriInfo) {
-        ApiDocGenerator generator = ApiDocGenerator.getInstance();
-        ResourceList rootDoc = generator.getResourceListing(uriInfo);
-
-        return Response.ok(rootDoc).build();
-    }
-
-    /**
-     * Generates Swagger compliant document listing APIs for module.
-     *
-     * @param module
-     * @param revision
-     * @param uriInfo
-     * @return
-     */
-    @Override
-    public synchronized Response getDocByModule(String module, String revision, UriInfo uriInfo) {
-        ApiDocGenerator generator = ApiDocGenerator.getInstance();
-
-        ApiDeclaration doc = generator.getApiDeclaration(module, revision, uriInfo);
-        return Response.ok(doc).build();
-    }
-
-    /**
-     * Redirects to embedded swagger ui.
-     *
-     * @param uriInfo
-     * @return
-     */
-    @Override
-    public synchronized Response getApiExplorer(UriInfo uriInfo) {
-        return Response
-                .seeOther(uriInfo.getBaseUriBuilder().path("../explorer/index.html").build())
-                .build();
-    }
-
-    @Override
-    public synchronized Response getListOfMounts(UriInfo uriInfo) {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        try (OutputStreamWriter streamWriter = new OutputStreamWriter(baos)) {
-            JSONWriter writer = new JSONWriter(streamWriter);
-            writer.array();
-            for (Entry<String, Long> entry : MountPointSwagger.getInstance()
-                    .getInstanceIdentifiers().entrySet()) {
-                writer.object();
-                writer.key("instance").value(entry.getKey());
-                writer.key("id").value(entry.getValue());
-                writer.endObject();
-            }
-            writer.endArray();
-        } catch (Exception e) {
-            return Response.status(500).entity(e.getMessage()).build();
-        }
-        return Response.status(200).entity(baos.toString()).build();
-    }
-
-    @Override
-    public synchronized Response getMountRootDoc(String instanceNum, UriInfo uriInfo) {
-        ResourceList resourceList = MountPointSwagger.getInstance().getResourceList(uriInfo,
-                Long.parseLong(instanceNum));
-        return Response.ok(resourceList).build();
-    }
-
-    @Override
-    public synchronized Response getMountDocByModule(String instanceNum, String module,
-            String revision, UriInfo uriInfo) {
-        ApiDeclaration api = MountPointSwagger.getInstance().getMountPointApi(uriInfo,
-                Long.parseLong(instanceNum), module, revision);
-        return Response.ok(api).build();
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/BaseYangSwaggerGenerator.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/BaseYangSwaggerGenerator.java
deleted file mode 100644 (file)
index c40eca0..0000000
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * Copyright (c) 2014 Brocade Communications 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.sal.rest.doc.impl;
-
-import static org.opendaylight.controller.sal.rest.doc.util.RestDocgenUtil.resolvePathArgumentsName;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.datatype.jsonorg.JsonOrgModule;
-import com.google.common.base.Preconditions;
-import java.io.IOException;
-import java.net.URI;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import javax.ws.rs.core.UriInfo;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.opendaylight.controller.sal.rest.doc.model.builder.OperationBuilder;
-import org.opendaylight.controller.sal.rest.doc.swagger.Api;
-import org.opendaylight.controller.sal.rest.doc.swagger.ApiDeclaration;
-import org.opendaylight.controller.sal.rest.doc.swagger.Operation;
-import org.opendaylight.controller.sal.rest.doc.swagger.Parameter;
-import org.opendaylight.controller.sal.rest.doc.swagger.Resource;
-import org.opendaylight.controller.sal.rest.doc.swagger.ResourceList;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BaseYangSwaggerGenerator {
-
-    private static final Logger LOG = LoggerFactory.getLogger(BaseYangSwaggerGenerator.class);
-
-    protected static final String API_VERSION = "1.0.0";
-    protected static final String SWAGGER_VERSION = "1.2";
-    protected static final String RESTCONF_CONTEXT_ROOT = "restconf";
-
-    static final String MODULE_NAME_SUFFIX = "_module";
-    protected final DateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
-    private final ModelGenerator jsonConverter = new ModelGenerator();
-
-    // private Map<String, ApiDeclaration> MODULE_DOC_CACHE = new HashMap<>()
-    private final ObjectMapper mapper = new ObjectMapper();
-
-    protected BaseYangSwaggerGenerator() {
-        mapper.registerModule(new JsonOrgModule());
-        mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
-    }
-
-    /**
-     *
-     * @param uriInfo
-     * @param operType
-     * @return list of modules converted to swagger compliant resource list.
-     */
-    public ResourceList getResourceListing(UriInfo uriInfo, SchemaContext schemaContext, String context) {
-
-        ResourceList resourceList = createResourceList();
-
-        Set<Module> modules = getSortedModules(schemaContext);
-
-        List<Resource> resources = new ArrayList<>(modules.size());
-
-        LOG.info("Modules found [{}]", modules.size());
-
-        for (Module module : modules) {
-            String revisionString = SIMPLE_DATE_FORMAT.format(module.getRevision());
-            Resource resource = new Resource();
-            LOG.debug("Working on [{},{}]...", module.getName(), revisionString);
-            ApiDeclaration doc = getApiDeclaration(module.getName(), revisionString, uriInfo, schemaContext, context);
-
-            if (doc != null) {
-                resource.setPath(generatePath(uriInfo, module.getName(), revisionString));
-                resources.add(resource);
-            } else {
-                LOG.debug("Could not generate doc for {},{}", module.getName(), revisionString);
-            }
-        }
-
-        resourceList.setApis(resources);
-
-        return resourceList;
-    }
-
-    protected ResourceList createResourceList() {
-        ResourceList resourceList = new ResourceList();
-        resourceList.setApiVersion(API_VERSION);
-        resourceList.setSwaggerVersion(SWAGGER_VERSION);
-        return resourceList;
-    }
-
-    protected String generatePath(UriInfo uriInfo, String name, String revision) {
-        URI uri = uriInfo.getRequestUriBuilder().path(generateCacheKey(name, revision)).build();
-        return uri.toASCIIString();
-    }
-
-    public ApiDeclaration getApiDeclaration(String module, String revision, UriInfo uriInfo, SchemaContext schemaContext, String context) {
-        Date rev = null;
-
-        try {
-            if(revision != null && !revision.equals("0000-00-00")) {
-                rev = SIMPLE_DATE_FORMAT.parse(revision);
-            }
-        } catch (ParseException e) {
-            throw new IllegalArgumentException(e);
-        }
-
-        if(rev != null) {
-            Calendar cal = new GregorianCalendar();
-
-            cal.setTime(rev);
-
-            if(cal.get(Calendar.YEAR) < 1970) {
-                rev = null;
-            }
-        }
-
-        Module m = schemaContext.findModuleByName(module, rev);
-        Preconditions.checkArgument(m != null, "Could not find module by name,revision: " + module + "," + revision);
-
-        return getApiDeclaration(m, rev, uriInfo, context, schemaContext);
-    }
-
-    public ApiDeclaration getApiDeclaration(Module module, Date revision, UriInfo uriInfo, String context, SchemaContext schemaContext) {
-        String basePath = createBasePathFromUriInfo(uriInfo);
-
-        ApiDeclaration doc = getSwaggerDocSpec(module, basePath, context, schemaContext);
-        if (doc != null) {
-            return doc;
-        }
-        return null;
-    }
-
-    protected String createBasePathFromUriInfo(UriInfo uriInfo) {
-        String portPart = "";
-        int port = uriInfo.getBaseUri().getPort();
-        if (port != -1) {
-            portPart = ":" + port;
-        }
-        String basePath = new StringBuilder(uriInfo.getBaseUri().getScheme()).append("://")
-                .append(uriInfo.getBaseUri().getHost()).append(portPart).append("/").append(RESTCONF_CONTEXT_ROOT)
-                .toString();
-        return basePath;
-    }
-
-    public ApiDeclaration getSwaggerDocSpec(Module m, String basePath, String context, SchemaContext schemaContext) {
-        ApiDeclaration doc = createApiDeclaration(basePath);
-
-        List<Api> apis = new ArrayList<Api>();
-
-        Collection<DataSchemaNode> dataSchemaNodes = m.getChildNodes();
-        LOG.debug("child nodes size [{}]", dataSchemaNodes.size());
-        for (DataSchemaNode node : dataSchemaNodes) {
-            if ((node instanceof ListSchemaNode) || (node instanceof ContainerSchemaNode)) {
-
-                LOG.debug("Is Configuration node [{}] [{}]", node.isConfiguration(), node.getQName().getLocalName());
-
-                List<Parameter> pathParams = new ArrayList<Parameter>();
-                String resourcePath = getDataStorePath("/config/", context);
-                addRootPostLink(m, (DataNodeContainer) node, pathParams, resourcePath, apis);
-                addApis(node, apis, resourcePath, pathParams, schemaContext, true);
-
-                pathParams = new ArrayList<Parameter>();
-                resourcePath = getDataStorePath("/operational/", context);
-                addApis(node, apis, resourcePath, pathParams, schemaContext, false);
-            }
-        }
-
-        Set<RpcDefinition> rpcs = m.getRpcs();
-        for (RpcDefinition rpcDefinition : rpcs) {
-            String resourcePath = getDataStorePath("/operations/", context);
-            addRpcs(rpcDefinition, apis, resourcePath, schemaContext);
-        }
-
-        LOG.debug("Number of APIs found [{}]", apis.size());
-
-        if (!apis.isEmpty()) {
-            doc.setApis(apis);
-            JSONObject models = null;
-
-            try {
-                models = jsonConverter.convertToJsonSchema(m, schemaContext);
-                doc.setModels(models);
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug(mapper.writeValueAsString(doc));
-                }
-            } catch (IOException | JSONException e) {
-                e.printStackTrace();
-            }
-
-            return doc;
-        }
-        return null;
-    }
-
-    private void addRootPostLink(final Module m, final DataNodeContainer node, final List<Parameter> pathParams,
-            final String resourcePath, final List<Api> apis) {
-        if (containsListOrContainer(m.getChildNodes())) {
-            final Api apiForRootPostUri = new Api();
-            apiForRootPostUri.setPath(resourcePath);
-            apiForRootPostUri.setOperations(operationPost(m.getName()+MODULE_NAME_SUFFIX, m.getDescription(), m, pathParams, true));
-            apis.add(apiForRootPostUri);
-        }
-    }
-
-    protected ApiDeclaration createApiDeclaration(String basePath) {
-        ApiDeclaration doc = new ApiDeclaration();
-        doc.setApiVersion(API_VERSION);
-        doc.setSwaggerVersion(SWAGGER_VERSION);
-        doc.setBasePath(basePath);
-        doc.setProduces(Arrays.asList("application/json", "application/xml"));
-        return doc;
-    }
-
-    protected String getDataStorePath(String dataStore, String context) {
-        return dataStore + context;
-    }
-
-    private String generateCacheKey(Module m) {
-        return generateCacheKey(m.getName(), SIMPLE_DATE_FORMAT.format(m.getRevision()));
-    }
-
-    private String generateCacheKey(String module, String revision) {
-        return module + "(" + revision + ")";
-    }
-
-    private void addApis(DataSchemaNode node, List<Api> apis, String parentPath, List<Parameter> parentPathParams, SchemaContext schemaContext,
-            boolean addConfigApi) {
-
-        Api api = new Api();
-        List<Parameter> pathParams = new ArrayList<Parameter>(parentPathParams);
-
-        String resourcePath = parentPath + createPath(node, pathParams, schemaContext) + "/";
-        LOG.debug("Adding path: [{}]", resourcePath);
-        api.setPath(resourcePath);
-
-        Iterable<DataSchemaNode> childSchemaNodes = Collections.<DataSchemaNode> emptySet();
-        if ((node instanceof ListSchemaNode) || (node instanceof ContainerSchemaNode)) {
-            DataNodeContainer dataNodeContainer = (DataNodeContainer) node;
-            childSchemaNodes = dataNodeContainer.getChildNodes();
-        }
-        api.setOperations(operation(node, pathParams, addConfigApi, childSchemaNodes));
-        apis.add(api);
-
-        for (DataSchemaNode childNode : childSchemaNodes) {
-            if (childNode instanceof ListSchemaNode || childNode instanceof ContainerSchemaNode) {
-                // keep config and operation attributes separate.
-                if (childNode.isConfiguration() == addConfigApi) {
-                    addApis(childNode, apis, resourcePath, pathParams, schemaContext, addConfigApi);
-                }
-            }
-        }
-
-    }
-
-    private boolean containsListOrContainer(final Iterable<DataSchemaNode> nodes) {
-        for (DataSchemaNode child : nodes) {
-            if (child instanceof ListSchemaNode || child instanceof ContainerSchemaNode) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * @param node
-     * @param pathParams
-     * @return
-     */
-    private List<Operation> operation(DataSchemaNode node, List<Parameter> pathParams, boolean isConfig, Iterable<DataSchemaNode> childSchemaNodes) {
-        List<Operation> operations = new ArrayList<>();
-
-        OperationBuilder.Get getBuilder = new OperationBuilder.Get(node, isConfig);
-        operations.add(getBuilder.pathParams(pathParams).build());
-
-        if (isConfig) {
-            OperationBuilder.Put putBuilder = new OperationBuilder.Put(node.getQName().getLocalName(),
-                    node.getDescription());
-            operations.add(putBuilder.pathParams(pathParams).build());
-
-            OperationBuilder.Delete deleteBuilder = new OperationBuilder.Delete(node);
-            operations.add(deleteBuilder.pathParams(pathParams).build());
-
-            if (containsListOrContainer(childSchemaNodes)) {
-                operations.addAll(operationPost(node.getQName().getLocalName(), node.getDescription(), (DataNodeContainer) node,
-                        pathParams, isConfig));
-            }
-        }
-        return operations;
-    }
-
-    /**
-     * @param node
-     * @param pathParams
-     * @return
-     */
-    private List<Operation> operationPost(final String name, final String description, final DataNodeContainer dataNodeContainer, List<Parameter> pathParams, boolean isConfig) {
-        List<Operation> operations = new ArrayList<>();
-        if (isConfig) {
-            OperationBuilder.Post postBuilder = new OperationBuilder.Post(name, description, dataNodeContainer);
-            operations.add(postBuilder.pathParams(pathParams).build());
-        }
-        return operations;
-    }
-
-    private String createPath(final DataSchemaNode schemaNode, List<Parameter> pathParams, SchemaContext schemaContext) {
-        ArrayList<LeafSchemaNode> pathListParams = new ArrayList<LeafSchemaNode>();
-        StringBuilder path = new StringBuilder();
-        String localName = resolvePathArgumentsName(schemaNode, schemaContext);
-        path.append(localName);
-
-        if ((schemaNode instanceof ListSchemaNode)) {
-            final List<QName> listKeys = ((ListSchemaNode) schemaNode).getKeyDefinition();
-            for (final QName listKey : listKeys) {
-                DataSchemaNode _dataChildByName = ((DataNodeContainer) schemaNode).getDataChildByName(listKey);
-                pathListParams.add(((LeafSchemaNode) _dataChildByName));
-
-                String pathParamIdentifier = new StringBuilder("/{").append(listKey.getLocalName()).append("}")
-                        .toString();
-                path.append(pathParamIdentifier);
-
-                Parameter pathParam = new Parameter();
-                pathParam.setName(listKey.getLocalName());
-                pathParam.setDescription(_dataChildByName.getDescription());
-                pathParam.setType("string");
-                pathParam.setParamType("path");
-
-                pathParams.add(pathParam);
-            }
-        }
-        return path.toString();
-    }
-
-    protected void addRpcs(RpcDefinition rpcDefn, List<Api> apis, String parentPath, SchemaContext schemaContext) {
-        Api rpc = new Api();
-        String resourcePath = parentPath + resolvePathArgumentsName(rpcDefn, schemaContext);
-        rpc.setPath(resourcePath);
-
-        Operation operationSpec = new Operation();
-        operationSpec.setMethod("POST");
-        operationSpec.setNotes(rpcDefn.getDescription());
-        operationSpec.setNickname(rpcDefn.getQName().getLocalName());
-        if (rpcDefn.getOutput() != null) {
-            operationSpec.setType("(" + rpcDefn.getQName().getLocalName() + ")output");
-        }
-        if (rpcDefn.getInput() != null) {
-            Parameter payload = new Parameter();
-            payload.setParamType("body");
-            payload.setType("(" + rpcDefn.getQName().getLocalName() + ")input");
-            operationSpec.setParameters(Collections.singletonList(payload));
-            operationSpec.setConsumes(OperationBuilder.CONSUMES_PUT_POST);
-        }
-
-        rpc.setOperations(Arrays.asList(operationSpec));
-
-        apis.add(rpc);
-    }
-
-    protected SortedSet<Module> getSortedModules(SchemaContext schemaContext) {
-        if (schemaContext == null) {
-            return new TreeSet<>();
-        }
-
-        Set<Module> modules = schemaContext.getModules();
-
-        SortedSet<Module> sortedModules = new TreeSet<>(new Comparator<Module>() {
-            @Override
-            public int compare(Module module1, Module module2) {
-                int result = module1.getName().compareTo(module2.getName());
-                if (result == 0) {
-                    Date module1Revision = module1.getRevision() != null ? module1.getRevision() : new Date(0);
-                    Date module2Revision = module2.getRevision() != null ? module2.getRevision() : new Date(0);
-                    result = module1Revision.compareTo(module2Revision);
-                }
-                if (result == 0) {
-                    result = module1.getNamespace().compareTo(module2.getNamespace());
-                }
-                return result;
-            }
-        });
-        for (Module m : modules) {
-            if (m != null) {
-                sortedModules.add(m);
-            }
-        }
-        return sortedModules;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/ModelGenerator.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/ModelGenerator.java
deleted file mode 100644 (file)
index 93daf05..0000000
+++ /dev/null
@@ -1,614 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.impl;
-
-import static org.opendaylight.controller.sal.rest.doc.impl.BaseYangSwaggerGenerator.MODULE_NAME_SUFFIX;
-import static org.opendaylight.controller.sal.rest.doc.model.builder.OperationBuilder.Post.METHOD_NAME;
-import static org.opendaylight.controller.sal.rest.doc.util.RestDocgenUtil.resolveNodesName;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMap.Builder;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import javax.annotation.concurrent.NotThreadSafe;
-import org.apache.commons.lang3.BooleanUtils;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.opendaylight.controller.sal.rest.doc.model.builder.OperationBuilder;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
-import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit;
-import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair;
-import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
-import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
-import org.opendaylight.yangtools.yang.model.util.BooleanType;
-import org.opendaylight.yangtools.yang.model.util.Decimal64;
-import org.opendaylight.yangtools.yang.model.util.EnumerationType;
-import org.opendaylight.yangtools.yang.model.util.ExtendedType;
-import org.opendaylight.yangtools.yang.model.util.Int16;
-import org.opendaylight.yangtools.yang.model.util.Int32;
-import org.opendaylight.yangtools.yang.model.util.Int64;
-import org.opendaylight.yangtools.yang.model.util.Int8;
-import org.opendaylight.yangtools.yang.model.util.StringType;
-import org.opendaylight.yangtools.yang.model.util.Uint16;
-import org.opendaylight.yangtools.yang.model.util.Uint32;
-import org.opendaylight.yangtools.yang.model.util.Uint64;
-import org.opendaylight.yangtools.yang.model.util.Uint8;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Generates JSON Schema for data defined in Yang
- */
-@NotThreadSafe
-public class ModelGenerator {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ModelGenerator.class);
-
-    private static final String BASE_64 = "base64";
-    private static final String BINARY_ENCODING_KEY = "binaryEncoding";
-    private static final String MEDIA_KEY = "media";
-    private static final String ONE_OF_KEY = "oneOf";
-    private static final String UNIQUE_ITEMS_KEY = "uniqueItems";
-    private static final String MAX_ITEMS = "maxItems";
-    private static final String MIN_ITEMS = "minItems";
-    private static final String SCHEMA_URL = "http://json-schema.org/draft-04/schema";
-    private static final String SCHEMA_KEY = "$schema";
-    private static final String MAX_LENGTH_KEY = "maxLength";
-    private static final String MIN_LENGTH_KEY = "minLength";
-    private static final String REQUIRED_KEY = "required";
-    private static final String REF_KEY = "$ref";
-    private static final String ITEMS_KEY = "items";
-    private static final String TYPE_KEY = "type";
-    private static final String PROPERTIES_KEY = "properties";
-    private static final String DESCRIPTION_KEY = "description";
-    private static final String OBJECT_TYPE = "object";
-    private static final String ARRAY_TYPE = "array";
-    private static final String ENUM = "enum";
-    private static final String INTEGER = "integer";
-    private static final String NUMBER = "number";
-    private static final String BOOLEAN = "boolean";
-    private static final String STRING = "string";
-    private static final String ID_KEY = "id";
-    private static final String SUB_TYPES_KEY = "subTypes";
-
-    private static final Map<Class<?>, String> YANG_TYPE_TO_JSON_TYPE_MAPPING;
-
-    static {
-        final Builder<Class<?>, String> b = ImmutableMap.builder();
-
-        b.put(StringType.class, STRING);
-        b.put(BooleanType.class, BOOLEAN);
-        b.put(Int8.class, INTEGER);
-        b.put(Int16.class, INTEGER);
-        b.put(Int32.class, INTEGER);
-        b.put(Int64.class, INTEGER);
-        b.put(Uint16.class, INTEGER);
-        b.put(Uint32.class, INTEGER);
-        b.put(Uint64.class, INTEGER);
-        b.put(Uint8.class, INTEGER);
-        b.put(Decimal64.class, NUMBER);
-        b.put(EnumerationType.class, ENUM);
-        // TODO: Binary type
-
-        YANG_TYPE_TO_JSON_TYPE_MAPPING = b.build();
-    }
-
-    private Module topLevelModule;
-
-    public ModelGenerator() {
-    }
-
-    public JSONObject convertToJsonSchema(final Module module, final SchemaContext schemaContext) throws IOException, JSONException {
-        JSONObject models = new JSONObject();
-        topLevelModule = module;
-        processModules(module, models);
-        processContainersAndLists(module, models, schemaContext);
-        processRPCs(module, models, schemaContext);
-        processIdentities(module, models);
-        return models;
-    }
-
-    private void processModules(final Module module, final JSONObject models) throws JSONException {
-        createConcreteModelForPost(models, module.getName()+MODULE_NAME_SUFFIX, createPropertiesForPost(module));
-    }
-
-    private void processContainersAndLists(final Module module, final JSONObject models, final SchemaContext schemaContext)
-            throws IOException, JSONException {
-
-        String moduleName = module.getName();
-
-        for (DataSchemaNode childNode : module.getChildNodes()) {
-            // For every container and list in the module
-            if (childNode instanceof ContainerSchemaNode || childNode instanceof ListSchemaNode) {
-                processDataNodeContainer((DataNodeContainer) childNode, moduleName, models, true, schemaContext);
-                processDataNodeContainer((DataNodeContainer) childNode, moduleName, models, false, schemaContext);
-            }
-        }
-
-    }
-
-    /**
-     * Process the RPCs for a Module Spits out a file each of the name <rpcName>-input.json and <rpcName>-output.json
-     * for each RPC that contains input & output elements
-     *
-     * @param module
-     * @throws JSONException
-     * @throws IOException
-     */
-    private void processRPCs(final Module module, final JSONObject models, final SchemaContext schemaContext) throws JSONException,
-            IOException {
-
-        Set<RpcDefinition> rpcs = module.getRpcs();
-        String moduleName = module.getName();
-        for (RpcDefinition rpc : rpcs) {
-
-            ContainerSchemaNode input = rpc.getInput();
-            if (input != null) {
-                JSONObject inputJSON = processDataNodeContainer(input, moduleName, models, schemaContext);
-                String filename = "(" + rpc.getQName().getLocalName() + ")input";
-                inputJSON.put("id", filename);
-                // writeToFile(filename, inputJSON.toString(2), moduleName);
-                models.put(filename, inputJSON);
-            }
-
-            ContainerSchemaNode output = rpc.getOutput();
-            if (output != null) {
-                JSONObject outputJSON = processDataNodeContainer(output, moduleName, models, schemaContext);
-                String filename = "(" + rpc.getQName().getLocalName() + ")output";
-                outputJSON.put("id", filename);
-                models.put(filename, outputJSON);
-            }
-        }
-    }
-
-    /**
-     * Processes the 'identity' statement in a yang model and maps it to a 'model' in the Swagger JSON spec.
-     *
-     * @param module
-     *            The module from which the identity stmt will be processed
-     * @param models
-     *            The JSONObject in which the parsed identity will be put as a 'model' obj
-     * @throws JSONException
-     */
-    private void processIdentities(final Module module, final JSONObject models) throws JSONException {
-
-        String moduleName = module.getName();
-        Set<IdentitySchemaNode> idNodes = module.getIdentities();
-        LOG.debug("Processing Identities for module {} . Found {} identity statements", moduleName, idNodes.size());
-
-        for (IdentitySchemaNode idNode : idNodes) {
-            JSONObject identityObj = new JSONObject();
-            String identityName = idNode.getQName().getLocalName();
-            LOG.debug("Processing Identity: {}", identityName);
-
-            identityObj.put(ID_KEY, identityName);
-            identityObj.put(DESCRIPTION_KEY, idNode.getDescription());
-
-            JSONObject props = new JSONObject();
-            IdentitySchemaNode baseId = idNode.getBaseIdentity();
-
-            if (baseId == null) {
-                /**
-                 * This is a base identity. So lets see if it has sub types. If it does, then add them to the model
-                 * definition.
-                 */
-                Set<IdentitySchemaNode> derivedIds = idNode.getDerivedIdentities();
-
-                if (derivedIds != null) {
-                    JSONArray subTypes = new JSONArray();
-                    for (IdentitySchemaNode derivedId : derivedIds) {
-                        subTypes.put(derivedId.getQName().getLocalName());
-                    }
-                    identityObj.put(SUB_TYPES_KEY, subTypes);
-                }
-            } else {
-                /**
-                 * This is a derived entity. Add it's base type & move on.
-                 */
-                props.put(TYPE_KEY, baseId.getQName().getLocalName());
-            }
-
-            // Add the properties. For a base type, this will be an empty object as required by the Swagger spec.
-            identityObj.put(PROPERTIES_KEY, props);
-            models.put(identityName, identityObj);
-        }
-    }
-
-    /**
-     * Processes the container and list nodes and populates the moduleJSON
-     *
-     * @param container
-     * @param moduleName
-     * @param isConfig
-     * @throws JSONException
-     * @throws IOException
-     */
-    private JSONObject processDataNodeContainer(final DataNodeContainer dataNode, final String moduleName, final JSONObject models,
-            final SchemaContext schemaContext) throws JSONException, IOException {
-        return processDataNodeContainer(dataNode, moduleName, models, (Boolean) null, schemaContext);
-    }
-
-    private JSONObject processDataNodeContainer(final DataNodeContainer dataNode, final String moduleName, final JSONObject models,
-            final Boolean isConfig, final SchemaContext schemaContext) throws JSONException, IOException {
-        if (dataNode instanceof ListSchemaNode || dataNode instanceof ContainerSchemaNode) {
-            Preconditions.checkArgument(dataNode instanceof SchemaNode, "Data node should be also schema node");
-            Iterable<DataSchemaNode> containerChildren = dataNode.getChildNodes();
-            JSONObject properties = processChildren(containerChildren, ((SchemaNode) dataNode).getQName(), moduleName,
-                    models, isConfig, schemaContext);
-
-            String nodeName = (BooleanUtils.isNotFalse(isConfig) ? OperationBuilder.CONFIG
-                    : OperationBuilder.OPERATIONAL) + ((SchemaNode) dataNode).getQName().getLocalName();
-
-            JSONObject childSchema = getSchemaTemplate();
-            childSchema.put(TYPE_KEY, OBJECT_TYPE);
-            childSchema.put(PROPERTIES_KEY, properties);
-            childSchema.put("id", nodeName);
-            models.put(nodeName, childSchema);
-
-            if (BooleanUtils.isNotFalse(isConfig)) {
-                createConcreteModelForPost(models, ((SchemaNode) dataNode).getQName().getLocalName(),
-                        createPropertiesForPost(dataNode));
-            }
-
-            JSONObject items = new JSONObject();
-            items.put(REF_KEY, nodeName);
-            JSONObject dataNodeProperties = new JSONObject();
-            dataNodeProperties.put(TYPE_KEY, dataNode instanceof ListSchemaNode ? ARRAY_TYPE : OBJECT_TYPE);
-            dataNodeProperties.put(ITEMS_KEY, items);
-
-            return dataNodeProperties;
-        }
-        return null;
-    }
-
-    private void createConcreteModelForPost(final JSONObject models, final String localName, final JSONObject properties)
-            throws JSONException {
-        String nodePostName = OperationBuilder.CONFIG + localName + METHOD_NAME;
-        JSONObject postSchema = getSchemaTemplate();
-        postSchema.put(TYPE_KEY, OBJECT_TYPE);
-        postSchema.put("id", nodePostName);
-        postSchema.put(PROPERTIES_KEY, properties);
-        models.put(nodePostName, postSchema);
-    }
-
-    private JSONObject createPropertiesForPost(final DataNodeContainer dataNodeContainer) throws JSONException {
-        JSONObject properties = new JSONObject();
-        for (DataSchemaNode childNode : dataNodeContainer.getChildNodes()) {
-            if (childNode instanceof ListSchemaNode || childNode instanceof ContainerSchemaNode) {
-                JSONObject items = new JSONObject();
-                items.put(REF_KEY, "(config)" + childNode.getQName().getLocalName());
-                JSONObject property = new JSONObject();
-                property.put(TYPE_KEY, childNode instanceof ListSchemaNode ? ARRAY_TYPE : OBJECT_TYPE);
-                property.put(ITEMS_KEY, items);
-                properties.put(childNode.getQName().getLocalName(), property);
-            } else if (childNode instanceof LeafSchemaNode){
-                JSONObject property = processLeafNode((LeafSchemaNode)childNode);
-                properties.put(childNode.getQName().getLocalName(), property);
-            }
-        }
-        return properties;
-    }
-
-    private JSONObject processChildren(final Iterable<DataSchemaNode> nodes, final QName parentQName, final String moduleName,
-            final JSONObject models, final SchemaContext schemaContext) throws JSONException, IOException {
-        return processChildren(nodes, parentQName, moduleName, models, null, schemaContext);
-    }
-
-    /**
-     * Processes the nodes
-     *
-     * @param nodes
-     * @param parentQName
-     * @param moduleName
-     * @param isConfig
-     * @return
-     * @throws JSONException
-     * @throws IOException
-     */
-    private JSONObject processChildren(final Iterable<DataSchemaNode> nodes, final QName parentQName, final String moduleName,
-            final JSONObject models, final Boolean isConfig, final SchemaContext schemaContext) throws JSONException, IOException {
-
-        JSONObject properties = new JSONObject();
-
-        for (DataSchemaNode node : nodes) {
-            if (isConfig == null || node.isConfiguration() == isConfig) {
-
-                String name = resolveNodesName(node, topLevelModule, schemaContext);
-                JSONObject property = null;
-                if (node instanceof LeafSchemaNode) {
-                    property = processLeafNode((LeafSchemaNode) node);
-                } else if (node instanceof ListSchemaNode) {
-                    property = processDataNodeContainer((ListSchemaNode) node, moduleName, models, isConfig,
-                            schemaContext);
-
-                } else if (node instanceof LeafListSchemaNode) {
-                    property = processLeafListNode((LeafListSchemaNode) node);
-
-                } else if (node instanceof ChoiceSchemaNode) {
-                    property = processChoiceNode((ChoiceSchemaNode) node, moduleName, models, schemaContext);
-
-                } else if (node instanceof AnyXmlSchemaNode) {
-                    property = processAnyXMLNode((AnyXmlSchemaNode) node);
-
-                } else if (node instanceof ContainerSchemaNode) {
-                    property = processDataNodeContainer((ContainerSchemaNode) node, moduleName, models, isConfig,
-                            schemaContext);
-
-                } else {
-                    throw new IllegalArgumentException("Unknown DataSchemaNode type: " + node.getClass());
-                }
-
-                property.putOpt(DESCRIPTION_KEY, node.getDescription());
-                properties.put(name, property);
-            }
-        }
-        return properties;
-    }
-
-    /**
-     *
-     * @param listNode
-     * @throws JSONException
-     */
-    private JSONObject processLeafListNode(final LeafListSchemaNode listNode) throws JSONException {
-        JSONObject props = new JSONObject();
-        props.put(TYPE_KEY, ARRAY_TYPE);
-
-        JSONObject itemsVal = new JSONObject();
-        processTypeDef(listNode.getType(), itemsVal);
-        props.put(ITEMS_KEY, itemsVal);
-
-        ConstraintDefinition constraints = listNode.getConstraints();
-        processConstraints(constraints, props);
-
-        return props;
-    }
-
-    /**
-     *
-     * @param choiceNode
-     * @param moduleName
-     * @throws JSONException
-     * @throws IOException
-     */
-    private JSONObject processChoiceNode(final ChoiceSchemaNode choiceNode, final String moduleName, final JSONObject models,
-            final SchemaContext schemaContext) throws JSONException, IOException {
-
-        Set<ChoiceCaseNode> cases = choiceNode.getCases();
-
-        JSONArray choiceProps = new JSONArray();
-        for (ChoiceCaseNode choiceCase : cases) {
-            String choiceName = choiceCase.getQName().getLocalName();
-            JSONObject choiceProp = processChildren(choiceCase.getChildNodes(), choiceCase.getQName(), moduleName,
-                    models, schemaContext);
-            JSONObject choiceObj = new JSONObject();
-            choiceObj.put(choiceName, choiceProp);
-            choiceObj.put(TYPE_KEY, OBJECT_TYPE);
-            choiceProps.put(choiceObj);
-        }
-
-        JSONObject oneOfProps = new JSONObject();
-        oneOfProps.put(ONE_OF_KEY, choiceProps);
-        oneOfProps.put(TYPE_KEY, OBJECT_TYPE);
-
-        return oneOfProps;
-    }
-
-    /**
-     *
-     * @param constraints
-     * @param props
-     * @throws JSONException
-     */
-    private void processConstraints(final ConstraintDefinition constraints, final JSONObject props) throws JSONException {
-        boolean isMandatory = constraints.isMandatory();
-        props.put(REQUIRED_KEY, isMandatory);
-
-        Integer minElements = constraints.getMinElements();
-        Integer maxElements = constraints.getMaxElements();
-        if (minElements != null) {
-            props.put(MIN_ITEMS, minElements);
-        }
-        if (maxElements != null) {
-            props.put(MAX_ITEMS, maxElements);
-        }
-    }
-
-    /**
-     *
-     * @param leafNode
-     * @return
-     * @throws JSONException
-     */
-    private JSONObject processLeafNode(final LeafSchemaNode leafNode) throws JSONException {
-        JSONObject property = new JSONObject();
-
-        String leafDescription = leafNode.getDescription();
-        property.put(DESCRIPTION_KEY, leafDescription);
-
-        processConstraints(leafNode.getConstraints(), property);
-        processTypeDef(leafNode.getType(), property);
-
-        return property;
-    }
-
-    /**
-     *
-     * @param leafNode
-     * @return
-     * @throws JSONException
-     */
-    private JSONObject processAnyXMLNode(final AnyXmlSchemaNode leafNode) throws JSONException {
-        JSONObject property = new JSONObject();
-
-        String leafDescription = leafNode.getDescription();
-        property.put(DESCRIPTION_KEY, leafDescription);
-
-        processConstraints(leafNode.getConstraints(), property);
-
-        return property;
-    }
-
-    /**
-     * @param property
-     * @throws JSONException
-     */
-    private void processTypeDef(final TypeDefinition<?> leafTypeDef, final JSONObject property) throws JSONException {
-
-        if (leafTypeDef instanceof ExtendedType) {
-            processExtendedType(leafTypeDef, property);
-        } else if (leafTypeDef instanceof EnumerationType) {
-            processEnumType((EnumerationType) leafTypeDef, property);
-
-        } else if (leafTypeDef instanceof BitsTypeDefinition) {
-            processBitsType((BitsTypeDefinition) leafTypeDef, property);
-
-        } else if (leafTypeDef instanceof UnionTypeDefinition) {
-            processUnionType((UnionTypeDefinition) leafTypeDef, property);
-
-        } else if (leafTypeDef instanceof IdentityrefTypeDefinition) {
-            property.putOpt(TYPE_KEY, ((IdentityrefTypeDefinition) leafTypeDef).getIdentity().getQName().getLocalName());
-        } else if (leafTypeDef instanceof BinaryTypeDefinition) {
-            processBinaryType((BinaryTypeDefinition) leafTypeDef, property);
-        } else {
-            // System.out.println("In else: " + leafTypeDef.getClass());
-            String jsonType = YANG_TYPE_TO_JSON_TYPE_MAPPING.get(leafTypeDef.getClass());
-            if (jsonType == null) {
-                jsonType = "object";
-            }
-            property.putOpt(TYPE_KEY, jsonType);
-        }
-    }
-
-    /**
-     *
-     * @param leafTypeDef
-     * @param property
-     * @throws JSONException
-     */
-    private void processExtendedType(final TypeDefinition<?> leafTypeDef, final JSONObject property) throws JSONException {
-        Object leafBaseType = leafTypeDef.getBaseType();
-        if (leafBaseType instanceof ExtendedType) {
-            // recursively process an extended type until we hit a base type
-            processExtendedType((TypeDefinition<?>) leafBaseType, property);
-        } else {
-            List<LengthConstraint> lengthConstraints = ((ExtendedType) leafTypeDef).getLengthConstraints();
-            for (LengthConstraint lengthConstraint : lengthConstraints) {
-                Number min = lengthConstraint.getMin();
-                Number max = lengthConstraint.getMax();
-                property.putOpt(MIN_LENGTH_KEY, min);
-                property.putOpt(MAX_LENGTH_KEY, max);
-            }
-            String jsonType = YANG_TYPE_TO_JSON_TYPE_MAPPING.get(leafBaseType.getClass());
-            property.putOpt(TYPE_KEY, jsonType);
-        }
-
-    }
-
-    /*
-   *
-   */
-    private void processBinaryType(final BinaryTypeDefinition binaryType, final JSONObject property) throws JSONException {
-        property.put(TYPE_KEY, STRING);
-        JSONObject media = new JSONObject();
-        media.put(BINARY_ENCODING_KEY, BASE_64);
-        property.put(MEDIA_KEY, media);
-    }
-
-    /**
-     *
-     * @param enumLeafType
-     * @param property
-     * @throws JSONException
-     */
-    private void processEnumType(final EnumerationType enumLeafType, final JSONObject property) throws JSONException {
-        List<EnumPair> enumPairs = enumLeafType.getValues();
-        List<String> enumNames = new ArrayList<String>();
-        for (EnumPair enumPair : enumPairs) {
-            enumNames.add(enumPair.getName());
-        }
-        property.putOpt(ENUM, new JSONArray(enumNames));
-    }
-
-    /**
-     *
-     * @param bitsType
-     * @param property
-     * @throws JSONException
-     */
-    private void processBitsType(final BitsTypeDefinition bitsType, final JSONObject property) throws JSONException {
-        property.put(TYPE_KEY, ARRAY_TYPE);
-        property.put(MIN_ITEMS, 0);
-        property.put(UNIQUE_ITEMS_KEY, true);
-        JSONArray enumValues = new JSONArray();
-
-        List<Bit> bits = bitsType.getBits();
-        for (Bit bit : bits) {
-            enumValues.put(bit.getName());
-        }
-        JSONObject itemsValue = new JSONObject();
-        itemsValue.put(ENUM, enumValues);
-        property.put(ITEMS_KEY, itemsValue);
-    }
-
-    /**
-     *
-     * @param unionType
-     * @param property
-     * @throws JSONException
-     */
-    private void processUnionType(final UnionTypeDefinition unionType, final JSONObject property) throws JSONException {
-
-        StringBuilder type = new StringBuilder();
-        for (TypeDefinition<?> typeDef : unionType.getTypes()) {
-            if (type.length() > 0) {
-                type.append(" or ");
-            }
-            type.append(YANG_TYPE_TO_JSON_TYPE_MAPPING.get(typeDef.getClass()));
-        }
-
-        property.put(TYPE_KEY, type);
-    }
-
-    /**
-     * Helper method to generate a pre-filled JSON schema object.
-     *
-     * @return
-     * @throws JSONException
-     */
-    private JSONObject getSchemaTemplate() throws JSONException {
-        JSONObject schemaJSON = new JSONObject();
-        schemaJSON.put(SCHEMA_KEY, SCHEMA_URL);
-
-        return schemaJSON;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/jaxrs/ApiDocApplication.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/jaxrs/ApiDocApplication.java
deleted file mode 100644 (file)
index e833c61..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.jaxrs;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.ws.rs.core.Application;
-
-import org.opendaylight.controller.sal.rest.doc.impl.ApiDocServiceImpl;
-
-public class ApiDocApplication extends Application {
-    @Override
-    public Set<Object> getSingletons() {
-        Set<Object> singletons = new HashSet<>();
-        singletons.add(ApiDocServiceImpl.getInstance());
-        singletons.add(new JaxbContextResolver());
-        return singletons;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/jaxrs/JaxbContextResolver.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/jaxrs/JaxbContextResolver.java
deleted file mode 100644 (file)
index 66fc80f..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.jaxrs;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.ext.ContextResolver;
-import javax.ws.rs.ext.Provider;
-
-import org.opendaylight.controller.sal.rest.doc.swagger.ApiDeclaration;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jsonorg.JsonOrgModule;
-
-@Provider
-@Consumes(MediaType.APPLICATION_JSON)
-@Produces(MediaType.APPLICATION_JSON)
-public class JaxbContextResolver implements ContextResolver<ObjectMapper> {
-
-    private final ObjectMapper ctx;
-
-    public JaxbContextResolver() {
-        ctx = new ObjectMapper();
-        ctx.registerModule(new JsonOrgModule());
-        ctx.getSerializationConfig().withSerializationInclusion(JsonInclude.Include.ALWAYS);
-    }
-
-    @Override
-    public ObjectMapper getContext(Class<?> aClass) {
-
-        if (ApiDeclaration.class.isAssignableFrom(aClass)) {
-            return ctx;
-        }
-
-        return null;// must return null so that jax-rs can continue context
-                    // search
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/model/builder/OperationBuilder.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/model/builder/OperationBuilder.java
deleted file mode 100644 (file)
index 88ca3bc..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.model.builder;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.opendaylight.controller.sal.rest.doc.swagger.Operation;
-import org.opendaylight.controller.sal.rest.doc.swagger.Parameter;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-
-public final class OperationBuilder {
-
-    public static final String OPERATIONAL = "(operational)";
-    public static final String CONFIG = "(config)";
-
-    public static final List<String> CONSUMES_PUT_POST = new ArrayList<>();
-    static {
-        CONSUMES_PUT_POST.add("application/json");
-        CONSUMES_PUT_POST.add("application/xml");
-    }
-
-    public static class Get {
-
-        protected Operation spec;
-        protected DataSchemaNode schemaNode;
-        private static final String METHOD_NAME = "GET";
-
-        public Get(DataSchemaNode node, boolean isConfig) {
-            this.schemaNode = node;
-            spec = new Operation();
-            spec.setMethod(METHOD_NAME);
-            spec.setNickname(METHOD_NAME + "-" + node.getQName().getLocalName());
-            spec.setType((isConfig ? CONFIG : OPERATIONAL) + node.getQName().getLocalName());
-            spec.setNotes(node.getDescription());
-        }
-
-        public Get pathParams(List<Parameter> params) {
-            List<Parameter> pathParameters = new ArrayList<>(params);
-            spec.setParameters(pathParameters);
-            return this;
-        }
-
-        public Operation build() {
-            return spec;
-        }
-    }
-
-    public static class Put {
-        protected Operation spec;
-        protected String nodeName;
-        private static final String METHOD_NAME = "PUT";
-
-        public Put(String nodeName, final String description) {
-            this.nodeName = nodeName;
-            spec = new Operation();
-            spec.setType(CONFIG + nodeName);
-            spec.setNotes(description);
-            spec.setConsumes(CONSUMES_PUT_POST);
-        }
-
-        public Put pathParams(List<Parameter> params) {
-            List<Parameter> parameters = new ArrayList<>(params);
-            Parameter payload = new Parameter();
-            payload.setParamType("body");
-            payload.setType(CONFIG + nodeName);
-            parameters.add(payload);
-            spec.setParameters(parameters);
-            return this;
-        }
-
-        public Operation build() {
-            spec.setMethod(METHOD_NAME);
-            spec.setNickname(METHOD_NAME + "-" + nodeName);
-            return spec;
-        }
-    }
-
-    public static final class Post extends Put {
-
-        public static final String METHOD_NAME = "POST";
-        private final DataNodeContainer dataNodeContainer;
-
-        public Post(final String nodeName, final String description, final DataNodeContainer dataNodeContainer) {
-            super(nodeName, description);
-            this.dataNodeContainer = dataNodeContainer;
-            spec.setType(CONFIG + nodeName + METHOD_NAME);
-            spec.setConsumes(CONSUMES_PUT_POST);
-        }
-
-        @Override
-        public Operation build() {
-            spec.setMethod(METHOD_NAME);
-            spec.setNickname(METHOD_NAME + "-" + nodeName);
-            return spec;
-        }
-
-        @Override
-        public Put pathParams(List<Parameter> params) {
-            List<Parameter> parameters = new ArrayList<>(params);
-            for (DataSchemaNode node : dataNodeContainer.getChildNodes()) {
-                if (node instanceof ListSchemaNode || node instanceof ContainerSchemaNode) {
-                    Parameter payload = new Parameter();
-                    payload.setParamType("body");
-                    payload.setType(CONFIG + node.getQName().getLocalName());
-                    payload.setName("**"+CONFIG + node.getQName().getLocalName());
-                    parameters.add(payload);
-                }
-            }
-            spec.setParameters(parameters);
-            return this;
-
-        }
-
-        public Post summary(final String summary) {
-            spec.setSummary(summary);
-            return this;
-        }
-    }
-
-    public static final class Delete extends Get {
-        private static final String METHOD_NAME = "DELETE";
-
-        public Delete(DataSchemaNode node) {
-            super(node, false);
-        }
-
-        @Override
-        public Operation build() {
-            spec.setMethod(METHOD_NAME);
-            spec.setNickname(METHOD_NAME + "-" + schemaNode.getQName().getLocalName());
-            spec.setType(null);
-            return spec;
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/mountpoints/MountPointSwagger.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/mountpoints/MountPointSwagger.java
deleted file mode 100644 (file)
index e20e8a7..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright (c) 2014 Brocade Communications 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.sal.rest.doc.mountpoints;
-
-import com.google.common.base.Optional;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.TreeMap;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.concurrent.atomic.AtomicReference;
-import javax.ws.rs.core.UriInfo;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.sal.core.api.model.SchemaService;
-import org.opendaylight.controller.sal.core.api.mount.MountProvisionListener;
-import org.opendaylight.controller.sal.rest.doc.impl.BaseYangSwaggerGenerator;
-import org.opendaylight.controller.sal.rest.doc.swagger.Api;
-import org.opendaylight.controller.sal.rest.doc.swagger.ApiDeclaration;
-import org.opendaylight.controller.sal.rest.doc.swagger.Operation;
-import org.opendaylight.controller.sal.rest.doc.swagger.Resource;
-import org.opendaylight.controller.sal.rest.doc.swagger.ResourceList;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
-public class MountPointSwagger extends BaseYangSwaggerGenerator implements MountProvisionListener {
-
-    private static final String DATASTORES_REVISION = "-";
-    private static final String DATASTORES_LABEL = "Datastores";
-
-    private DOMMountPointService mountService;
-    private final Map<YangInstanceIdentifier, Long> instanceIdToLongId = new TreeMap<>(
-            new Comparator<YangInstanceIdentifier>() {
-                @Override
-                public int compare(final YangInstanceIdentifier o1, final YangInstanceIdentifier o2) {
-                    return o1.toString().compareToIgnoreCase(o2.toString());
-                }
-            });
-    private final Map<Long, YangInstanceIdentifier> longIdToInstanceId = new HashMap<>();
-    private final Object lock = new Object();
-
-    private final AtomicLong idKey = new AtomicLong(0);
-
-    private static AtomicReference<MountPointSwagger> selfRef = new AtomicReference<>();
-    private SchemaService globalSchema;
-
-    public Map<String, Long> getInstanceIdentifiers() {
-        Map<String, Long> urlToId = new HashMap<>();
-        synchronized (lock) {
-            SchemaContext context = globalSchema.getGlobalContext();
-            for (Entry<YangInstanceIdentifier, Long> entry : instanceIdToLongId.entrySet()) {
-                String modName = findModuleName(entry.getKey(), context);
-                urlToId.put(generateUrlPrefixFromInstanceID(entry.getKey(), modName),
-                        entry.getValue());
-            }
-        }
-        return urlToId;
-    }
-
-    public void setGlobalSchema(final SchemaService globalSchema) {
-        this.globalSchema = globalSchema;
-    }
-
-    private String findModuleName(final YangInstanceIdentifier id, final SchemaContext context) {
-        PathArgument rootQName = id.getPathArguments().iterator().next();
-        for (Module mod : context.getModules()) {
-            if (mod.getDataChildByName(rootQName.getNodeType()) != null) {
-                return mod.getName();
-            }
-        }
-        return null;
-    }
-
-    private String generateUrlPrefixFromInstanceID(final YangInstanceIdentifier key, final String moduleName) {
-        StringBuilder builder = new StringBuilder();
-        if (moduleName != null) {
-            builder.append(moduleName);
-            builder.append(':');
-        }
-        for (PathArgument arg : key.getPathArguments()) {
-            String name = arg.getNodeType().getLocalName();
-            if (arg instanceof YangInstanceIdentifier.NodeIdentifierWithPredicates) {
-                NodeIdentifierWithPredicates nodeId = (NodeIdentifierWithPredicates) arg;
-                for (Entry<QName, Object> entry : nodeId.getKeyValues().entrySet()) {
-                    builder.append(entry.getValue()).append('/');
-                }
-            } else {
-                builder.append(name);
-                builder.append('/');
-            }
-        }
-        return builder.toString();
-    }
-
-    private String getYangMountUrl(final YangInstanceIdentifier key) {
-        String modName = findModuleName(key, globalSchema.getGlobalContext());
-        return generateUrlPrefixFromInstanceID(key, modName) + "yang-ext:mount/";
-    }
-
-    public ResourceList getResourceList(final UriInfo uriInfo, final Long id) {
-        YangInstanceIdentifier iid = getInstanceId(id);
-        if (iid == null) {
-            return null; // indicating not found.
-        }
-        SchemaContext context = getSchemaContext(iid);
-        String urlPrefix = getYangMountUrl(iid);
-        if (context == null) {
-            return createResourceList();
-        }
-        List<Resource> resources = new LinkedList<>();
-        Resource dataStores = new Resource();
-        dataStores.setDescription("Provides methods for accessing the data stores.");
-        dataStores.setPath(generatePath(uriInfo, DATASTORES_LABEL, DATASTORES_REVISION));
-        resources.add(dataStores);
-        ResourceList list = super.getResourceListing(uriInfo, context, urlPrefix);
-        resources.addAll(list.getApis());
-        list.setApis(resources);
-        return list;
-    }
-
-    private YangInstanceIdentifier getInstanceId(final Long id) {
-        YangInstanceIdentifier instanceId;
-        synchronized (lock) {
-            instanceId = longIdToInstanceId.get(id);
-        }
-        return instanceId;
-    }
-
-    private SchemaContext getSchemaContext(final YangInstanceIdentifier id) {
-
-        if (id == null) {
-            return null;
-        }
-
-        Optional<DOMMountPoint> mountPoint = mountService.getMountPoint(id);
-        if (!mountPoint.isPresent()) {
-            return null;
-        }
-
-        SchemaContext context = mountPoint.get().getSchemaContext();
-        if (context == null) {
-            return null;
-        }
-        return context;
-    }
-
-    public ApiDeclaration getMountPointApi(final UriInfo uriInfo, final Long id, final String module, final String revision) {
-        YangInstanceIdentifier iid = getInstanceId(id);
-        SchemaContext context = getSchemaContext(iid);
-        String urlPrefix = getYangMountUrl(iid);
-        if (context == null) {
-            return null;
-        }
-
-        if (DATASTORES_LABEL.equals(module) && DATASTORES_REVISION.equals(revision)) {
-            return generateDataStoreApiDoc(uriInfo, urlPrefix);
-        }
-        return super.getApiDeclaration(module, revision, uriInfo, context, urlPrefix);
-    }
-
-    private ApiDeclaration generateDataStoreApiDoc(final UriInfo uriInfo, final String context) {
-
-        ApiDeclaration declaration = super.createApiDeclaration(createBasePathFromUriInfo(uriInfo));
-        List<Api> apis = new LinkedList<>();
-        apis.add(createGetApi("config",
-                "Queries the config (startup) datastore on the mounted hosted.", context));
-        apis.add(createGetApi("operational",
-                "Queries the operational (running) datastore on the mounted hosted.", context));
-        apis.add(createGetApi("operations",
-                "Queries the available operations (RPC calls) on the mounted hosted.", context));
-        declaration.setApis(apis);
-        return declaration;
-
-    }
-
-    private Api createGetApi(final String datastore, final String note, final String context) {
-        Operation getConfig = new Operation();
-        getConfig.setMethod("GET");
-        getConfig.setNickname("GET " + datastore);
-        getConfig.setNotes(note);
-
-        Api api = new Api();
-        api.setPath(getDataStorePath("/" + datastore + "/", context));
-        api.setOperations(Collections.singletonList(getConfig));
-
-        return api;
-    }
-
-    public void setMountService(final DOMMountPointService mountService) {
-        this.mountService = mountService;
-    }
-
-    @Override
-    public void onMountPointCreated(final YangInstanceIdentifier path) {
-        synchronized (lock) {
-            Long idLong = idKey.incrementAndGet();
-            instanceIdToLongId.put(path, idLong);
-            longIdToInstanceId.put(idLong, path);
-        }
-    }
-
-    @Override
-    public void onMountPointRemoved(final YangInstanceIdentifier path) {
-        synchronized (lock) {
-            Long id = instanceIdToLongId.remove(path);
-            longIdToInstanceId.remove(id);
-        }
-    }
-
-    public static MountPointSwagger getInstance() {
-        MountPointSwagger swagger = selfRef.get();
-        if (swagger == null) {
-            selfRef.compareAndSet(null, new MountPointSwagger());
-            swagger = selfRef.get();
-        }
-        return swagger;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/Api.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/Api.java
deleted file mode 100644 (file)
index cc45875..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.swagger;
-
-import java.util.List;
-
-/**
- * Implementation of swagger spec (see <a href=
- * "https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#522-api-object"
- * > https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#522-api
- * -object</a>)
- */
-public class Api {
-
-    private String path;
-    private List<Operation> operations;
-
-    public String getPath() {
-        return path;
-    }
-
-    public void setPath(String path) {
-        this.path = path;
-    }
-
-    public List<Operation> getOperations() {
-        return operations;
-    }
-
-    public void setOperations(List<Operation> operations) {
-        this.operations = operations;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/ApiDeclaration.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/ApiDeclaration.java
deleted file mode 100644 (file)
index 4ba0ab2..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.swagger;
-
-import java.util.List;
-
-import org.json.JSONObject;
-
-/**
- * Implementation of swagger spec (see <a href=
- * "https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#52-api-declaration"
- * > https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#52-api-
- * declaration</a>)
- */
-public class ApiDeclaration {
-    private String apiVersion;
-    private String swaggerVersion;
-    private String basePath;
-    private String resourcePath;
-    private List<String> produces;
-    private List<Api> apis;
-    private JSONObject models;
-
-    public JSONObject getModels() {
-        return models;
-    }
-
-    public void setModels(JSONObject models) {
-        this.models = models;
-    }
-
-    public String getApiVersion() {
-        return apiVersion;
-    }
-
-    public void setApiVersion(String apiVersion) {
-        this.apiVersion = apiVersion;
-    }
-
-    public String getSwaggerVersion() {
-        return swaggerVersion;
-    }
-
-    public void setSwaggerVersion(String swaggerVersion) {
-        this.swaggerVersion = swaggerVersion;
-    }
-
-    public String getBasePath() {
-        return basePath;
-    }
-
-    public void setBasePath(String basePath) {
-        this.basePath = basePath;
-    }
-
-    public String getResourcePath() {
-        return resourcePath;
-    }
-
-    public void setResourcePath(String resourcePath) {
-        this.resourcePath = resourcePath;
-    }
-
-    public List<String> getProduces() {
-        return produces;
-    }
-
-    public void setProduces(List<String> produces) {
-        this.produces = produces;
-    }
-
-    public List<Api> getApis() {
-        return apis;
-    }
-
-    public void setApis(List<Api> apis) {
-        this.apis = apis;
-    }
-
-    public boolean hasApi() {
-        return (apis != null && !apis.isEmpty());
-    }
-
-    public boolean hasModel() {
-        return (models != null && models.length() > 0);
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/Operation.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/Operation.java
deleted file mode 100644 (file)
index ba0c796..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.swagger;
-
-import java.util.List;
-
-/**
- * Implementation of swagger spec (see <a href=
- * "https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#523-operation-object"
- * > https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#523-
- * operation-object</a>)
- */
-public class Operation {
-    private String method;
-    private String summary;
-    private String notes;
-    private String type;
-    private String nickname;
-    private List<String> consumes;
-    private List<Parameter> parameters;
-    private List<ResponseMessage> responseMessages;
-
-    public String getMethod() {
-        return method;
-    }
-
-    public void setMethod(String method) {
-        this.method = method;
-    }
-
-    public String getSummary() {
-        return summary;
-    }
-
-    public void setSummary(String summary) {
-        this.summary = summary;
-    }
-
-    public String getNotes() {
-        return notes;
-    }
-
-    public void setNotes(String notes) {
-        this.notes = notes;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getNickname() {
-        return nickname;
-    }
-
-    public void setNickname(String nickname) {
-        this.nickname = nickname;
-    }
-
-    public List<String> getConsumes() {
-        return consumes;
-    }
-
-    public void setConsumes(List<String> consumes) {
-        this.consumes = consumes;
-    }
-
-    public List<Parameter> getParameters() {
-        return parameters;
-    }
-
-    public void setParameters(List<Parameter> parameters) {
-        this.parameters = parameters;
-    }
-
-    public List<ResponseMessage> getResponseMessages() {
-        return responseMessages;
-    }
-
-    public void setResponseMessages(List<ResponseMessage> responseMessages) {
-        this.responseMessages = responseMessages;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/Parameter.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/Parameter.java
deleted file mode 100644 (file)
index 41cec4d..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.swagger;
-
-/**
- * Implementation of swagger spec (see <a href=
- * "https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#524-parameter-object"
- * > https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#524-
- * parameter-object</a>)
- */
-public class Parameter {
-    private String name;
-    private String description;
-    private boolean required;
-    private String type;
-    private String paramType;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public boolean isRequired() {
-        return required;
-    }
-
-    public void setRequired(boolean required) {
-        this.required = required;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getParamType() {
-        return paramType;
-    }
-
-    public void setParamType(String paramType) {
-        this.paramType = paramType;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/Resource.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/Resource.java
deleted file mode 100644 (file)
index cb5b200..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.swagger;
-
-/**
- * Implementation of swagger spec (see <a href=
- * "https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#512-resource-object"
- * > https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#512-
- * resource-object</a>)
- */
-public class Resource {
-    private String path;
-    private String description;
-
-    public String getPath() {
-        return path;
-    }
-
-    public void setPath(String path) {
-        this.path = path;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/ResourceList.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/ResourceList.java
deleted file mode 100644 (file)
index 48362dc..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.swagger;
-
-import java.util.List;
-
-/**
- * Implementation of swagger spec (see <a href=
- * "https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#51-resource-listing"
- * > https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#51-
- * resource-listing</a>)
- */
-public class ResourceList {
-    private String apiVersion;
-    private String swaggerVersion;
-    private List<Resource> apis;
-
-    public String getApiVersion() {
-        return apiVersion;
-    }
-
-    public void setApiVersion(String apiVersion) {
-        this.apiVersion = apiVersion;
-    }
-
-    public String getSwaggerVersion() {
-        return swaggerVersion;
-    }
-
-    public void setSwaggerVersion(String swaggerVersion) {
-        this.swaggerVersion = swaggerVersion;
-    }
-
-    public List<Resource> getApis() {
-        return apis;
-    }
-
-    public void setApis(List<Resource> apis) {
-        this.apis = apis;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/ResponseMessage.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/swagger/ResponseMessage.java
deleted file mode 100644 (file)
index d82e1f4..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.swagger;
-
-/**
- * Implementation of swagger spec (see <a href=
- * "https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#525-response-message-object"
- * > https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md#525-
- * response-message-object</a>)
- */
-public class ResponseMessage {
-    private int code;
-    private String message;
-
-    public int getCode() {
-        return code;
-    }
-
-    public void setCode(int code) {
-        this.code = code;
-    }
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/util/RestDocgenUtil.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/util/RestDocgenUtil.java
deleted file mode 100644 (file)
index 9e1d82a..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.rest.doc.util;
-
-import java.net.URI;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-
-public class RestDocgenUtil {
-
-    private RestDocgenUtil() {
-    }
-
-    private static Map<URI, Map<Date, Module>> namespaceAndRevisionToModule = new HashMap<URI, Map<Date, Module>>();
-
-    /**
-     * Resolve path argument name for {@code node}.
-     *
-     * The name can contain also prefix which consists of module name followed by colon. The module prefix is presented
-     * if namespace of {@code node} and its parent is different. In other cases only name of {@code node} is returned.
-     *
-     * @return name of {@code node}
-     */
-    public static String resolvePathArgumentsName(final SchemaNode node, final SchemaContext schemaContext) {
-        Iterable<QName> schemaPath = node.getPath().getPathTowardsRoot();
-        Iterator<QName> it = schemaPath.iterator();
-        QName nodeQName = it.next();
-
-        QName parentQName = null;
-        if (it.hasNext()) {
-            parentQName = it.next();
-        }
-        if (isEqualNamespaceAndRevision(parentQName, nodeQName)) {
-            return node.getQName().getLocalName();
-        } else {
-            return resolveFullNameFromNode(node, schemaContext);
-        }
-    }
-
-    private synchronized static String resolveFullNameFromNode(final SchemaNode node, final SchemaContext schemaContext) {
-        final URI namespace = node.getQName().getNamespace();
-        final Date revision = node.getQName().getRevision();
-
-        Map<Date, Module> revisionToModule = namespaceAndRevisionToModule.get(namespace);
-        if (revisionToModule == null) {
-            revisionToModule = new HashMap<>();
-            namespaceAndRevisionToModule.put(namespace, revisionToModule);
-        }
-        Module module = revisionToModule.get(revision);
-        if (module == null) {
-            module = schemaContext.findModuleByNamespaceAndRevision(namespace, revision);
-            revisionToModule.put(revision, module);
-        }
-        if (module != null) {
-            return module.getName() + ":" + node.getQName().getLocalName();
-        }
-        return node.getQName().getLocalName();
-    }
-
-    public static String resolveNodesName(final SchemaNode node, final Module module, final SchemaContext schemaContext) {
-        if (node.getQName().getNamespace().equals(module.getQNameModule().getNamespace())
-                && node.getQName().getRevision().equals(module.getQNameModule().getRevision())) {
-            return node.getQName().getLocalName();
-        } else {
-            return resolveFullNameFromNode(node, schemaContext);
-        }
-    }
-
-    private static boolean isEqualNamespaceAndRevision(QName parentQName, QName nodeQName) {
-        if (parentQName == null) {
-            if (nodeQName == null) {
-                return true;
-            }
-            return false;
-        }
-        return parentQName.getNamespace().equals(nodeQName.getNamespace())
-                && parentQName.getRevision().equals(nodeQName.getRevision());
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/README.txt b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/README.txt
deleted file mode 100644 (file)
index 7e72e83..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-This component offers Swagger documentation of the RestConf APIs.
-
-This Swagger documentation can be accessed in two ways:
-I. Running server
-Open a browser and go to http://<host>:8181/apidoc/explorer/index.html
-
-II. Static documentation generation
-By adding a reference to the StaticDocGenerator class in any pom.xml,
-static documentation will be generated.  This static documentation will
-document all the RestConf APIs for the YANG files in that artifact and
-all the YANG files in that artifact's dependencies.
-
-In order to generate static documentation for all resources,
-this should be placed in a downstream project.
-
-Below is what you would add to the <plugins> section under <build>.
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <version>2.8</version>
-        <executions>
-          <execution>
-            <id>unpack-static-documentation</id>
-            <goals>
-              <goal>unpack-dependencies</goal>
-            </goals>
-            <phase>generate-resources</phase>
-            <configuration>
-              <outputDirectory>${project.build.directory}/generated-resources/swagger-api-documentation</outputDirectory>
-              <includeArtifactIds>sal-rest-docgen</includeArtifactIds>
-              <includes>**/explorer/css/**/*, **/explorer/images/**/*, **/explorer/lib/**/*, **/explorer/static/**/*,</includes>
-              <excludeTransitive>true</excludeTransitive>
-              <ignorePermissions>false</ignorePermissions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.opendaylight.yangtools</groupId>
-        <artifactId>yang-maven-plugin</artifactId>
-        <version>${yangtools.version}</version>
-        <dependencies>
-          <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>maven-sal-api-gen-plugin</artifactId>
-            <version>${yangtools.version}</version>
-            <type>jar</type>
-          </dependency>
-          <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>yang-binding</artifactId>
-            <version>${yangtools.version}</version>
-            <type>jar</type>
-          </dependency>
-          <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>sal-rest-docgen</artifactId>
-            <version>${mdsal.version}</version>
-            <type>jar</type>
-          </dependency>
-        </dependencies>
-        <executions>
-          <execution>
-            <goals>
-              <goal>generate-sources</goal>
-            </goals>
-            <configuration>
-              <yangFilesRootDir>src</yangFilesRootDir>
-              <codeGenerators>
-                <generator>
-                  <codeGeneratorClass>org.opendaylight.controller.sal.rest.doc.impl.StaticDocGenerator</codeGeneratorClass>
-                  <outputBaseDir>${project.build.directory}/generated-resources/swagger-api-documentation/explorer/static</outputBaseDir>
-                </generator>
-              </codeGenerators>
-              <inspectDependencies>true</inspectDependencies>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/WEB-INF/web.xml b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/WEB-INF/web.xml
deleted file mode 100644 (file)
index 0e660ea..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
-    version="3.0">
-    <welcome-file-list>
-        <welcome-file>index.html</welcome-file>
-    </welcome-file-list>
-    <servlet>
-        <servlet-name>JAXRSApiDoc</servlet-name>
-        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
-        <init-param>
-            <param-name>javax.ws.rs.Application</param-name>
-            <param-value>org.opendaylight.controller.sal.rest.doc.jaxrs.ApiDocApplication</param-value>
-        </init-param>
-        <!-- AAA Auth Filter -->
-        <init-param>
-            <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
-            <param-value> org.opendaylight.aaa.sts.TokenAuthFilter</param-value>
-        </init-param>
-        <load-on-startup>1</load-on-startup>
-    </servlet>
-
-    <servlet-mapping>
-        <servlet-name>JAXRSApiDoc</servlet-name>
-        <url-pattern>/apis/*</url-pattern>
-    </servlet-mapping>
-
-    <filter>
-        <filter-name>cross-origin-api-doc</filter-name>
-        <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
-        <init-param>
-            <param-name>allowedOrigins</param-name>
-            <param-value>*</param-value>
-        </init-param>
-        <init-param>
-            <param-name>allowedMethods</param-name>
-            <param-value>GET,POST,OPTIONS,DELETE,PUT,HEAD</param-value>
-        </init-param>
-        <init-param>
-            <param-name>allowedHeaders</param-name>
-            <param-value>origin, content-type, accept, authorization</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <filter-name>cross-origin-api-doc</filter-name>
-        <url-pattern>/apis/*</url-pattern>
-    </filter-mapping>
-
-
-    <security-constraint>
-      <web-resource-collection>
-        <web-resource-name>API Doc</web-resource-name>
-        <url-pattern>/*</url-pattern>
-      </web-resource-collection>
-    </security-constraint>
-
-</web-app>
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/highlight.default.css b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/highlight.default.css
deleted file mode 100644 (file)
index e417fc1..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-
-Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
-
-*/
-
-pre code {
-  display: block; padding: 0.5em;
-  background: #F0F0F0;
-}
-
-pre code,
-pre .subst,
-pre .tag .title,
-pre .lisp .title,
-pre .clojure .built_in,
-pre .nginx .title {
-  color: black;
-}
-
-pre .string,
-pre .title,
-pre .constant,
-pre .parent,
-pre .tag .value,
-pre .rules .value,
-pre .rules .value .number,
-pre .preprocessor,
-pre .ruby .symbol,
-pre .ruby .symbol .string,
-pre .aggregate,
-pre .template_tag,
-pre .django .variable,
-pre .smalltalk .class,
-pre .addition,
-pre .flow,
-pre .stream,
-pre .bash .variable,
-pre .apache .tag,
-pre .apache .cbracket,
-pre .tex .command,
-pre .tex .special,
-pre .erlang_repl .function_or_atom,
-pre .markdown .header {
-  color: #800;
-}
-
-pre .comment,
-pre .annotation,
-pre .template_comment,
-pre .diff .header,
-pre .chunk,
-pre .markdown .blockquote {
-  color: #888;
-}
-
-pre .number,
-pre .date,
-pre .regexp,
-pre .literal,
-pre .smalltalk .symbol,
-pre .smalltalk .char,
-pre .go .constant,
-pre .change,
-pre .markdown .bullet,
-pre .markdown .link_url {
-  color: #080;
-}
-
-pre .label,
-pre .javadoc,
-pre .ruby .string,
-pre .decorator,
-pre .filter .argument,
-pre .localvars,
-pre .array,
-pre .attr_selector,
-pre .important,
-pre .pseudo,
-pre .pi,
-pre .doctype,
-pre .deletion,
-pre .envvar,
-pre .shebang,
-pre .apache .sqbracket,
-pre .nginx .built_in,
-pre .tex .formula,
-pre .erlang_repl .reserved,
-pre .prompt,
-pre .markdown .link_label,
-pre .vhdl .attribute,
-pre .clojure .attribute,
-pre .coffeescript .property {
-  color: #88F
-}
-
-pre .keyword,
-pre .id,
-pre .phpdoc,
-pre .title,
-pre .built_in,
-pre .aggregate,
-pre .css .tag,
-pre .javadoctag,
-pre .phpdoc,
-pre .yardoctag,
-pre .smalltalk .class,
-pre .winutils,
-pre .bash .variable,
-pre .apache .tag,
-pre .go .typename,
-pre .tex .command,
-pre .markdown .strong,
-pre .request,
-pre .status {
-  font-weight: bold;
-}
-
-pre .markdown .emphasis {
-  font-style: italic;
-}
-
-pre .nginx .built_in {
-  font-weight: normal;
-}
-
-pre .coffeescript .javascript,
-pre .javascript .xml,
-pre .tex .formula,
-pre .xml .javascript,
-pre .xml .vbscript,
-pre .xml .css,
-pre .xml .cdata {
-  opacity: 0.5;
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/screen.css b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/screen.css
deleted file mode 100644 (file)
index 1627ecd..0000000
+++ /dev/null
@@ -1,1070 +0,0 @@
-/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 */
-html,
-body,
-div,
-span,
-applet,
-object,
-iframe,
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-p,
-blockquote,
-pre,
-a,
-abbr,
-acronym,
-address,
-big,
-cite,
-code,
-del,
-dfn,
-em,
-img,
-ins,
-kbd,
-q,
-s,
-samp,
-small,
-strike,
-strong,
-sub,
-sup,
-tt,
-var,
-b,
-u,
-i,
-center,
-dl,
-dt,
-dd,
-ol,
-ul,
-li,
-fieldset,
-form,
-label,
-legend,
-table,
-caption,
-tbody,
-tfoot,
-thead,
-tr,
-th,
-td,
-article,
-aside,
-canvas,
-details,
-embed,
-figure,
-figcaption,
-footer,
-header,
-hgroup,
-menu,
-nav,
-output,
-ruby,
-section,
-summary,
-time,
-mark,
-audio,
-video {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-size: 100%;
-  font: inherit;
-  vertical-align: baseline;
-}
-/* HTML5 display-role reset for older browsers */
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-menu,
-nav,
-section {
-  display: block;
-}
-body {
-  line-height: 1;
-}
-ol,
-ul {
-  list-style: none;
-}
-blockquote,
-q {
-  quotes: none;
-}
-blockquote:before,
-blockquote:after,
-q:before,
-q:after {
-  content: '';
-  content: none;
-}
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-.swagger-ui-wrap {
-  line-height: 1;
-  font-family: "Droid Sans", sans-serif;
-  max-width: 960px;
-  margin-left: auto;
-  margin-right: auto;
-}
-.swagger-ui-wrap b,
-.swagger-ui-wrap strong {
-  font-family: "Droid Sans", sans-serif;
-  font-weight: bold;
-}
-.swagger-ui-wrap q,
-.swagger-ui-wrap blockquote {
-  quotes: none;
-}
-.swagger-ui-wrap p {
-  line-height: 1.4em;
-  padding: 0 0 10px;
-  color: #333333;
-}
-.swagger-ui-wrap q:before,
-.swagger-ui-wrap q:after,
-.swagger-ui-wrap blockquote:before,
-.swagger-ui-wrap blockquote:after {
-  content: none;
-}
-.swagger-ui-wrap .heading_with_menu h1,
-.swagger-ui-wrap .heading_with_menu h2,
-.swagger-ui-wrap .heading_with_menu h3,
-.swagger-ui-wrap .heading_with_menu h4,
-.swagger-ui-wrap .heading_with_menu h5,
-.swagger-ui-wrap .heading_with_menu h6 {
-  display: block;
-  clear: none;
-  float: left;
-  -moz-box-sizing: border-box;
-  -webkit-box-sizing: border-box;
-  -ms-box-sizing: border-box;
-  box-sizing: border-box;
-  width: 60%;
-}
-.swagger-ui-wrap table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-.swagger-ui-wrap table thead tr th {
-  padding: 5px;
-  font-size: 0.9em;
-  color: #666666;
-  border-bottom: 1px solid #999999;
-}
-.swagger-ui-wrap table tbody tr:last-child td {
-  border-bottom: none;
-}
-.swagger-ui-wrap table tbody tr.offset {
-  background-color: #f0f0f0;
-}
-.swagger-ui-wrap table tbody tr td {
-  padding: 6px;
-  font-size: 0.9em;
-  border-bottom: 1px solid #cccccc;
-  vertical-align: top;
-  line-height: 1.3em;
-}
-.swagger-ui-wrap ol {
-  margin: 0px 0 10px;
-  padding: 0 0 0 18px;
-  list-style-type: decimal;
-}
-.swagger-ui-wrap ol li {
-  padding: 5px 0px;
-  font-size: 0.9em;
-  color: #333333;
-}
-.swagger-ui-wrap ol,
-.swagger-ui-wrap ul {
-  list-style: none;
-}
-.swagger-ui-wrap h1 a,
-.swagger-ui-wrap h2 a,
-.swagger-ui-wrap h3 a,
-.swagger-ui-wrap h4 a,
-.swagger-ui-wrap h5 a,
-.swagger-ui-wrap h6 a {
-  text-decoration: none;
-}
-.swagger-ui-wrap h1 a:hover,
-.swagger-ui-wrap h2 a:hover,
-.swagger-ui-wrap h3 a:hover,
-.swagger-ui-wrap h4 a:hover,
-.swagger-ui-wrap h5 a:hover,
-.swagger-ui-wrap h6 a:hover {
-  text-decoration: underline;
-}
-.swagger-ui-wrap h1 span.divider,
-.swagger-ui-wrap h2 span.divider,
-.swagger-ui-wrap h3 span.divider,
-.swagger-ui-wrap h4 span.divider,
-.swagger-ui-wrap h5 span.divider,
-.swagger-ui-wrap h6 span.divider {
-  color: #aaaaaa;
-}
-.swagger-ui-wrap a {
-  color: #547f00;
-}
-.swagger-ui-wrap a img {
-  border: none;
-}
-.swagger-ui-wrap article,
-.swagger-ui-wrap aside,
-.swagger-ui-wrap details,
-.swagger-ui-wrap figcaption,
-.swagger-ui-wrap figure,
-.swagger-ui-wrap footer,
-.swagger-ui-wrap header,
-.swagger-ui-wrap hgroup,
-.swagger-ui-wrap menu,
-.swagger-ui-wrap nav,
-.swagger-ui-wrap section,
-.swagger-ui-wrap summary {
-  display: block;
-}
-.swagger-ui-wrap pre {
-  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;
-  background-color: #fcf6db;
-  border: 1px solid #e5e0c6;
-  padding: 10px;
-}
-.swagger-ui-wrap pre code {
-  line-height: 1.6em;
-  background: none;
-}
-.swagger-ui-wrap .content > .content-type > div > label {
-  clear: both;
-  display: block;
-  color: #0F6AB4;
-  font-size: 1.1em;
-  margin: 0;
-  padding: 15px 0 5px;
-}
-.swagger-ui-wrap .content pre {
-  font-size: 12px;
-  margin-top: 5px;
-  padding: 5px;
-}
-.swagger-ui-wrap .icon-btn {
-  cursor: pointer;
-}
-.swagger-ui-wrap .info_title {
-  padding-bottom: 10px;
-  font-weight: bold;
-  font-size: 25px;
-}
-.swagger-ui-wrap p.big,
-.swagger-ui-wrap div.big p {
-  font-size: 1em;
-  margin-bottom: 10px;
-}
-.swagger-ui-wrap form.fullwidth ol li.string input,
-.swagger-ui-wrap form.fullwidth ol li.url input,
-.swagger-ui-wrap form.fullwidth ol li.text textarea,
-.swagger-ui-wrap form.fullwidth ol li.numeric input {
-  width: 500px !important;
-}
-.swagger-ui-wrap .info_license {
-  padding-bottom: 5px;
-}
-.swagger-ui-wrap .info_tos {
-  padding-bottom: 5px;
-}
-.swagger-ui-wrap .message-fail {
-  color: #cc0000;
-}
-.swagger-ui-wrap .info_contact {
-  padding-bottom: 5px;
-}
-.swagger-ui-wrap .info_description {
-  padding-bottom: 10px;
-  font-size: 15px;
-}
-.swagger-ui-wrap .markdown ol li,
-.swagger-ui-wrap .markdown ul li {
-  padding: 3px 0px;
-  line-height: 1.4em;
-  color: #333333;
-}
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input,
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input,
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input {
-  display: block;
-  padding: 4px;
-  width: auto;
-  clear: both;
-}
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input.title,
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input.title,
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input.title {
-  font-size: 1.3em;
-}
-.swagger-ui-wrap table.fullwidth {
-  width: 100%;
-}
-.swagger-ui-wrap .model-signature {
-  font-family: "Droid Sans", sans-serif;
-  font-size: 1em;
-  line-height: 1.5em;
-}
-.swagger-ui-wrap .model-signature .signature-nav a {
-  text-decoration: none;
-  color: #AAA;
-}
-.swagger-ui-wrap .model-signature .signature-nav a:hover {
-  text-decoration: underline;
-  color: black;
-}
-.swagger-ui-wrap .model-signature .signature-nav .selected {
-  color: black;
-  text-decoration: none;
-}
-.swagger-ui-wrap .model-signature .propType {
-  color: #5555aa;
-}
-.swagger-ui-wrap .model-signature pre:hover {
-  background-color: #ffffdd;
-}
-.swagger-ui-wrap .model-signature pre {
-  font-size: .85em;
-  line-height: 1.2em;
-  overflow: auto;
-  max-height: 200px;
-  cursor: pointer;
-}
-.swagger-ui-wrap .model-signature ul.signature-nav {
-  display: block;
-  margin: 0;
-  padding: 0;
-}
-.swagger-ui-wrap .model-signature ul.signature-nav li:last-child {
-  padding-right: 0;
-  border-right: none;
-}
-.swagger-ui-wrap .model-signature ul.signature-nav li {
-  float: left;
-  margin: 0 5px 5px 0;
-  padding: 2px 5px 2px 0;
-  border-right: 1px solid #ddd;
-}
-.swagger-ui-wrap .model-signature .propOpt {
-  color: #555;
-}
-.swagger-ui-wrap .model-signature .snippet small {
-  font-size: 0.75em;
-}
-.swagger-ui-wrap .model-signature .propOptKey {
-  font-style: italic;
-}
-.swagger-ui-wrap .model-signature .description .strong {
-  font-weight: bold;
-  color: #000;
-  font-size: .9em;
-}
-.swagger-ui-wrap .model-signature .description div {
-  font-size: 0.9em;
-  line-height: 1.5em;
-  margin-left: 1em;
-}
-.swagger-ui-wrap .model-signature .description .stronger {
-  font-weight: bold;
-  color: #000;
-}
-.swagger-ui-wrap .model-signature .propName {
-  font-weight: bold;
-}
-.swagger-ui-wrap .model-signature .signature-container {
-  clear: both;
-}
-.swagger-ui-wrap .body-textarea {
-  width: 300px;
-  height: 100px;
-  border: 1px solid #aaa;
-}
-.swagger-ui-wrap .markdown p code,
-.swagger-ui-wrap .markdown li code {
-  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;
-  background-color: #f0f0f0;
-  color: black;
-  padding: 1px 3px;
-}
-.swagger-ui-wrap .required {
-  font-weight: bold;
-}
-.swagger-ui-wrap input.parameter {
-  width: 300px;
-  border: 1px solid #aaa;
-}
-.swagger-ui-wrap h1 {
-  color: black;
-  font-size: 1.5em;
-  line-height: 1.3em;
-  padding: 10px 0 10px 0;
-  font-family: "Droid Sans", sans-serif;
-  font-weight: bold;
-}
-.swagger-ui-wrap .heading_with_menu {
-  float: none;
-  clear: both;
-  overflow: hidden;
-  display: block;
-}
-.swagger-ui-wrap .heading_with_menu ul {
-  display: block;
-  clear: none;
-  float: right;
-  -moz-box-sizing: border-box;
-  -webkit-box-sizing: border-box;
-  -ms-box-sizing: border-box;
-  box-sizing: border-box;
-  margin-top: 10px;
-}
-.swagger-ui-wrap h2 {
-  color: black;
-  font-size: 1.3em;
-  padding: 10px 0 10px 0;
-}
-.swagger-ui-wrap h2 a {
-  color: black;
-}
-.swagger-ui-wrap h2 span.sub {
-  font-size: 0.7em;
-  color: #999999;
-  font-style: italic;
-}
-.swagger-ui-wrap h2 span.sub a {
-  color: #777777;
-}
-.swagger-ui-wrap span.weak {
-  color: #666666;
-}
-.swagger-ui-wrap .message-success {
-  color: #89BF04;
-}
-.swagger-ui-wrap caption,
-.swagger-ui-wrap th,
-.swagger-ui-wrap td {
-  text-align: left;
-  font-weight: normal;
-  vertical-align: middle;
-}
-.swagger-ui-wrap .code {
-  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;
-}
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li.text textarea {
-  font-family: "Droid Sans", sans-serif;
-  height: 250px;
-  padding: 4px;
-  display: block;
-  clear: both;
-}
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li.select select {
-  display: block;
-  clear: both;
-}
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean {
-  float: none;
-  clear: both;
-  overflow: hidden;
-  display: block;
-}
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean label {
-  display: block;
-  float: left;
-  clear: none;
-  margin: 0;
-  padding: 0;
-}
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean input {
-  display: block;
-  float: left;
-  clear: none;
-  margin: 0 5px 0 0;
-}
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li.required label {
-  color: black;
-}
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li label {
-  display: block;
-  clear: both;
-  width: auto;
-  padding: 0 0 3px;
-  color: #666666;
-}
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li label abbr {
-  padding-left: 3px;
-  color: #888888;
-}
-.swagger-ui-wrap form.formtastic fieldset.inputs ol li p.inline-hints {
-  margin-left: 0;
-  font-style: italic;
-  font-size: 0.9em;
-  margin: 0;
-}
-.swagger-ui-wrap form.formtastic fieldset.buttons {
-  margin: 0;
-  padding: 0;
-}
-.swagger-ui-wrap span.blank,
-.swagger-ui-wrap span.empty {
-  color: #888888;
-  font-style: italic;
-}
-.swagger-ui-wrap .markdown h3 {
-  color: #547f00;
-}
-.swagger-ui-wrap .markdown h4 {
-  color: #666666;
-}
-.swagger-ui-wrap .markdown pre {
-  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;
-  background-color: #fcf6db;
-  border: 1px solid #e5e0c6;
-  padding: 10px;
-  margin: 0 0 10px 0;
-}
-.swagger-ui-wrap .markdown pre code {
-  line-height: 1.6em;
-}
-.swagger-ui-wrap div.gist {
-  margin: 20px 0 25px 0 !important;
-}
-.swagger-ui-wrap ul#resources {
-  font-family: "Droid Sans", sans-serif;
-  font-size: 0.9em;
-}
-.swagger-ui-wrap ul#resources li.resource {
-  border-bottom: 1px solid #dddddd;
-}
-.swagger-ui-wrap ul#resources li.resource:hover div.heading h2 a,
-.swagger-ui-wrap ul#resources li.resource.active div.heading h2 a {
-  color: black;
-}
-.swagger-ui-wrap ul#resources li.resource:hover div.heading ul.options li a,
-.swagger-ui-wrap ul#resources li.resource.active div.heading ul.options li a {
-  color: #555555;
-}
-.swagger-ui-wrap ul#resources li.resource:last-child {
-  border-bottom: none;
-}
-.swagger-ui-wrap ul#resources li.resource div.heading {
-  border: 1px solid transparent;
-  float: none;
-  clear: both;
-  overflow: hidden;
-  display: block;
-}
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options {
-  overflow: hidden;
-  padding: 0;
-  display: block;
-  clear: none;
-  float: right;
-  margin: 14px 10px 0 0;
-}
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options li {
-  float: left;
-  clear: none;
-  margin: 0;
-  padding: 2px 10px;
-  border-right: 1px solid #dddddd;
-  color: #666666;
-  font-size: 0.9em;
-}
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options li a {
-  color: #aaaaaa;
-  text-decoration: none;
-}
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover {
-  text-decoration: underline;
-  color: black;
-}
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover,
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:active,
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options li a.active {
-  text-decoration: underline;
-}
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options li:first-child,
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options li.first {
-  padding-left: 0;
-}
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options li:last-child,
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options li.last {
-  padding-right: 0;
-  border-right: none;
-}
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options:first-child,
-.swagger-ui-wrap ul#resources li.resource div.heading ul.options.first {
-  padding-left: 0;
-}
-.swagger-ui-wrap ul#resources li.resource div.heading h2 {
-  color: #999999;
-  padding-left: 0;
-  display: block;
-  clear: none;
-  float: left;
-  font-family: "Droid Sans", sans-serif;
-  font-weight: bold;
-}
-.swagger-ui-wrap ul#resources li.resource div.heading h2 a {
-  color: #999999;
-}
-.swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover {
-  color: black;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation {
-  float: none;
-  clear: both;
-  overflow: hidden;
-  display: block;
-  margin: 0 0 10px;
-  padding: 0;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading {
-  float: none;
-  clear: both;
-  overflow: hidden;
-  display: block;
-  margin: 0;
-  padding: 0;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 {
-  display: block;
-  clear: none;
-  float: left;
-  width: auto;
-  margin: 0;
-  padding: 0;
-  line-height: 1.1em;
-  color: black;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path {
-  padding-left: 10px;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a {
-  color: black;
-  text-decoration: none;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a:hover {
-  text-decoration: underline;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.http_method a {
-  text-transform: uppercase;
-  text-decoration: none;
-  color: white;
-  display: inline-block;
-  width: 50px;
-  font-size: 0.7em;
-  text-align: center;
-  padding: 7px 0 4px;
-  -moz-border-radius: 2px;
-  -webkit-border-radius: 2px;
-  -o-border-radius: 2px;
-  -ms-border-radius: 2px;
-  -khtml-border-radius: 2px;
-  border-radius: 2px;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span {
-  margin: 0;
-  padding: 0;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options {
-  overflow: hidden;
-  padding: 0;
-  display: block;
-  clear: none;
-  float: right;
-  margin: 6px 10px 0 0;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li {
-  float: left;
-  clear: none;
-  margin: 0;
-  padding: 2px 10px;
-  font-size: 0.9em;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a {
-  text-decoration: none;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content {
-  border-top: none;
-  padding: 10px;
-  -moz-border-radius-bottomleft: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -o-border-bottom-left-radius: 6px;
-  -ms-border-bottom-left-radius: 6px;
-  -khtml-border-bottom-left-radius: 6px;
-  border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -o-border-bottom-right-radius: 6px;
-  -ms-border-bottom-right-radius: 6px;
-  -khtml-border-bottom-right-radius: 6px;
-  border-bottom-right-radius: 6px;
-  margin: 0 0 20px;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content h4 {
-  font-size: 1.1em;
-  margin: 0;
-  padding: 15px 0 5px;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header {
-  float: none;
-  clear: both;
-  overflow: hidden;
-  display: block;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header a {
-  padding: 4px 0 0 10px;
-  display: inline-block;
-  font-size: 0.9em;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header img {
-  display: block;
-  clear: none;
-  float: right;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header input.submit {
-  display: block;
-  clear: none;
-  float: left;
-  padding: 6px 8px;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form input[type='text'].error {
-  outline: 2px solid black;
-  outline-color: #cc0000;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.response div.block pre {
-  font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace;
-  padding: 10px;
-  font-size: 0.9em;
-  max-height: 400px;
-  overflow-y: auto;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading {
-  background-color: #f9f2e9;
-  border: 1px solid #f0e0ca;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading h3 span.http_method a {
-  background-color: #c5862b;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li {
-  border-right: 1px solid #dddddd;
-  border-right-color: #f0e0ca;
-  color: #c5862b;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li a {
-  color: #c5862b;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content {
-  background-color: #faf5ee;
-  border: 1px solid #f0e0ca;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content h4 {
-  color: #c5862b;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content div.sandbox_header a {
-  color: #dcb67f;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading {
-  background-color: #fcffcd;
-  border: 1px solid black;
-  border-color: #ffd20f;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading h3 span.http_method a {
-  text-transform: uppercase;
-  background-color: #ffd20f;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li {
-  border-right: 1px solid #dddddd;
-  border-right-color: #ffd20f;
-  color: #ffd20f;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li a {
-  color: #ffd20f;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content {
-  background-color: #fcffcd;
-  border: 1px solid black;
-  border-color: #ffd20f;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content h4 {
-  color: #ffd20f;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content div.sandbox_header a {
-  color: #6fc992;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading {
-  background-color: #f5e8e8;
-  border: 1px solid #e8c6c7;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading h3 span.http_method a {
-  text-transform: uppercase;
-  background-color: #a41e22;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li {
-  border-right: 1px solid #dddddd;
-  border-right-color: #e8c6c7;
-  color: #a41e22;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li a {
-  color: #a41e22;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content {
-  background-color: #f7eded;
-  border: 1px solid #e8c6c7;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content h4 {
-  color: #a41e22;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content div.sandbox_header a {
-  color: #c8787a;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading {
-  background-color: #e7f6ec;
-  border: 1px solid #c3e8d1;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading h3 span.http_method a {
-  background-color: #10a54a;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li {
-  border-right: 1px solid #dddddd;
-  border-right-color: #c3e8d1;
-  color: #10a54a;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li a {
-  color: #10a54a;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content {
-  background-color: #ebf7f0;
-  border: 1px solid #c3e8d1;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content h4 {
-  color: #10a54a;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content div.sandbox_header a {
-  color: #6fc992;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading {
-  background-color: #FCE9E3;
-  border: 1px solid #F5D5C3;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading h3 span.http_method a {
-  background-color: #D38042;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li {
-  border-right: 1px solid #dddddd;
-  border-right-color: #f0cecb;
-  color: #D38042;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li a {
-  color: #D38042;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content {
-  background-color: #faf0ef;
-  border: 1px solid #f0cecb;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content h4 {
-  color: #D38042;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content div.sandbox_header a {
-  color: #dcb67f;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading {
-  background-color: #e7f0f7;
-  border: 1px solid #c3d9ec;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading h3 span.http_method a {
-  background-color: #0f6ab4;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li {
-  border-right: 1px solid #dddddd;
-  border-right-color: #c3d9ec;
-  color: #0f6ab4;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li a {
-  color: #0f6ab4;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content {
-  background-color: #ebf3f9;
-  border: 1px solid #c3d9ec;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content h4 {
-  color: #0f6ab4;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content div.sandbox_header a {
-  color: #6fa5d2;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content {
-  border-top: none;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li:last-child,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li:last-child,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li:last-child,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li:last-child,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li:last-child,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li:last-child,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li.last,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li.last,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li.last,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li.last,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li.last,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li.last {
-  padding-right: 0;
-  border-right: none;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:hover,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:active,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a.active {
-  text-decoration: underline;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li:first-child,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li.first {
-  padding-left: 0;
-}
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations:first-child,
-.swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations.first {
-  padding-left: 0;
-}
-.swagger-ui-wrap p#colophon {
-  margin: 0 15px 40px 15px;
-  padding: 10px 0;
-  font-size: 0.8em;
-  border-top: 1px solid #dddddd;
-  font-family: "Droid Sans", sans-serif;
-  color: #999999;
-  font-style: italic;
-}
-.swagger-ui-wrap p#colophon a {
-  text-decoration: none;
-  color: #547f00;
-}
-.swagger-ui-wrap h3 {
-  color: black;
-  font-size: 1.1em;
-  padding: 10px 0 10px 0;
-}
-.swagger-ui-wrap .markdown ol,
-.swagger-ui-wrap .markdown ul {
-  font-family: "Droid Sans", sans-serif;
-  margin: 5px 0 10px;
-  padding: 0 0 0 18px;
-  list-style-type: disc;
-}
-.swagger-ui-wrap form.form_box {
-  background-color: #ebf3f9;
-  border: 1px solid #c3d9ec;
-  padding: 10px;
-}
-.swagger-ui-wrap form.form_box label {
-  color: #0f6ab4 !important;
-}
-.swagger-ui-wrap form.form_box input[type=submit] {
-  display: block;
-  padding: 10px;
-}
-.swagger-ui-wrap form.form_box p.weak {
-  font-size: 0.8em;
-}
-.swagger-ui-wrap form.form_box p {
-  font-size: 0.9em;
-  padding: 0 0 15px;
-  color: #7e7b6d;
-}
-.swagger-ui-wrap form.form_box p a {
-  color: #646257;
-}
-.swagger-ui-wrap form.form_box p strong {
-  color: black;
-}
-#header {
-  background-color: #89bf04;
-  padding: 14px;
-}
-#header a#logo {
-  font-size: 1.5em;
-  font-weight: bold;
-  text-decoration: none;
-  background: transparent url(../images/logo_small.png) no-repeat left center;
-  padding: 20px 0 20px 40px;
-  color: white;
-}
-#header form#api_selector {
-  display: block;
-  clear: none;
-  float: right;
-}
-#header form#api_selector .input {
-  display: block;
-  clear: none;
-  float: left;
-  margin: 0 10px 0 0;
-}
-#header form#api_selector .input input#input_apiKey {
-  width: 200px;
-}
-#header form#api_selector .input input#input_baseUrl {
-  width: 400px;
-}
-#header form#api_selector .input a#explore {
-  display: block;
-  text-decoration: none;
-  font-weight: bold;
-  padding: 6px 8px;
-  font-size: 0.9em;
-  color: white;
-  background-color: #547f00;
-  -moz-border-radius: 4px;
-  -webkit-border-radius: 4px;
-  -o-border-radius: 4px;
-  -ms-border-radius: 4px;
-  -khtml-border-radius: 4px;
-  border-radius: 4px;
-}
-#header form#api_selector .input a#explore:hover {
-  background-color: #547f00;
-}
-#header form#api_selector .input input {
-  font-size: 0.9em;
-  padding: 3px;
-  margin: 0;
-}
-#content_message {
-  margin: 10px 15px;
-  font-style: italic;
-  color: #999999;
-}
-#message-bar {
-  min-height: 30px;
-  text-align: center;
-  padding-top: 10px;
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/animated-overlay.gif b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/animated-overlay.gif
deleted file mode 100644 (file)
index d441f75..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/animated-overlay.gif and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
deleted file mode 100644 (file)
index a28d678..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
deleted file mode 100644 (file)
index ab561d2..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
deleted file mode 100644 (file)
index be5c4c6..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
deleted file mode 100644 (file)
index c955a2c..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
deleted file mode 100644 (file)
index de7c46d..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
deleted file mode 100644 (file)
index 6cc858e..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
deleted file mode 100644 (file)
index 653f494..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
deleted file mode 100644 (file)
index 663b112..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
deleted file mode 100644 (file)
index ee995d9..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_222222_256x240.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_222222_256x240.png
deleted file mode 100644 (file)
index c1cb117..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_222222_256x240.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_228ef1_256x240.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_228ef1_256x240.png
deleted file mode 100644 (file)
index 3a0140c..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_228ef1_256x240.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_ef8c08_256x240.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_ef8c08_256x240.png
deleted file mode 100644 (file)
index 036ee07..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_ef8c08_256x240.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_ffd27a_256x240.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_ffd27a_256x240.png
deleted file mode 100644 (file)
index 8b6c058..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_ffd27a_256x240.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_ffffff_256x240.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_ffffff_256x240.png
deleted file mode 100644 (file)
index 4f624bb..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/images/ui-icons_ffffff_256x240.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/jquery-ui-1.10.4.custom.css b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/jquery-ui-1.10.4.custom.css
deleted file mode 100644 (file)
index a9aa9c4..0000000
+++ /dev/null
@@ -1,1178 +0,0 @@
-/*! jQuery UI - v1.10.4 - 2014-06-03
-* http://jqueryui.com
-* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
-* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden {
-       display: none;
-}
-.ui-helper-hidden-accessible {
-       border: 0;
-       clip: rect(0 0 0 0);
-       height: 1px;
-       margin: -1px;
-       overflow: hidden;
-       padding: 0;
-       position: absolute;
-       width: 1px;
-}
-.ui-helper-reset {
-       margin: 0;
-       padding: 0;
-       border: 0;
-       outline: 0;
-       line-height: 1.3;
-       text-decoration: none;
-       font-size: 100%;
-       list-style: none;
-}
-.ui-helper-clearfix:before,
-.ui-helper-clearfix:after {
-       content: "";
-       display: table;
-       border-collapse: collapse;
-}
-.ui-helper-clearfix:after {
-       clear: both;
-}
-.ui-helper-clearfix {
-       min-height: 0; /* support: IE7 */
-}
-.ui-helper-zfix {
-       width: 100%;
-       height: 100%;
-       top: 0;
-       left: 0;
-       position: absolute;
-       opacity: 0;
-       filter:Alpha(Opacity=0);
-}
-
-.ui-front {
-       z-index: 100;
-}
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled {
-       cursor: default !important;
-}
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
-       display: block;
-       text-indent: -99999px;
-       overflow: hidden;
-       background-repeat: no-repeat;
-}
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay {
-       position: fixed;
-       top: 0;
-       left: 0;
-       width: 100%;
-       height: 100%;
-}
-.ui-resizable {
-       position: relative;
-}
-.ui-resizable-handle {
-       position: absolute;
-       font-size: 0.1px;
-       display: block;
-}
-.ui-resizable-disabled .ui-resizable-handle,
-.ui-resizable-autohide .ui-resizable-handle {
-       display: none;
-}
-.ui-resizable-n {
-       cursor: n-resize;
-       height: 7px;
-       width: 100%;
-       top: -5px;
-       left: 0;
-}
-.ui-resizable-s {
-       cursor: s-resize;
-       height: 7px;
-       width: 100%;
-       bottom: -5px;
-       left: 0;
-}
-.ui-resizable-e {
-       cursor: e-resize;
-       width: 7px;
-       right: -5px;
-       top: 0;
-       height: 100%;
-}
-.ui-resizable-w {
-       cursor: w-resize;
-       width: 7px;
-       left: -5px;
-       top: 0;
-       height: 100%;
-}
-.ui-resizable-se {
-       cursor: se-resize;
-       width: 12px;
-       height: 12px;
-       right: 1px;
-       bottom: 1px;
-}
-.ui-resizable-sw {
-       cursor: sw-resize;
-       width: 9px;
-       height: 9px;
-       left: -5px;
-       bottom: -5px;
-}
-.ui-resizable-nw {
-       cursor: nw-resize;
-       width: 9px;
-       height: 9px;
-       left: -5px;
-       top: -5px;
-}
-.ui-resizable-ne {
-       cursor: ne-resize;
-       width: 9px;
-       height: 9px;
-       right: -5px;
-       top: -5px;
-}
-.ui-selectable-helper {
-       position: absolute;
-       z-index: 100;
-       border: 1px dotted black;
-}
-.ui-accordion .ui-accordion-header {
-       display: block;
-       cursor: pointer;
-       position: relative;
-       margin-top: 2px;
-       padding: .5em .5em .5em .7em;
-       min-height: 0; /* support: IE7 */
-}
-.ui-accordion .ui-accordion-icons {
-       padding-left: 2.2em;
-}
-.ui-accordion .ui-accordion-noicons {
-       padding-left: .7em;
-}
-.ui-accordion .ui-accordion-icons .ui-accordion-icons {
-       padding-left: 2.2em;
-}
-.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
-       position: absolute;
-       left: .5em;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-accordion .ui-accordion-content {
-       padding: 1em 2.2em;
-       border-top: 0;
-       overflow: auto;
-}
-.ui-autocomplete {
-       position: absolute;
-       top: 0;
-       left: 0;
-       cursor: default;
-}
-.ui-button {
-       display: inline-block;
-       position: relative;
-       padding: 0;
-       line-height: normal;
-       margin-right: .1em;
-       cursor: pointer;
-       vertical-align: middle;
-       text-align: center;
-       overflow: visible; /* removes extra width in IE */
-}
-.ui-button,
-.ui-button:link,
-.ui-button:visited,
-.ui-button:hover,
-.ui-button:active {
-       text-decoration: none;
-}
-/* to make room for the icon, a width needs to be set here */
-.ui-button-icon-only {
-       width: 2.2em;
-}
-/* button elements seem to need a little more width */
-button.ui-button-icon-only {
-       width: 2.4em;
-}
-.ui-button-icons-only {
-       width: 3.4em;
-}
-button.ui-button-icons-only {
-       width: 3.7em;
-}
-
-/* button text element */
-.ui-button .ui-button-text {
-       display: block;
-       line-height: normal;
-}
-.ui-button-text-only .ui-button-text {
-       padding: .4em 1em;
-}
-.ui-button-icon-only .ui-button-text,
-.ui-button-icons-only .ui-button-text {
-       padding: .4em;
-       text-indent: -9999999px;
-}
-.ui-button-text-icon-primary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: .4em 1em .4em 2.1em;
-}
-.ui-button-text-icon-secondary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: .4em 2.1em .4em 1em;
-}
-.ui-button-text-icons .ui-button-text {
-       padding-left: 2.1em;
-       padding-right: 2.1em;
-}
-/* no icon support for input elements, provide padding by default */
-input.ui-button {
-       padding: .4em 1em;
-}
-
-/* button icon element(s) */
-.ui-button-icon-only .ui-icon,
-.ui-button-text-icon-primary .ui-icon,
-.ui-button-text-icon-secondary .ui-icon,
-.ui-button-text-icons .ui-icon,
-.ui-button-icons-only .ui-icon {
-       position: absolute;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-button-icon-only .ui-icon {
-       left: 50%;
-       margin-left: -8px;
-}
-.ui-button-text-icon-primary .ui-button-icon-primary,
-.ui-button-text-icons .ui-button-icon-primary,
-.ui-button-icons-only .ui-button-icon-primary {
-       left: .5em;
-}
-.ui-button-text-icon-secondary .ui-button-icon-secondary,
-.ui-button-text-icons .ui-button-icon-secondary,
-.ui-button-icons-only .ui-button-icon-secondary {
-       right: .5em;
-}
-
-/* button sets */
-.ui-buttonset {
-       margin-right: 7px;
-}
-.ui-buttonset .ui-button {
-       margin-left: 0;
-       margin-right: -.3em;
-}
-
-/* workarounds */
-/* reset extra padding in Firefox, see h5bp.com/l */
-input.ui-button::-moz-focus-inner,
-button.ui-button::-moz-focus-inner {
-       border: 0;
-       padding: 0;
-}
-.ui-datepicker {
-       width: 17em;
-       padding: .2em .2em 0;
-       display: none;
-}
-.ui-datepicker .ui-datepicker-header {
-       position: relative;
-       padding: .2em 0;
-}
-.ui-datepicker .ui-datepicker-prev,
-.ui-datepicker .ui-datepicker-next {
-       position: absolute;
-       top: 2px;
-       width: 1.8em;
-       height: 1.8em;
-}
-.ui-datepicker .ui-datepicker-prev-hover,
-.ui-datepicker .ui-datepicker-next-hover {
-       top: 1px;
-}
-.ui-datepicker .ui-datepicker-prev {
-       left: 2px;
-}
-.ui-datepicker .ui-datepicker-next {
-       right: 2px;
-}
-.ui-datepicker .ui-datepicker-prev-hover {
-       left: 1px;
-}
-.ui-datepicker .ui-datepicker-next-hover {
-       right: 1px;
-}
-.ui-datepicker .ui-datepicker-prev span,
-.ui-datepicker .ui-datepicker-next span {
-       display: block;
-       position: absolute;
-       left: 50%;
-       margin-left: -8px;
-       top: 50%;
-       margin-top: -8px;
-}
-.ui-datepicker .ui-datepicker-title {
-       margin: 0 2.3em;
-       line-height: 1.8em;
-       text-align: center;
-}
-.ui-datepicker .ui-datepicker-title select {
-       font-size: 1em;
-       margin: 1px 0;
-}
-.ui-datepicker select.ui-datepicker-month,
-.ui-datepicker select.ui-datepicker-year {
-       width: 49%;
-}
-.ui-datepicker table {
-       width: 100%;
-       font-size: .9em;
-       border-collapse: collapse;
-       margin: 0 0 .4em;
-}
-.ui-datepicker th {
-       padding: .7em .3em;
-       text-align: center;
-       font-weight: bold;
-       border: 0;
-}
-.ui-datepicker td {
-       border: 0;
-       padding: 1px;
-}
-.ui-datepicker td span,
-.ui-datepicker td a {
-       display: block;
-       padding: .2em;
-       text-align: right;
-       text-decoration: none;
-}
-.ui-datepicker .ui-datepicker-buttonpane {
-       background-image: none;
-       margin: .7em 0 0 0;
-       padding: 0 .2em;
-       border-left: 0;
-       border-right: 0;
-       border-bottom: 0;
-}
-.ui-datepicker .ui-datepicker-buttonpane button {
-       float: right;
-       margin: .5em .2em .4em;
-       cursor: pointer;
-       padding: .2em .6em .3em .6em;
-       width: auto;
-       overflow: visible;
-}
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
-       float: left;
-}
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi {
-       width: auto;
-}
-.ui-datepicker-multi .ui-datepicker-group {
-       float: left;
-}
-.ui-datepicker-multi .ui-datepicker-group table {
-       width: 95%;
-       margin: 0 auto .4em;
-}
-.ui-datepicker-multi-2 .ui-datepicker-group {
-       width: 50%;
-}
-.ui-datepicker-multi-3 .ui-datepicker-group {
-       width: 33.3%;
-}
-.ui-datepicker-multi-4 .ui-datepicker-group {
-       width: 25%;
-}
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
-       border-left-width: 0;
-}
-.ui-datepicker-multi .ui-datepicker-buttonpane {
-       clear: left;
-}
-.ui-datepicker-row-break {
-       clear: both;
-       width: 100%;
-       font-size: 0;
-}
-
-/* RTL support */
-.ui-datepicker-rtl {
-       direction: rtl;
-}
-.ui-datepicker-rtl .ui-datepicker-prev {
-       right: 2px;
-       left: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-next {
-       left: 2px;
-       right: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-prev:hover {
-       right: 1px;
-       left: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-next:hover {
-       left: 1px;
-       right: auto;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane {
-       clear: right;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane button {
-       float: left;
-}
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
-.ui-datepicker-rtl .ui-datepicker-group {
-       float: right;
-}
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
-       border-right-width: 0;
-       border-left-width: 1px;
-}
-.ui-dialog {
-       overflow: hidden;
-       position: absolute;
-       top: 0;
-       left: 0;
-       padding: .2em;
-       outline: 0;
-}
-.ui-dialog .ui-dialog-titlebar {
-       padding: .4em 1em;
-       position: relative;
-}
-.ui-dialog .ui-dialog-title {
-       float: left;
-       margin: .1em 0;
-       white-space: nowrap;
-       width: 90%;
-       overflow: hidden;
-       text-overflow: ellipsis;
-}
-.ui-dialog .ui-dialog-titlebar-close {
-       position: absolute;
-       right: .3em;
-       top: 50%;
-       width: 20px;
-       margin: -10px 0 0 0;
-       padding: 1px;
-       height: 20px;
-}
-.ui-dialog .ui-dialog-content {
-       position: relative;
-       border: 0;
-       padding: .5em 1em;
-       background: none;
-       overflow: auto;
-}
-.ui-dialog .ui-dialog-buttonpane {
-       text-align: left;
-       border-width: 1px 0 0 0;
-       background-image: none;
-       margin-top: .5em;
-       padding: .3em 1em .5em .4em;
-}
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
-       float: right;
-}
-.ui-dialog .ui-dialog-buttonpane button {
-       margin: .5em .4em .5em 0;
-       cursor: pointer;
-}
-.ui-dialog .ui-resizable-se {
-       width: 12px;
-       height: 12px;
-       right: -5px;
-       bottom: -5px;
-       background-position: 16px 16px;
-}
-.ui-draggable .ui-dialog-titlebar {
-       cursor: move;
-}
-.ui-menu {
-       list-style: none;
-       padding: 2px;
-       margin: 0;
-       display: block;
-       outline: none;
-}
-.ui-menu .ui-menu {
-       margin-top: -3px;
-       position: absolute;
-}
-.ui-menu .ui-menu-item {
-       margin: 0;
-       padding: 0;
-       width: 100%;
-       /* support: IE10, see #8844 */
-       list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
-}
-.ui-menu .ui-menu-divider {
-       margin: 5px -2px 5px -2px;
-       height: 0;
-       font-size: 0;
-       line-height: 0;
-       border-width: 1px 0 0 0;
-}
-.ui-menu .ui-menu-item a {
-       text-decoration: none;
-       display: block;
-       padding: 2px .4em;
-       line-height: 1.5;
-       min-height: 0; /* support: IE7 */
-       font-weight: normal;
-}
-.ui-menu .ui-menu-item a.ui-state-focus,
-.ui-menu .ui-menu-item a.ui-state-active {
-       font-weight: normal;
-       margin: -1px;
-}
-
-.ui-menu .ui-state-disabled {
-       font-weight: normal;
-       margin: .4em 0 .2em;
-       line-height: 1.5;
-}
-.ui-menu .ui-state-disabled a {
-       cursor: default;
-}
-
-/* icon support */
-.ui-menu-icons {
-       position: relative;
-}
-.ui-menu-icons .ui-menu-item a {
-       position: relative;
-       padding-left: 2em;
-}
-
-/* left-aligned */
-.ui-menu .ui-icon {
-       position: absolute;
-       top: .2em;
-       left: .2em;
-}
-
-/* right-aligned */
-.ui-menu .ui-menu-icon {
-       position: static;
-       float: right;
-}
-.ui-progressbar {
-       height: 2em;
-       text-align: left;
-       overflow: hidden;
-}
-.ui-progressbar .ui-progressbar-value {
-       margin: -1px;
-       height: 100%;
-}
-.ui-progressbar .ui-progressbar-overlay {
-       background: url("images/animated-overlay.gif");
-       height: 100%;
-       filter: alpha(opacity=25);
-       opacity: 0.25;
-}
-.ui-progressbar-indeterminate .ui-progressbar-value {
-       background-image: none;
-}
-.ui-slider {
-       position: relative;
-       text-align: left;
-}
-.ui-slider .ui-slider-handle {
-       position: absolute;
-       z-index: 2;
-       width: 1.2em;
-       height: 1.2em;
-       cursor: default;
-}
-.ui-slider .ui-slider-range {
-       position: absolute;
-       z-index: 1;
-       font-size: .7em;
-       display: block;
-       border: 0;
-       background-position: 0 0;
-}
-
-/* For IE8 - See #6727 */
-.ui-slider.ui-state-disabled .ui-slider-handle,
-.ui-slider.ui-state-disabled .ui-slider-range {
-       filter: inherit;
-}
-
-.ui-slider-horizontal {
-       height: .8em;
-}
-.ui-slider-horizontal .ui-slider-handle {
-       top: -.3em;
-       margin-left: -.6em;
-}
-.ui-slider-horizontal .ui-slider-range {
-       top: 0;
-       height: 100%;
-}
-.ui-slider-horizontal .ui-slider-range-min {
-       left: 0;
-}
-.ui-slider-horizontal .ui-slider-range-max {
-       right: 0;
-}
-
-.ui-slider-vertical {
-       width: .8em;
-       height: 100px;
-}
-.ui-slider-vertical .ui-slider-handle {
-       left: -.3em;
-       margin-left: 0;
-       margin-bottom: -.6em;
-}
-.ui-slider-vertical .ui-slider-range {
-       left: 0;
-       width: 100%;
-}
-.ui-slider-vertical .ui-slider-range-min {
-       bottom: 0;
-}
-.ui-slider-vertical .ui-slider-range-max {
-       top: 0;
-}
-.ui-spinner {
-       position: relative;
-       display: inline-block;
-       overflow: hidden;
-       padding: 0;
-       vertical-align: middle;
-}
-.ui-spinner-input {
-       border: none;
-       background: none;
-       color: inherit;
-       padding: 0;
-       margin: .2em 0;
-       vertical-align: middle;
-       margin-left: .4em;
-       margin-right: 22px;
-}
-.ui-spinner-button {
-       width: 16px;
-       height: 50%;
-       font-size: .5em;
-       padding: 0;
-       margin: 0;
-       text-align: center;
-       position: absolute;
-       cursor: default;
-       display: block;
-       overflow: hidden;
-       right: 0;
-}
-/* more specificity required here to override default borders */
-.ui-spinner a.ui-spinner-button {
-       border-top: none;
-       border-bottom: none;
-       border-right: none;
-}
-/* vertically center icon */
-.ui-spinner .ui-icon {
-       position: absolute;
-       margin-top: -8px;
-       top: 50%;
-       left: 0;
-}
-.ui-spinner-up {
-       top: 0;
-}
-.ui-spinner-down {
-       bottom: 0;
-}
-
-/* TR overrides */
-.ui-spinner .ui-icon-triangle-1-s {
-       /* need to fix icons sprite */
-       background-position: -65px -16px;
-}
-.ui-tabs {
-       position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-       padding: .2em;
-}
-.ui-tabs .ui-tabs-nav {
-       margin: 0;
-       padding: .2em .2em 0;
-}
-.ui-tabs .ui-tabs-nav li {
-       list-style: none;
-       float: left;
-       position: relative;
-       top: 0;
-       margin: 1px .2em 0 0;
-       border-bottom-width: 0;
-       padding: 0;
-       white-space: nowrap;
-}
-.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
-       float: left;
-       padding: .5em 1em;
-       text-decoration: none;
-}
-.ui-tabs .ui-tabs-nav li.ui-tabs-active {
-       margin-bottom: -1px;
-       padding-bottom: 1px;
-}
-.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
-.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
-.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
-       cursor: text;
-}
-.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
-       cursor: pointer;
-}
-.ui-tabs .ui-tabs-panel {
-       display: block;
-       border-width: 0;
-       padding: 1em 1.4em;
-       background: none;
-}
-.ui-tooltip {
-       padding: 8px;
-       position: absolute;
-       z-index: 9999;
-       max-width: 300px;
-       -webkit-box-shadow: 0 0 5px #aaa;
-       box-shadow: 0 0 5px #aaa;
-}
-body .ui-tooltip {
-       border-width: 2px;
-}
-
-/* Component containers
-----------------------------------*/
-.ui-widget {
-       font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
-       font-size: 1.1em;
-}
-.ui-widget .ui-widget {
-       font-size: 1em;
-}
-.ui-widget input,
-.ui-widget select,
-.ui-widget textarea,
-.ui-widget button {
-       font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
-       font-size: 1em;
-}
-.ui-widget-content {
-       border: 1px solid #dddddd;
-       background: #eeeeee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;
-       color: #333333;
-}
-.ui-widget-content a {
-       color: #333333;
-}
-.ui-widget-header {
-       border: 1px solid #e78f08;
-       background: #f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;
-       color: #ffffff;
-       font-weight: bold;
-}
-.ui-widget-header a {
-       color: #ffffff;
-}
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default,
-.ui-widget-content .ui-state-default,
-.ui-widget-header .ui-state-default {
-       border: 1px solid #cccccc;
-       background: #f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;
-       font-weight: bold;
-       color: #1c94c4;
-}
-.ui-state-default a,
-.ui-state-default a:link,
-.ui-state-default a:visited {
-       color: #1c94c4;
-       text-decoration: none;
-}
-.ui-state-hover,
-.ui-widget-content .ui-state-hover,
-.ui-widget-header .ui-state-hover,
-.ui-state-focus,
-.ui-widget-content .ui-state-focus,
-.ui-widget-header .ui-state-focus {
-       border: 1px solid #fbcb09;
-       background: #fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;
-       font-weight: bold;
-       color: #c77405;
-}
-.ui-state-hover a,
-.ui-state-hover a:hover,
-.ui-state-hover a:link,
-.ui-state-hover a:visited,
-.ui-state-focus a,
-.ui-state-focus a:hover,
-.ui-state-focus a:link,
-.ui-state-focus a:visited {
-       color: #c77405;
-       text-decoration: none;
-}
-.ui-state-active,
-.ui-widget-content .ui-state-active,
-.ui-widget-header .ui-state-active {
-       border: 1px solid #fbd850;
-       background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
-       font-weight: bold;
-       color: #eb8f00;
-}
-.ui-state-active a,
-.ui-state-active a:link,
-.ui-state-active a:visited {
-       color: #eb8f00;
-       text-decoration: none;
-}
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight,
-.ui-widget-content .ui-state-highlight,
-.ui-widget-header .ui-state-highlight {
-       border: 1px solid #fed22f;
-       background: #ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;
-       color: #363636;
-}
-.ui-state-highlight a,
-.ui-widget-content .ui-state-highlight a,
-.ui-widget-header .ui-state-highlight a {
-       color: #363636;
-}
-.ui-state-error,
-.ui-widget-content .ui-state-error,
-.ui-widget-header .ui-state-error {
-       border: 1px solid #cd0a0a;
-       background: #b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;
-       color: #ffffff;
-}
-.ui-state-error a,
-.ui-widget-content .ui-state-error a,
-.ui-widget-header .ui-state-error a {
-       color: #ffffff;
-}
-.ui-state-error-text,
-.ui-widget-content .ui-state-error-text,
-.ui-widget-header .ui-state-error-text {
-       color: #ffffff;
-}
-.ui-priority-primary,
-.ui-widget-content .ui-priority-primary,
-.ui-widget-header .ui-priority-primary {
-       font-weight: bold;
-}
-.ui-priority-secondary,
-.ui-widget-content .ui-priority-secondary,
-.ui-widget-header .ui-priority-secondary {
-       opacity: .7;
-       filter:Alpha(Opacity=70);
-       font-weight: normal;
-}
-.ui-state-disabled,
-.ui-widget-content .ui-state-disabled,
-.ui-widget-header .ui-state-disabled {
-       opacity: .35;
-       filter:Alpha(Opacity=35);
-       background-image: none;
-}
-.ui-state-disabled .ui-icon {
-       filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
-}
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
-       width: 16px;
-       height: 16px;
-}
-.ui-icon,
-.ui-widget-content .ui-icon {
-       background-image: url("images/ui-icons_222222_256x240.png");
-}
-.ui-widget-header .ui-icon {
-       background-image: url("images/ui-icons_ffffff_256x240.png");
-}
-.ui-state-default .ui-icon {
-       background-image: url("images/ui-icons_ef8c08_256x240.png");
-}
-.ui-state-hover .ui-icon,
-.ui-state-focus .ui-icon {
-       background-image: url("images/ui-icons_ef8c08_256x240.png");
-}
-.ui-state-active .ui-icon {
-       background-image: url("images/ui-icons_ef8c08_256x240.png");
-}
-.ui-state-highlight .ui-icon {
-       background-image: url("images/ui-icons_228ef1_256x240.png");
-}
-.ui-state-error .ui-icon,
-.ui-state-error-text .ui-icon {
-       background-image: url("images/ui-icons_ffd27a_256x240.png");
-}
-
-/* positioning */
-.ui-icon-blank { background-position: 16px 16px; }
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-on { background-position: -96px -144px; }
-.ui-icon-radio-off { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-all,
-.ui-corner-top,
-.ui-corner-left,
-.ui-corner-tl {
-       border-top-left-radius: 4px;
-}
-.ui-corner-all,
-.ui-corner-top,
-.ui-corner-right,
-.ui-corner-tr {
-       border-top-right-radius: 4px;
-}
-.ui-corner-all,
-.ui-corner-bottom,
-.ui-corner-left,
-.ui-corner-bl {
-       border-bottom-left-radius: 4px;
-}
-.ui-corner-all,
-.ui-corner-bottom,
-.ui-corner-right,
-.ui-corner-br {
-       border-bottom-right-radius: 4px;
-}
-
-/* Overlays */
-.ui-widget-overlay {
-       background: #666666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;
-       opacity: .5;
-       filter: Alpha(Opacity=50);
-}
-.ui-widget-shadow {
-       margin: -5px 0 0 -5px;
-       padding: 5px;
-       background: #000000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;
-       opacity: .2;
-       filter: Alpha(Opacity=20);
-       border-radius: 5px;
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/jquery-ui-1.10.4.custom.min.css b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/css/ui-lightness/jquery-ui-1.10.4.custom.min.css
deleted file mode 100644 (file)
index b1f2f3c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*! jQuery UI - v1.10.4 - 2014-06-03
-* http://jqueryui.com
-* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
-* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
-
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/logo_small.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/logo_small.png
deleted file mode 100644 (file)
index 46c02e2..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/logo_small.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/pet_store_api.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/pet_store_api.png
deleted file mode 100644 (file)
index f9f9cd4..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/pet_store_api.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/throbber.gif b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/throbber.gif
deleted file mode 100644 (file)
index 0639388..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/throbber.gif and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/wordnik_api.png b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/wordnik_api.png
deleted file mode 100644 (file)
index dca4f14..0000000
Binary files a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/images/wordnik_api.png and /dev/null differ
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/index.html b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/index.html
deleted file mode 100644 (file)
index f12616b..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html>\r
-<html>\r
-<head>\r
-<title>RestConf Documentation</title>\r
-<link href='//fonts.googleapis.com/css?family=Droid+Sans:400,700'\r
-       rel='stylesheet' type='text/css' />\r
-<link href='css/highlight.default.css' media='screen' rel='stylesheet'\r
-       type='text/css' />\r
-<link href='css/screen.css' media='screen' rel='stylesheet'\r
-       type='text/css' />\r
-<link rel="stylesheet" type="text/css" href="/css/opendaylight.css">\r
-<link rel="stylesheet" type="text/css"\r
-       href="css/ui-lightness/jquery-ui-1.10.4.custom.min.css">\r
-<script type="text/javascript" src="lib/shred.bundle.js"></script>\r
-<script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>\r
-<script src='lib/jquery-ui-1.11.0.min.js' type="text/javascript"></script>\r
-<script src='lib/jquery.slideto.min.js' type='text/javascript'></script>\r
-<script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>\r
-<script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>\r
-<script src='lib/handlebars-1.0.0.js' type='text/javascript'></script>\r
-<script src='lib/underscore-min.js' type='text/javascript'></script>\r
-<script src='lib/backbone-min.js' type='text/javascript'></script>\r
-<script src='lib/swagger.js' type='text/javascript'></script>\r
-<script src='swagger-ui.js' type='text/javascript'></script>\r
-<script src='lib/odl/list_mounts.js' type='text/javascript'></script>\r
-<script src='lib/highlight.7.3.pack.js' type='text/javascript'></script>\r
-<script src='lib/odl/swagger.js' type='text/javascript'></script>\r
-\r
-<script type="text/javascript">\r
-       \r
-       //reloads the swagger UI documentation for the specified mount.\r
-       var loadMount = function(mountIndex, mountPath) {\r
-               $("#message").empty();\r
-               $("#message").append( "<p>Loading...</p>" );\r
-               loadSwagger("/apidoc/apis/mounts/" + mountIndex,\r
-                               "swagger-ui-container");\r
-               $("#message").empty();\r
-               $("#message").append( "<h2><b>Showing mount points for " + mountPath + "</b></h2>");\r
-       }\r
-\r
-       //clears the swagger UI and adds text prompting use to select a mount point.\r
-    var selectAMount = function(string) {\r
-        $("#swagger-ui-container").empty();\r
-        $("#message").empty();\r
-        $("#message").append("<p>Select a mount point.</p>");\r
-    }\r
-    \r
-       //loads the root swagger documenation (which comes from RestConf)\r
-       var loadRootSwagger = function() {\r
-               $("#message").empty();\r
-               loadSwagger("/apidoc/apis", "swagger-ui-container");\r
-       }\r
-\r
-       //main method to initialize the mount list / swagger docs / tabs on page load\r
-       $(function() {\r
-               $("#tabs").tabs();\r
-\r
-               loadMountList($("#mountlist"));\r
-\r
-               loadRootSwagger();\r
-       });\r
-</script>\r
-</head>\r
-\r
-<body>\r
-       <div>\r
-               <!-- style="background-color: #FCA000;" -->\r
-               <div class="swagger-ui-wrap ui-tabs">\r
-                       <table>\r
-                               <tr>\r
-                                       <td><img src="images/logo_small.png" /></td>\r
-                                       <td><h1 width="100%">OpenDaylight RestConf API\r
-                                                       Documentation</h1></td>\r
-                               </tr>\r
-                       </table>\r
-               </div>\r
-       </div>\r
-\r
-       <div class="navbar-inner">\r
-               <div class="brand"></div>\r
-       </div>\r
-\r
-    <!--  defines the div shells which represent the jquery tabs -->\r
-       <div id="tabs" class="swagger-ui-wrap">\r
-               <ul>\r
-                       <li><a href="#Controller" onclick="loadRootSwagger()">Controller\r
-                                       Resources</a></li>\r
-                       <li><a href="#Mounts" onclick="selectAMount()">Mounted\r
-                                       Resources</a></li>\r
-               </ul>\r
-\r
-               <div id="Controller">\r
-                       <div>\r
-                               <h3>Below are the list of APIs supported by the Controller.</h3>\r
-                       </div>\r
-               </div>\r
-               <div id="Mounts">\r
-                       <div>\r
-                               <h3>Mount Points - Select an API below for details on available\r
-                                       queries.</h3>\r
-                       </div>\r
-                       <div id="mountlist"></div>\r
-               </div>\r
-       </div>\r
-       \r
-       <div class="swagger-ui-wrap"><hr/></div>\r
-       \r
-       <!-- messages -->\r
-       <div id="message" class="swagger-ui-wrap"></div>\r
-       \r
-       <!-- the swagger is always loaded in this div -->\r
-       <div id="swagger-ui-container" class="swagger-ui-wrap"></div>\r
-\r
-       <div id="message-bar" class="swagger-ui-wrap">&nbsp;</div>\r
-</body>\r
-\r
-</html>\r
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/backbone-min.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/backbone-min.js
deleted file mode 100644 (file)
index c1c0d4f..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// Backbone.js 0.9.2
-
-// (c) 2010-2012 Jeremy Ashkenas, DocumentCloud Inc.
-// Backbone may be freely distributed under the MIT license.
-// For all details and documentation:
-// http://backbonejs.org
-(function(){var l=this,y=l.Backbone,z=Array.prototype.slice,A=Array.prototype.splice,g;g="undefined"!==typeof exports?exports:l.Backbone={};g.VERSION="0.9.2";var f=l._;!f&&"undefined"!==typeof require&&(f=require("underscore"));var i=l.jQuery||l.Zepto||l.ender;g.setDomLibrary=function(a){i=a};g.noConflict=function(){l.Backbone=y;return this};g.emulateHTTP=!1;g.emulateJSON=!1;var p=/\s+/,k=g.Events={on:function(a,b,c){var d,e,f,g,j;if(!b)return this;a=a.split(p);for(d=this._callbacks||(this._callbacks=
-{});e=a.shift();)f=(j=d[e])?j.tail:{},f.next=g={},f.context=c,f.callback=b,d[e]={tail:g,next:j?j.next:f};return this},off:function(a,b,c){var d,e,h,g,j,q;if(e=this._callbacks){if(!a&&!b&&!c)return delete this._callbacks,this;for(a=a?a.split(p):f.keys(e);d=a.shift();)if(h=e[d],delete e[d],h&&(b||c))for(g=h.tail;(h=h.next)!==g;)if(j=h.callback,q=h.context,b&&j!==b||c&&q!==c)this.on(d,j,q);return this}},trigger:function(a){var b,c,d,e,f,g;if(!(d=this._callbacks))return this;f=d.all;a=a.split(p);for(g=
-z.call(arguments,1);b=a.shift();){if(c=d[b])for(e=c.tail;(c=c.next)!==e;)c.callback.apply(c.context||this,g);if(c=f){e=c.tail;for(b=[b].concat(g);(c=c.next)!==e;)c.callback.apply(c.context||this,b)}}return this}};k.bind=k.on;k.unbind=k.off;var o=g.Model=function(a,b){var c;a||(a={});b&&b.parse&&(a=this.parse(a));if(c=n(this,"defaults"))a=f.extend({},c,a);b&&b.collection&&(this.collection=b.collection);this.attributes={};this._escapedAttributes={};this.cid=f.uniqueId("c");this.changed={};this._silent=
-{};this._pending={};this.set(a,{silent:!0});this.changed={};this._silent={};this._pending={};this._previousAttributes=f.clone(this.attributes);this.initialize.apply(this,arguments)};f.extend(o.prototype,k,{changed:null,_silent:null,_pending:null,idAttribute:"id",initialize:function(){},toJSON:function(){return f.clone(this.attributes)},get:function(a){return this.attributes[a]},escape:function(a){var b;if(b=this._escapedAttributes[a])return b;b=this.get(a);return this._escapedAttributes[a]=f.escape(null==
-b?"":""+b)},has:function(a){return null!=this.get(a)},set:function(a,b,c){var d,e;f.isObject(a)||null==a?(d=a,c=b):(d={},d[a]=b);c||(c={});if(!d)return this;d instanceof o&&(d=d.attributes);if(c.unset)for(e in d)d[e]=void 0;if(!this._validate(d,c))return!1;this.idAttribute in d&&(this.id=d[this.idAttribute]);var b=c.changes={},h=this.attributes,g=this._escapedAttributes,j=this._previousAttributes||{};for(e in d){a=d[e];if(!f.isEqual(h[e],a)||c.unset&&f.has(h,e))delete g[e],(c.silent?this._silent:
-b)[e]=!0;c.unset?delete h[e]:h[e]=a;!f.isEqual(j[e],a)||f.has(h,e)!=f.has(j,e)?(this.changed[e]=a,c.silent||(this._pending[e]=!0)):(delete this.changed[e],delete this._pending[e])}c.silent||this.change(c);return this},unset:function(a,b){(b||(b={})).unset=!0;return this.set(a,null,b)},clear:function(a){(a||(a={})).unset=!0;return this.set(f.clone(this.attributes),a)},fetch:function(a){var a=a?f.clone(a):{},b=this,c=a.success;a.success=function(d,e,f){if(!b.set(b.parse(d,f),a))return!1;c&&c(b,d)};
-a.error=g.wrapError(a.error,b,a);return(this.sync||g.sync).call(this,"read",this,a)},save:function(a,b,c){var d,e;f.isObject(a)||null==a?(d=a,c=b):(d={},d[a]=b);c=c?f.clone(c):{};if(c.wait){if(!this._validate(d,c))return!1;e=f.clone(this.attributes)}a=f.extend({},c,{silent:!0});if(d&&!this.set(d,c.wait?a:c))return!1;var h=this,i=c.success;c.success=function(a,b,e){b=h.parse(a,e);if(c.wait){delete c.wait;b=f.extend(d||{},b)}if(!h.set(b,c))return false;i?i(h,a):h.trigger("sync",h,a,c)};c.error=g.wrapError(c.error,
-h,c);b=this.isNew()?"create":"update";b=(this.sync||g.sync).call(this,b,this,c);c.wait&&this.set(e,a);return b},destroy:function(a){var a=a?f.clone(a):{},b=this,c=a.success,d=function(){b.trigger("destroy",b,b.collection,a)};if(this.isNew())return d(),!1;a.success=function(e){a.wait&&d();c?c(b,e):b.trigger("sync",b,e,a)};a.error=g.wrapError(a.error,b,a);var e=(this.sync||g.sync).call(this,"delete",this,a);a.wait||d();return e},url:function(){var a=n(this,"urlRoot")||n(this.collection,"url")||t();
-return this.isNew()?a:a+("/"==a.charAt(a.length-1)?"":"/")+encodeURIComponent(this.id)},parse:function(a){return a},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return null==this.id},change:function(a){a||(a={});var b=this._changing;this._changing=!0;for(var c in this._silent)this._pending[c]=!0;var d=f.extend({},a.changes,this._silent);this._silent={};for(c in d)this.trigger("change:"+c,this,this.get(c),a);if(b)return this;for(;!f.isEmpty(this._pending);){this._pending=
-{};this.trigger("change",this,a);for(c in this.changed)!this._pending[c]&&!this._silent[c]&&delete this.changed[c];this._previousAttributes=f.clone(this.attributes)}this._changing=!1;return this},hasChanged:function(a){return!arguments.length?!f.isEmpty(this.changed):f.has(this.changed,a)},changedAttributes:function(a){if(!a)return this.hasChanged()?f.clone(this.changed):!1;var b,c=!1,d=this._previousAttributes,e;for(e in a)if(!f.isEqual(d[e],b=a[e]))(c||(c={}))[e]=b;return c},previous:function(a){return!arguments.length||
-!this._previousAttributes?null:this._previousAttributes[a]},previousAttributes:function(){return f.clone(this._previousAttributes)},isValid:function(){return!this.validate(this.attributes)},_validate:function(a,b){if(b.silent||!this.validate)return!0;var a=f.extend({},this.attributes,a),c=this.validate(a,b);if(!c)return!0;b&&b.error?b.error(this,c,b):this.trigger("error",this,c,b);return!1}});var r=g.Collection=function(a,b){b||(b={});b.model&&(this.model=b.model);b.comparator&&(this.comparator=b.comparator);
-this._reset();this.initialize.apply(this,arguments);a&&this.reset(a,{silent:!0,parse:b.parse})};f.extend(r.prototype,k,{model:o,initialize:function(){},toJSON:function(a){return this.map(function(b){return b.toJSON(a)})},add:function(a,b){var c,d,e,g,i,j={},k={},l=[];b||(b={});a=f.isArray(a)?a.slice():[a];c=0;for(d=a.length;c<d;c++){if(!(e=a[c]=this._prepareModel(a[c],b)))throw Error("Can't add an invalid model to a collection");g=e.cid;i=e.id;j[g]||this._byCid[g]||null!=i&&(k[i]||this._byId[i])?
-l.push(c):j[g]=k[i]=e}for(c=l.length;c--;)a.splice(l[c],1);c=0;for(d=a.length;c<d;c++)(e=a[c]).on("all",this._onModelEvent,this),this._byCid[e.cid]=e,null!=e.id&&(this._byId[e.id]=e);this.length+=d;A.apply(this.models,[null!=b.at?b.at:this.models.length,0].concat(a));this.comparator&&this.sort({silent:!0});if(b.silent)return this;c=0;for(d=this.models.length;c<d;c++)if(j[(e=this.models[c]).cid])b.index=c,e.trigger("add",e,this,b);return this},remove:function(a,b){var c,d,e,g;b||(b={});a=f.isArray(a)?
-a.slice():[a];c=0;for(d=a.length;c<d;c++)if(g=this.getByCid(a[c])||this.get(a[c]))delete this._byId[g.id],delete this._byCid[g.cid],e=this.indexOf(g),this.models.splice(e,1),this.length--,b.silent||(b.index=e,g.trigger("remove",g,this,b)),this._removeReference(g);return this},push:function(a,b){a=this._prepareModel(a,b);this.add(a,b);return a},pop:function(a){var b=this.at(this.length-1);this.remove(b,a);return b},unshift:function(a,b){a=this._prepareModel(a,b);this.add(a,f.extend({at:0},b));return a},
-shift:function(a){var b=this.at(0);this.remove(b,a);return b},get:function(a){return null==a?void 0:this._byId[null!=a.id?a.id:a]},getByCid:function(a){return a&&this._byCid[a.cid||a]},at:function(a){return this.models[a]},where:function(a){return f.isEmpty(a)?[]:this.filter(function(b){for(var c in a)if(a[c]!==b.get(c))return!1;return!0})},sort:function(a){a||(a={});if(!this.comparator)throw Error("Cannot sort a set without a comparator");var b=f.bind(this.comparator,this);1==this.comparator.length?
-this.models=this.sortBy(b):this.models.sort(b);a.silent||this.trigger("reset",this,a);return this},pluck:function(a){return f.map(this.models,function(b){return b.get(a)})},reset:function(a,b){a||(a=[]);b||(b={});for(var c=0,d=this.models.length;c<d;c++)this._removeReference(this.models[c]);this._reset();this.add(a,f.extend({silent:!0},b));b.silent||this.trigger("reset",this,b);return this},fetch:function(a){a=a?f.clone(a):{};void 0===a.parse&&(a.parse=!0);var b=this,c=a.success;a.success=function(d,
-e,f){b[a.add?"add":"reset"](b.parse(d,f),a);c&&c(b,d)};a.error=g.wrapError(a.error,b,a);return(this.sync||g.sync).call(this,"read",this,a)},create:function(a,b){var c=this,b=b?f.clone(b):{},a=this._prepareModel(a,b);if(!a)return!1;b.wait||c.add(a,b);var d=b.success;b.success=function(e,f){b.wait&&c.add(e,b);d?d(e,f):e.trigger("sync",a,f,b)};a.save(null,b);return a},parse:function(a){return a},chain:function(){return f(this.models).chain()},_reset:function(){this.length=0;this.models=[];this._byId=
-{};this._byCid={}},_prepareModel:function(a,b){b||(b={});a instanceof o?a.collection||(a.collection=this):(b.collection=this,a=new this.model(a,b),a._validate(a.attributes,b)||(a=!1));return a},_removeReference:function(a){this==a.collection&&delete a.collection;a.off("all",this._onModelEvent,this)},_onModelEvent:function(a,b,c,d){("add"==a||"remove"==a)&&c!=this||("destroy"==a&&this.remove(b,d),b&&a==="change:"+b.idAttribute&&(delete this._byId[b.previous(b.idAttribute)],this._byId[b.id]=b),this.trigger.apply(this,
-arguments))}});f.each("forEach,each,map,reduce,reduceRight,find,detect,filter,select,reject,every,all,some,any,include,contains,invoke,max,min,sortBy,sortedIndex,toArray,size,first,initial,rest,last,without,indexOf,shuffle,lastIndexOf,isEmpty,groupBy".split(","),function(a){r.prototype[a]=function(){return f[a].apply(f,[this.models].concat(f.toArray(arguments)))}});var u=g.Router=function(a){a||(a={});a.routes&&(this.routes=a.routes);this._bindRoutes();this.initialize.apply(this,arguments)},B=/:\w+/g,
-C=/\*\w+/g,D=/[-[\]{}()+?.,\\^$|#\s]/g;f.extend(u.prototype,k,{initialize:function(){},route:function(a,b,c){g.history||(g.history=new m);f.isRegExp(a)||(a=this._routeToRegExp(a));c||(c=this[b]);g.history.route(a,f.bind(function(d){d=this._extractParameters(a,d);c&&c.apply(this,d);this.trigger.apply(this,["route:"+b].concat(d));g.history.trigger("route",this,b,d)},this));return this},navigate:function(a,b){g.history.navigate(a,b)},_bindRoutes:function(){if(this.routes){var a=[],b;for(b in this.routes)a.unshift([b,
-this.routes[b]]);b=0;for(var c=a.length;b<c;b++)this.route(a[b][0],a[b][1],this[a[b][1]])}},_routeToRegExp:function(a){a=a.replace(D,"\\$&").replace(B,"([^/]+)").replace(C,"(.*?)");return RegExp("^"+a+"$")},_extractParameters:function(a,b){return a.exec(b).slice(1)}});var m=g.History=function(){this.handlers=[];f.bindAll(this,"checkUrl")},s=/^[#\/]/,E=/msie [\w.]+/;m.started=!1;f.extend(m.prototype,k,{interval:50,getHash:function(a){return(a=(a?a.location:window.location).href.match(/#(.*)$/))?a[1]:
-""},getFragment:function(a,b){if(null==a)if(this._hasPushState||b){var a=window.location.pathname,c=window.location.search;c&&(a+=c)}else a=this.getHash();a.indexOf(this.options.root)||(a=a.substr(this.options.root.length));return a.replace(s,"")},start:function(a){if(m.started)throw Error("Backbone.history has already been started");m.started=!0;this.options=f.extend({},{root:"/"},this.options,a);this._wantsHashChange=!1!==this.options.hashChange;this._wantsPushState=!!this.options.pushState;this._hasPushState=
-!(!this.options.pushState||!window.history||!window.history.pushState);var a=this.getFragment(),b=document.documentMode;if(b=E.exec(navigator.userAgent.toLowerCase())&&(!b||7>=b))this.iframe=i('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo("body")[0].contentWindow,this.navigate(a);this._hasPushState?i(window).bind("popstate",this.checkUrl):this._wantsHashChange&&"onhashchange"in window&&!b?i(window).bind("hashchange",this.checkUrl):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,
-this.interval));this.fragment=a;a=window.location;b=a.pathname==this.options.root;if(this._wantsHashChange&&this._wantsPushState&&!this._hasPushState&&!b)return this.fragment=this.getFragment(null,!0),window.location.replace(this.options.root+"#"+this.fragment),!0;this._wantsPushState&&this._hasPushState&&b&&a.hash&&(this.fragment=this.getHash().replace(s,""),window.history.replaceState({},document.title,a.protocol+"//"+a.host+this.options.root+this.fragment));if(!this.options.silent)return this.loadUrl()},
-stop:function(){i(window).unbind("popstate",this.checkUrl).unbind("hashchange",this.checkUrl);clearInterval(this._checkUrlInterval);m.started=!1},route:function(a,b){this.handlers.unshift({route:a,callback:b})},checkUrl:function(){var a=this.getFragment();a==this.fragment&&this.iframe&&(a=this.getFragment(this.getHash(this.iframe)));if(a==this.fragment)return!1;this.iframe&&this.navigate(a);this.loadUrl()||this.loadUrl(this.getHash())},loadUrl:function(a){var b=this.fragment=this.getFragment(a);return f.any(this.handlers,
-function(a){if(a.route.test(b))return a.callback(b),!0})},navigate:function(a,b){if(!m.started)return!1;if(!b||!0===b)b={trigger:b};var c=(a||"").replace(s,"");this.fragment!=c&&(this._hasPushState?(0!=c.indexOf(this.options.root)&&(c=this.options.root+c),this.fragment=c,window.history[b.replace?"replaceState":"pushState"]({},document.title,c)):this._wantsHashChange?(this.fragment=c,this._updateHash(window.location,c,b.replace),this.iframe&&c!=this.getFragment(this.getHash(this.iframe))&&(b.replace||
-this.iframe.document.open().close(),this._updateHash(this.iframe.location,c,b.replace))):window.location.assign(this.options.root+a),b.trigger&&this.loadUrl(a))},_updateHash:function(a,b,c){c?a.replace(a.toString().replace(/(javascript:|#).*$/,"")+"#"+b):a.hash=b}});var v=g.View=function(a){this.cid=f.uniqueId("view");this._configure(a||{});this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()},F=/^(\S+)\s*(.*)$/,w="model,collection,el,id,attributes,className,tagName".split(",");
-f.extend(v.prototype,k,{tagName:"div",$:function(a){return this.$el.find(a)},initialize:function(){},render:function(){return this},remove:function(){this.$el.remove();return this},make:function(a,b,c){a=document.createElement(a);b&&i(a).attr(b);c&&i(a).html(c);return a},setElement:function(a,b){this.$el&&this.undelegateEvents();this.$el=a instanceof i?a:i(a);this.el=this.$el[0];!1!==b&&this.delegateEvents();return this},delegateEvents:function(a){if(a||(a=n(this,"events"))){this.undelegateEvents();
-for(var b in a){var c=a[b];f.isFunction(c)||(c=this[a[b]]);if(!c)throw Error('Method "'+a[b]+'" does not exist');var d=b.match(F),e=d[1],d=d[2],c=f.bind(c,this),e=e+(".delegateEvents"+this.cid);""===d?this.$el.bind(e,c):this.$el.delegate(d,e,c)}}},undelegateEvents:function(){this.$el.unbind(".delegateEvents"+this.cid)},_configure:function(a){this.options&&(a=f.extend({},this.options,a));for(var b=0,c=w.length;b<c;b++){var d=w[b];a[d]&&(this[d]=a[d])}this.options=a},_ensureElement:function(){if(this.el)this.setElement(this.el,
-!1);else{var a=n(this,"attributes")||{};this.id&&(a.id=this.id);this.className&&(a["class"]=this.className);this.setElement(this.make(this.tagName,a),!1)}}});o.extend=r.extend=u.extend=v.extend=function(a,b){var c=G(this,a,b);c.extend=this.extend;return c};var H={create:"POST",update:"PUT","delete":"DELETE",read:"GET"};g.sync=function(a,b,c){var d=H[a];c||(c={});var e={type:d,dataType:"json"};c.url||(e.url=n(b,"url")||t());if(!c.data&&b&&("create"==a||"update"==a))e.contentType="application/json",
-e.data=JSON.stringify(b.toJSON());g.emulateJSON&&(e.contentType="application/x-www-form-urlencoded",e.data=e.data?{model:e.data}:{});if(g.emulateHTTP&&("PUT"===d||"DELETE"===d))g.emulateJSON&&(e.data._method=d),e.type="POST",e.beforeSend=function(a){a.setRequestHeader("X-HTTP-Method-Override",d)};"GET"!==e.type&&!g.emulateJSON&&(e.processData=!1);return i.ajax(f.extend(e,c))};g.wrapError=function(a,b,c){return function(d,e){e=d===b?e:d;a?a(b,e,c):b.trigger("error",b,e,c)}};var x=function(){},G=function(a,
-b,c){var d;d=b&&b.hasOwnProperty("constructor")?b.constructor:function(){a.apply(this,arguments)};f.extend(d,a);x.prototype=a.prototype;d.prototype=new x;b&&f.extend(d.prototype,b);c&&f.extend(d,c);d.prototype.constructor=d;d.__super__=a.prototype;return d},n=function(a,b){return!a||!a[b]?null:f.isFunction(a[b])?a[b]():a[b]},t=function(){throw Error('A "url" property or function must be specified');}}).call(this);
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/handlebars-1.0.0.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/handlebars-1.0.0.js
deleted file mode 100644 (file)
index c70f09d..0000000
+++ /dev/null
@@ -1,2278 +0,0 @@
-/*
-
-Copyright (C) 2011 by Yehuda Katz
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-*/
-
-// lib/handlebars/browser-prefix.js
-var Handlebars = {};
-
-(function(Handlebars, undefined) {
-;
-// lib/handlebars/base.js
-
-Handlebars.VERSION = "1.0.0";
-Handlebars.COMPILER_REVISION = 4;
-
-Handlebars.REVISION_CHANGES = {
-  1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it
-  2: '== 1.0.0-rc.3',
-  3: '== 1.0.0-rc.4',
-  4: '>= 1.0.0'
-};
-
-Handlebars.helpers  = {};
-Handlebars.partials = {};
-
-var toString = Object.prototype.toString,
-    functionType = '[object Function]',
-    objectType = '[object Object]';
-
-Handlebars.registerHelper = function(name, fn, inverse) {
-  if (toString.call(name) === objectType) {
-    if (inverse || fn) { throw new Handlebars.Exception('Arg not supported with multiple helpers'); }
-    Handlebars.Utils.extend(this.helpers, name);
-  } else {
-    if (inverse) { fn.not = inverse; }
-    this.helpers[name] = fn;
-  }
-};
-
-Handlebars.registerPartial = function(name, str) {
-  if (toString.call(name) === objectType) {
-    Handlebars.Utils.extend(this.partials,  name);
-  } else {
-    this.partials[name] = str;
-  }
-};
-
-Handlebars.registerHelper('helperMissing', function(arg) {
-  if(arguments.length === 2) {
-    return undefined;
-  } else {
-    throw new Error("Missing helper: '" + arg + "'");
-  }
-});
-
-Handlebars.registerHelper('blockHelperMissing', function(context, options) {
-  var inverse = options.inverse || function() {}, fn = options.fn;
-
-  var type = toString.call(context);
-
-  if(type === functionType) { context = context.call(this); }
-
-  if(context === true) {
-    return fn(this);
-  } else if(context === false || context == null) {
-    return inverse(this);
-  } else if(type === "[object Array]") {
-    if(context.length > 0) {
-      return Handlebars.helpers.each(context, options);
-    } else {
-      return inverse(this);
-    }
-  } else {
-    return fn(context);
-  }
-});
-
-Handlebars.K = function() {};
-
-Handlebars.createFrame = Object.create || function(object) {
-  Handlebars.K.prototype = object;
-  var obj = new Handlebars.K();
-  Handlebars.K.prototype = null;
-  return obj;
-};
-
-Handlebars.logger = {
-  DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3, level: 3,
-
-  methodMap: {0: 'debug', 1: 'info', 2: 'warn', 3: 'error'},
-
-  // can be overridden in the host environment
-  log: function(level, obj) {
-    if (Handlebars.logger.level <= level) {
-      var method = Handlebars.logger.methodMap[level];
-      if (typeof console !== 'undefined' && console[method]) {
-        console[method].call(console, obj);
-      }
-    }
-  }
-};
-
-Handlebars.log = function(level, obj) { Handlebars.logger.log(level, obj); };
-
-Handlebars.registerHelper('each', function(context, options) {
-  var fn = options.fn, inverse = options.inverse;
-  var i = 0, ret = "", data;
-
-  var type = toString.call(context);
-  if(type === functionType) { context = context.call(this); }
-
-  if (options.data) {
-    data = Handlebars.createFrame(options.data);
-  }
-
-  if(context && typeof context === 'object') {
-    if(context instanceof Array){
-      for(var j = context.length; i<j; i++) {
-        if (data) { data.index = i; }
-        ret = ret + fn(context[i], { data: data });
-      }
-    } else {
-      for(var key in context) {
-        if(context.hasOwnProperty(key)) {
-          if(data) { data.key = key; }
-          ret = ret + fn(context[key], {data: data});
-          i++;
-        }
-      }
-    }
-  }
-
-  if(i === 0){
-    ret = inverse(this);
-  }
-
-  return ret;
-});
-
-Handlebars.registerHelper('if', function(conditional, options) {
-  var type = toString.call(conditional);
-  if(type === functionType) { conditional = conditional.call(this); }
-
-  if(!conditional || Handlebars.Utils.isEmpty(conditional)) {
-    return options.inverse(this);
-  } else {
-    return options.fn(this);
-  }
-});
-
-Handlebars.registerHelper('unless', function(conditional, options) {
-  return Handlebars.helpers['if'].call(this, conditional, {fn: options.inverse, inverse: options.fn});
-});
-
-Handlebars.registerHelper('with', function(context, options) {
-  var type = toString.call(context);
-  if(type === functionType) { context = context.call(this); }
-
-  if (!Handlebars.Utils.isEmpty(context)) return options.fn(context);
-});
-
-Handlebars.registerHelper('log', function(context, options) {
-  var level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1;
-  Handlebars.log(level, context);
-});
-;
-// lib/handlebars/compiler/parser.js
-/* Jison generated parser */
-var handlebars = (function(){
-var parser = {trace: function trace() { },
-yy: {},
-symbols_: {"error":2,"root":3,"program":4,"EOF":5,"simpleInverse":6,"statements":7,"statement":8,"openInverse":9,"closeBlock":10,"openBlock":11,"mustache":12,"partial":13,"CONTENT":14,"COMMENT":15,"OPEN_BLOCK":16,"inMustache":17,"CLOSE":18,"OPEN_INVERSE":19,"OPEN_ENDBLOCK":20,"path":21,"OPEN":22,"OPEN_UNESCAPED":23,"CLOSE_UNESCAPED":24,"OPEN_PARTIAL":25,"partialName":26,"params":27,"hash":28,"dataName":29,"param":30,"STRING":31,"INTEGER":32,"BOOLEAN":33,"hashSegments":34,"hashSegment":35,"ID":36,"EQUALS":37,"DATA":38,"pathSegments":39,"SEP":40,"$accept":0,"$end":1},
-terminals_: {2:"error",5:"EOF",14:"CONTENT",15:"COMMENT",16:"OPEN_BLOCK",18:"CLOSE",19:"OPEN_INVERSE",20:"OPEN_ENDBLOCK",22:"OPEN",23:"OPEN_UNESCAPED",24:"CLOSE_UNESCAPED",25:"OPEN_PARTIAL",31:"STRING",32:"INTEGER",33:"BOOLEAN",36:"ID",37:"EQUALS",38:"DATA",40:"SEP"},
-productions_: [0,[3,2],[4,2],[4,3],[4,2],[4,1],[4,1],[4,0],[7,1],[7,2],[8,3],[8,3],[8,1],[8,1],[8,1],[8,1],[11,3],[9,3],[10,3],[12,3],[12,3],[13,3],[13,4],[6,2],[17,3],[17,2],[17,2],[17,1],[17,1],[27,2],[27,1],[30,1],[30,1],[30,1],[30,1],[30,1],[28,1],[34,2],[34,1],[35,3],[35,3],[35,3],[35,3],[35,3],[26,1],[26,1],[26,1],[29,2],[21,1],[39,3],[39,1]],
-performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {
-
-var $0 = $$.length - 1;
-switch (yystate) {
-case 1: return $$[$0-1]; 
-break;
-case 2: this.$ = new yy.ProgramNode([], $$[$0]); 
-break;
-case 3: this.$ = new yy.ProgramNode($$[$0-2], $$[$0]); 
-break;
-case 4: this.$ = new yy.ProgramNode($$[$0-1], []); 
-break;
-case 5: this.$ = new yy.ProgramNode($$[$0]); 
-break;
-case 6: this.$ = new yy.ProgramNode([], []); 
-break;
-case 7: this.$ = new yy.ProgramNode([]); 
-break;
-case 8: this.$ = [$$[$0]]; 
-break;
-case 9: $$[$0-1].push($$[$0]); this.$ = $$[$0-1]; 
-break;
-case 10: this.$ = new yy.BlockNode($$[$0-2], $$[$0-1].inverse, $$[$0-1], $$[$0]); 
-break;
-case 11: this.$ = new yy.BlockNode($$[$0-2], $$[$0-1], $$[$0-1].inverse, $$[$0]); 
-break;
-case 12: this.$ = $$[$0]; 
-break;
-case 13: this.$ = $$[$0]; 
-break;
-case 14: this.$ = new yy.ContentNode($$[$0]); 
-break;
-case 15: this.$ = new yy.CommentNode($$[$0]); 
-break;
-case 16: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); 
-break;
-case 17: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); 
-break;
-case 18: this.$ = $$[$0-1]; 
-break;
-case 19:
-    // Parsing out the '&' escape token at this level saves ~500 bytes after min due to the removal of one parser node.
-    this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1], $$[$0-2][2] === '&');
-  
-break;
-case 20: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1], true); 
-break;
-case 21: this.$ = new yy.PartialNode($$[$0-1]); 
-break;
-case 22: this.$ = new yy.PartialNode($$[$0-2], $$[$0-1]); 
-break;
-case 23: 
-break;
-case 24: this.$ = [[$$[$0-2]].concat($$[$0-1]), $$[$0]]; 
-break;
-case 25: this.$ = [[$$[$0-1]].concat($$[$0]), null]; 
-break;
-case 26: this.$ = [[$$[$0-1]], $$[$0]]; 
-break;
-case 27: this.$ = [[$$[$0]], null]; 
-break;
-case 28: this.$ = [[$$[$0]], null]; 
-break;
-case 29: $$[$0-1].push($$[$0]); this.$ = $$[$0-1]; 
-break;
-case 30: this.$ = [$$[$0]]; 
-break;
-case 31: this.$ = $$[$0]; 
-break;
-case 32: this.$ = new yy.StringNode($$[$0]); 
-break;
-case 33: this.$ = new yy.IntegerNode($$[$0]); 
-break;
-case 34: this.$ = new yy.BooleanNode($$[$0]); 
-break;
-case 35: this.$ = $$[$0]; 
-break;
-case 36: this.$ = new yy.HashNode($$[$0]); 
-break;
-case 37: $$[$0-1].push($$[$0]); this.$ = $$[$0-1]; 
-break;
-case 38: this.$ = [$$[$0]]; 
-break;
-case 39: this.$ = [$$[$0-2], $$[$0]]; 
-break;
-case 40: this.$ = [$$[$0-2], new yy.StringNode($$[$0])]; 
-break;
-case 41: this.$ = [$$[$0-2], new yy.IntegerNode($$[$0])]; 
-break;
-case 42: this.$ = [$$[$0-2], new yy.BooleanNode($$[$0])]; 
-break;
-case 43: this.$ = [$$[$0-2], $$[$0]]; 
-break;
-case 44: this.$ = new yy.PartialNameNode($$[$0]); 
-break;
-case 45: this.$ = new yy.PartialNameNode(new yy.StringNode($$[$0])); 
-break;
-case 46: this.$ = new yy.PartialNameNode(new yy.IntegerNode($$[$0])); 
-break;
-case 47: this.$ = new yy.DataNode($$[$0]); 
-break;
-case 48: this.$ = new yy.IdNode($$[$0]); 
-break;
-case 49: $$[$0-2].push({part: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; 
-break;
-case 50: this.$ = [{part: $$[$0]}]; 
-break;
-}
-},
-table: [{3:1,4:2,5:[2,7],6:3,7:4,8:6,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,5],22:[1,14],23:[1,15],25:[1,16]},{1:[3]},{5:[1,17]},{5:[2,6],7:18,8:6,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,19],20:[2,6],22:[1,14],23:[1,15],25:[1,16]},{5:[2,5],6:20,8:21,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,5],20:[2,5],22:[1,14],23:[1,15],25:[1,16]},{17:23,18:[1,22],21:24,29:25,36:[1,28],38:[1,27],39:26},{5:[2,8],14:[2,8],15:[2,8],16:[2,8],19:[2,8],20:[2,8],22:[2,8],23:[2,8],25:[2,8]},{4:29,6:3,7:4,8:6,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,5],20:[2,7],22:[1,14],23:[1,15],25:[1,16]},{4:30,6:3,7:4,8:6,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,5],20:[2,7],22:[1,14],23:[1,15],25:[1,16]},{5:[2,12],14:[2,12],15:[2,12],16:[2,12],19:[2,12],20:[2,12],22:[2,12],23:[2,12],25:[2,12]},{5:[2,13],14:[2,13],15:[2,13],16:[2,13],19:[2,13],20:[2,13],22:[2,13],23:[2,13],25:[2,13]},{5:[2,14],14:[2,14],15:[2,14],16:[2,14],19:[2,14],20:[2,14],22:[2,14],23:[2,14],25:[2,14]},{5:[2,15],14:[2,15],15:[2,15],16:[2,15],19:[2,15],20:[2,15],22:[2,15],23:[2,15],25:[2,15]},{17:31,21:24,29:25,36:[1,28],38:[1,27],39:26},{17:32,21:24,29:25,36:[1,28],38:[1,27],39:26},{17:33,21:24,29:25,36:[1,28],38:[1,27],39:26},{21:35,26:34,31:[1,36],32:[1,37],36:[1,28],39:26},{1:[2,1]},{5:[2,2],8:21,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,19],20:[2,2],22:[1,14],23:[1,15],25:[1,16]},{17:23,21:24,29:25,36:[1,28],38:[1,27],39:26},{5:[2,4],7:38,8:6,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,19],20:[2,4],22:[1,14],23:[1,15],25:[1,16]},{5:[2,9],14:[2,9],15:[2,9],16:[2,9],19:[2,9],20:[2,9],22:[2,9],23:[2,9],25:[2,9]},{5:[2,23],14:[2,23],15:[2,23],16:[2,23],19:[2,23],20:[2,23],22:[2,23],23:[2,23],25:[2,23]},{18:[1,39]},{18:[2,27],21:44,24:[2,27],27:40,28:41,29:48,30:42,31:[1,45],32:[1,46],33:[1,47],34:43,35:49,36:[1,50],38:[1,27],39:26},{18:[2,28],24:[2,28]},{18:[2,48],24:[2,48],31:[2,48],32:[2,48],33:[2,48],36:[2,48],38:[2,48],40:[1,51]},{21:52,36:[1,28],39:26},{18:[2,50],24:[2,50],31:[2,50],32:[2,50],33:[2,50],36:[2,50],38:[2,50],40:[2,50]},{10:53,20:[1,54]},{10:55,20:[1,54]},{18:[1,56]},{18:[1,57]},{24:[1,58]},{18:[1,59],21:60,36:[1,28],39:26},{18:[2,44],36:[2,44]},{18:[2,45],36:[2,45]},{18:[2,46],36:[2,46]},{5:[2,3],8:21,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,19],20:[2,3],22:[1,14],23:[1,15],25:[1,16]},{14:[2,17],15:[2,17],16:[2,17],19:[2,17],20:[2,17],22:[2,17],23:[2,17],25:[2,17]},{18:[2,25],21:44,24:[2,25],28:61,29:48,30:62,31:[1,45],32:[1,46],33:[1,47],34:43,35:49,36:[1,50],38:[1,27],39:26},{18:[2,26],24:[2,26]},{18:[2,30],24:[2,30],31:[2,30],32:[2,30],33:[2,30],36:[2,30],38:[2,30]},{18:[2,36],24:[2,36],35:63,36:[1,64]},{18:[2,31],24:[2,31],31:[2,31],32:[2,31],33:[2,31],36:[2,31],38:[2,31]},{18:[2,32],24:[2,32],31:[2,32],32:[2,32],33:[2,32],36:[2,32],38:[2,32]},{18:[2,33],24:[2,33],31:[2,33],32:[2,33],33:[2,33],36:[2,33],38:[2,33]},{18:[2,34],24:[2,34],31:[2,34],32:[2,34],33:[2,34],36:[2,34],38:[2,34]},{18:[2,35],24:[2,35],31:[2,35],32:[2,35],33:[2,35],36:[2,35],38:[2,35]},{18:[2,38],24:[2,38],36:[2,38]},{18:[2,50],24:[2,50],31:[2,50],32:[2,50],33:[2,50],36:[2,50],37:[1,65],38:[2,50],40:[2,50]},{36:[1,66]},{18:[2,47],24:[2,47],31:[2,47],32:[2,47],33:[2,47],36:[2,47],38:[2,47]},{5:[2,10],14:[2,10],15:[2,10],16:[2,10],19:[2,10],20:[2,10],22:[2,10],23:[2,10],25:[2,10]},{21:67,36:[1,28],39:26},{5:[2,11],14:[2,11],15:[2,11],16:[2,11],19:[2,11],20:[2,11],22:[2,11],23:[2,11],25:[2,11]},{14:[2,16],15:[2,16],16:[2,16],19:[2,16],20:[2,16],22:[2,16],23:[2,16],25:[2,16]},{5:[2,19],14:[2,19],15:[2,19],16:[2,19],19:[2,19],20:[2,19],22:[2,19],23:[2,19],25:[2,19]},{5:[2,20],14:[2,20],15:[2,20],16:[2,20],19:[2,20],20:[2,20],22:[2,20],23:[2,20],25:[2,20]},{5:[2,21],14:[2,21],15:[2,21],16:[2,21],19:[2,21],20:[2,21],22:[2,21],23:[2,21],25:[2,21]},{18:[1,68]},{18:[2,24],24:[2,24]},{18:[2,29],24:[2,29],31:[2,29],32:[2,29],33:[2,29],36:[2,29],38:[2,29]},{18:[2,37],24:[2,37],36:[2,37]},{37:[1,65]},{21:69,29:73,31:[1,70],32:[1,71],33:[1,72],36:[1,28],38:[1,27],39:26},{18:[2,49],24:[2,49],31:[2,49],32:[2,49],33:[2,49],36:[2,49],38:[2,49],40:[2,49]},{18:[1,74]},{5:[2,22],14:[2,22],15:[2,22],16:[2,22],19:[2,22],20:[2,22],22:[2,22],23:[2,22],25:[2,22]},{18:[2,39],24:[2,39],36:[2,39]},{18:[2,40],24:[2,40],36:[2,40]},{18:[2,41],24:[2,41],36:[2,41]},{18:[2,42],24:[2,42],36:[2,42]},{18:[2,43],24:[2,43],36:[2,43]},{5:[2,18],14:[2,18],15:[2,18],16:[2,18],19:[2,18],20:[2,18],22:[2,18],23:[2,18],25:[2,18]}],
-defaultActions: {17:[2,1]},
-parseError: function parseError(str, hash) {
-    throw new Error(str);
-},
-parse: function parse(input) {
-    var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
-    this.lexer.setInput(input);
-    this.lexer.yy = this.yy;
-    this.yy.lexer = this.lexer;
-    this.yy.parser = this;
-    if (typeof this.lexer.yylloc == "undefined")
-        this.lexer.yylloc = {};
-    var yyloc = this.lexer.yylloc;
-    lstack.push(yyloc);
-    var ranges = this.lexer.options && this.lexer.options.ranges;
-    if (typeof this.yy.parseError === "function")
-        this.parseError = this.yy.parseError;
-    function popStack(n) {
-        stack.length = stack.length - 2 * n;
-        vstack.length = vstack.length - n;
-        lstack.length = lstack.length - n;
-    }
-    function lex() {
-        var token;
-        token = self.lexer.lex() || 1;
-        if (typeof token !== "number") {
-            token = self.symbols_[token] || token;
-        }
-        return token;
-    }
-    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
-    while (true) {
-        state = stack[stack.length - 1];
-        if (this.defaultActions[state]) {
-            action = this.defaultActions[state];
-        } else {
-            if (symbol === null || typeof symbol == "undefined") {
-                symbol = lex();
-            }
-            action = table[state] && table[state][symbol];
-        }
-        if (typeof action === "undefined" || !action.length || !action[0]) {
-            var errStr = "";
-            if (!recovering) {
-                expected = [];
-                for (p in table[state])
-                    if (this.terminals_[p] && p > 2) {
-                        expected.push("'" + this.terminals_[p] + "'");
-                    }
-                if (this.lexer.showPosition) {
-                    errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";
-                } else {
-                    errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1?"end of input":"'" + (this.terminals_[symbol] || symbol) + "'");
-                }
-                this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
-            }
-        }
-        if (action[0] instanceof Array && action.length > 1) {
-            throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
-        }
-        switch (action[0]) {
-        case 1:
-            stack.push(symbol);
-            vstack.push(this.lexer.yytext);
-            lstack.push(this.lexer.yylloc);
-            stack.push(action[1]);
-            symbol = null;
-            if (!preErrorSymbol) {
-                yyleng = this.lexer.yyleng;
-                yytext = this.lexer.yytext;
-                yylineno = this.lexer.yylineno;
-                yyloc = this.lexer.yylloc;
-                if (recovering > 0)
-                    recovering--;
-            } else {
-                symbol = preErrorSymbol;
-                preErrorSymbol = null;
-            }
-            break;
-        case 2:
-            len = this.productions_[action[1]][1];
-            yyval.$ = vstack[vstack.length - len];
-            yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};
-            if (ranges) {
-                yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
-            }
-            r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
-            if (typeof r !== "undefined") {
-                return r;
-            }
-            if (len) {
-                stack = stack.slice(0, -1 * len * 2);
-                vstack = vstack.slice(0, -1 * len);
-                lstack = lstack.slice(0, -1 * len);
-            }
-            stack.push(this.productions_[action[1]][0]);
-            vstack.push(yyval.$);
-            lstack.push(yyval._$);
-            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
-            stack.push(newState);
-            break;
-        case 3:
-            return true;
-        }
-    }
-    return true;
-}
-};
-/* Jison generated lexer */
-var lexer = (function(){
-var lexer = ({EOF:1,
-parseError:function parseError(str, hash) {
-        if (this.yy.parser) {
-            this.yy.parser.parseError(str, hash);
-        } else {
-            throw new Error(str);
-        }
-    },
-setInput:function (input) {
-        this._input = input;
-        this._more = this._less = this.done = false;
-        this.yylineno = this.yyleng = 0;
-        this.yytext = this.matched = this.match = '';
-        this.conditionStack = ['INITIAL'];
-        this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};
-        if (this.options.ranges) this.yylloc.range = [0,0];
-        this.offset = 0;
-        return this;
-    },
-input:function () {
-        var ch = this._input[0];
-        this.yytext += ch;
-        this.yyleng++;
-        this.offset++;
-        this.match += ch;
-        this.matched += ch;
-        var lines = ch.match(/(?:\r\n?|\n).*/g);
-        if (lines) {
-            this.yylineno++;
-            this.yylloc.last_line++;
-        } else {
-            this.yylloc.last_column++;
-        }
-        if (this.options.ranges) this.yylloc.range[1]++;
-
-        this._input = this._input.slice(1);
-        return ch;
-    },
-unput:function (ch) {
-        var len = ch.length;
-        var lines = ch.split(/(?:\r\n?|\n)/g);
-
-        this._input = ch + this._input;
-        this.yytext = this.yytext.substr(0, this.yytext.length-len-1);
-        //this.yyleng -= len;
-        this.offset -= len;
-        var oldLines = this.match.split(/(?:\r\n?|\n)/g);
-        this.match = this.match.substr(0, this.match.length-1);
-        this.matched = this.matched.substr(0, this.matched.length-1);
-
-        if (lines.length-1) this.yylineno -= lines.length-1;
-        var r = this.yylloc.range;
-
-        this.yylloc = {first_line: this.yylloc.first_line,
-          last_line: this.yylineno+1,
-          first_column: this.yylloc.first_column,
-          last_column: lines ?
-              (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:
-              this.yylloc.first_column - len
-          };
-
-        if (this.options.ranges) {
-            this.yylloc.range = [r[0], r[0] + this.yyleng - len];
-        }
-        return this;
-    },
-more:function () {
-        this._more = true;
-        return this;
-    },
-less:function (n) {
-        this.unput(this.match.slice(n));
-    },
-pastInput:function () {
-        var past = this.matched.substr(0, this.matched.length - this.match.length);
-        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
-    },
-upcomingInput:function () {
-        var next = this.match;
-        if (next.length < 20) {
-            next += this._input.substr(0, 20-next.length);
-        }
-        return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, "");
-    },
-showPosition:function () {
-        var pre = this.pastInput();
-        var c = new Array(pre.length + 1).join("-");
-        return pre + this.upcomingInput() + "\n" + c+"^";
-    },
-next:function () {
-        if (this.done) {
-            return this.EOF;
-        }
-        if (!this._input) this.done = true;
-
-        var token,
-            match,
-            tempMatch,
-            index,
-            col,
-            lines;
-        if (!this._more) {
-            this.yytext = '';
-            this.match = '';
-        }
-        var rules = this._currentRules();
-        for (var i=0;i < rules.length; i++) {
-            tempMatch = this._input.match(this.rules[rules[i]]);
-            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
-                match = tempMatch;
-                index = i;
-                if (!this.options.flex) break;
-            }
-        }
-        if (match) {
-            lines = match[0].match(/(?:\r\n?|\n).*/g);
-            if (lines) this.yylineno += lines.length;
-            this.yylloc = {first_line: this.yylloc.last_line,
-                           last_line: this.yylineno+1,
-                           first_column: this.yylloc.last_column,
-                           last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length};
-            this.yytext += match[0];
-            this.match += match[0];
-            this.matches = match;
-            this.yyleng = this.yytext.length;
-            if (this.options.ranges) {
-                this.yylloc.range = [this.offset, this.offset += this.yyleng];
-            }
-            this._more = false;
-            this._input = this._input.slice(match[0].length);
-            this.matched += match[0];
-            token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);
-            if (this.done && this._input) this.done = false;
-            if (token) return token;
-            else return;
-        }
-        if (this._input === "") {
-            return this.EOF;
-        } else {
-            return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(),
-                    {text: "", token: null, line: this.yylineno});
-        }
-    },
-lex:function lex() {
-        var r = this.next();
-        if (typeof r !== 'undefined') {
-            return r;
-        } else {
-            return this.lex();
-        }
-    },
-begin:function begin(condition) {
-        this.conditionStack.push(condition);
-    },
-popState:function popState() {
-        return this.conditionStack.pop();
-    },
-_currentRules:function _currentRules() {
-        return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;
-    },
-topState:function () {
-        return this.conditionStack[this.conditionStack.length-2];
-    },
-pushState:function begin(condition) {
-        this.begin(condition);
-    }});
-lexer.options = {};
-lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
-
-var YYSTATE=YY_START
-switch($avoiding_name_collisions) {
-case 0: yy_.yytext = "\\"; return 14; 
-break;
-case 1:
-                                   if(yy_.yytext.slice(-1) !== "\\") this.begin("mu");
-                                   if(yy_.yytext.slice(-1) === "\\") yy_.yytext = yy_.yytext.substr(0,yy_.yyleng-1), this.begin("emu");
-                                   if(yy_.yytext) return 14;
-                                 
-break;
-case 2: return 14; 
-break;
-case 3:
-                                   if(yy_.yytext.slice(-1) !== "\\") this.popState();
-                                   if(yy_.yytext.slice(-1) === "\\") yy_.yytext = yy_.yytext.substr(0,yy_.yyleng-1);
-                                   return 14;
-                                 
-break;
-case 4: yy_.yytext = yy_.yytext.substr(0, yy_.yyleng-4); this.popState(); return 15; 
-break;
-case 5: return 25; 
-break;
-case 6: return 16; 
-break;
-case 7: return 20; 
-break;
-case 8: return 19; 
-break;
-case 9: return 19; 
-break;
-case 10: return 23; 
-break;
-case 11: return 22; 
-break;
-case 12: this.popState(); this.begin('com'); 
-break;
-case 13: yy_.yytext = yy_.yytext.substr(3,yy_.yyleng-5); this.popState(); return 15; 
-break;
-case 14: return 22; 
-break;
-case 15: return 37; 
-break;
-case 16: return 36; 
-break;
-case 17: return 36; 
-break;
-case 18: return 40; 
-break;
-case 19: /*ignore whitespace*/ 
-break;
-case 20: this.popState(); return 24; 
-break;
-case 21: this.popState(); return 18; 
-break;
-case 22: yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2).replace(/\\"/g,'"'); return 31; 
-break;
-case 23: yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2).replace(/\\'/g,"'"); return 31; 
-break;
-case 24: return 38; 
-break;
-case 25: return 33; 
-break;
-case 26: return 33; 
-break;
-case 27: return 32; 
-break;
-case 28: return 36; 
-break;
-case 29: yy_.yytext = yy_.yytext.substr(1, yy_.yyleng-2); return 36; 
-break;
-case 30: return 'INVALID'; 
-break;
-case 31: return 5; 
-break;
-}
-};
-lexer.rules = [/^(?:\\\\(?=(\{\{)))/,/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|$)))/,/^(?:[\s\S]*?--\}\})/,/^(?:\{\{>)/,/^(?:\{\{#)/,/^(?:\{\{\/)/,/^(?:\{\{\^)/,/^(?:\{\{\s*else\b)/,/^(?:\{\{\{)/,/^(?:\{\{&)/,/^(?:\{\{!--)/,/^(?:\{\{![\s\S]*?\}\})/,/^(?:\{\{)/,/^(?:=)/,/^(?:\.(?=[}\/ ]))/,/^(?:\.\.)/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}\}\})/,/^(?:\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=[}\s]))/,/^(?:false(?=[}\s]))/,/^(?:-?[0-9]+(?=[}\s]))/,/^(?:[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.]))/,/^(?:\[[^\]]*\])/,/^(?:.)/,/^(?:$)/];
-lexer.conditions = {"mu":{"rules":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],"inclusive":false},"emu":{"rules":[3],"inclusive":false},"com":{"rules":[4],"inclusive":false},"INITIAL":{"rules":[0,1,2,31],"inclusive":true}};
-return lexer;})()
-parser.lexer = lexer;
-function Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;
-return new Parser;
-})();;
-// lib/handlebars/compiler/base.js
-
-Handlebars.Parser = handlebars;
-
-Handlebars.parse = function(input) {
-
-  // Just return if an already-compile AST was passed in.
-  if(input.constructor === Handlebars.AST.ProgramNode) { return input; }
-
-  Handlebars.Parser.yy = Handlebars.AST;
-  return Handlebars.Parser.parse(input);
-};
-;
-// lib/handlebars/compiler/ast.js
-Handlebars.AST = {};
-
-Handlebars.AST.ProgramNode = function(statements, inverse) {
-  this.type = "program";
-  this.statements = statements;
-  if(inverse) { this.inverse = new Handlebars.AST.ProgramNode(inverse); }
-};
-
-Handlebars.AST.MustacheNode = function(rawParams, hash, unescaped) {
-  this.type = "mustache";
-  this.escaped = !unescaped;
-  this.hash = hash;
-
-  var id = this.id = rawParams[0];
-  var params = this.params = rawParams.slice(1);
-
-  // a mustache is an eligible helper if:
-  // * its id is simple (a single part, not `this` or `..`)
-  var eligibleHelper = this.eligibleHelper = id.isSimple;
-
-  // a mustache is definitely a helper if:
-  // * it is an eligible helper, and
-  // * it has at least one parameter or hash segment
-  this.isHelper = eligibleHelper && (params.length || hash);
-
-  // if a mustache is an eligible helper but not a definite
-  // helper, it is ambiguous, and will be resolved in a later
-  // pass or at runtime.
-};
-
-Handlebars.AST.PartialNode = function(partialName, context) {
-  this.type         = "partial";
-  this.partialName  = partialName;
-  this.context      = context;
-};
-
-Handlebars.AST.BlockNode = function(mustache, program, inverse, close) {
-  var verifyMatch = function(open, close) {
-    if(open.original !== close.original) {
-      throw new Handlebars.Exception(open.original + " doesn't match " + close.original);
-    }
-  };
-
-  verifyMatch(mustache.id, close);
-  this.type = "block";
-  this.mustache = mustache;
-  this.program  = program;
-  this.inverse  = inverse;
-
-  if (this.inverse && !this.program) {
-    this.isInverse = true;
-  }
-};
-
-Handlebars.AST.ContentNode = function(string) {
-  this.type = "content";
-  this.string = string;
-};
-
-Handlebars.AST.HashNode = function(pairs) {
-  this.type = "hash";
-  this.pairs = pairs;
-};
-
-Handlebars.AST.IdNode = function(parts) {
-  this.type = "ID";
-
-  var original = "",
-      dig = [],
-      depth = 0;
-
-  for(var i=0,l=parts.length; i<l; i++) {
-    var part = parts[i].part;
-    original += (parts[i].separator || '') + part;
-
-    if (part === ".." || part === "." || part === "this") {
-      if (dig.length > 0) { throw new Handlebars.Exception("Invalid path: " + original); }
-      else if (part === "..") { depth++; }
-      else { this.isScoped = true; }
-    }
-    else { dig.push(part); }
-  }
-
-  this.original = original;
-  this.parts    = dig;
-  this.string   = dig.join('.');
-  this.depth    = depth;
-
-  // an ID is simple if it only has one part, and that part is not
-  // `..` or `this`.
-  this.isSimple = parts.length === 1 && !this.isScoped && depth === 0;
-
-  this.stringModeValue = this.string;
-};
-
-Handlebars.AST.PartialNameNode = function(name) {
-  this.type = "PARTIAL_NAME";
-  this.name = name.original;
-};
-
-Handlebars.AST.DataNode = function(id) {
-  this.type = "DATA";
-  this.id = id;
-};
-
-Handlebars.AST.StringNode = function(string) {
-  this.type = "STRING";
-  this.original =
-    this.string =
-    this.stringModeValue = string;
-};
-
-Handlebars.AST.IntegerNode = function(integer) {
-  this.type = "INTEGER";
-  this.original =
-    this.integer = integer;
-  this.stringModeValue = Number(integer);
-};
-
-Handlebars.AST.BooleanNode = function(bool) {
-  this.type = "BOOLEAN";
-  this.bool = bool;
-  this.stringModeValue = bool === "true";
-};
-
-Handlebars.AST.CommentNode = function(comment) {
-  this.type = "comment";
-  this.comment = comment;
-};
-;
-// lib/handlebars/utils.js
-
-var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];
-
-Handlebars.Exception = function(message) {
-  var tmp = Error.prototype.constructor.apply(this, arguments);
-
-  // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.
-  for (var idx = 0; idx < errorProps.length; idx++) {
-    this[errorProps[idx]] = tmp[errorProps[idx]];
-  }
-};
-Handlebars.Exception.prototype = new Error();
-
-// Build out our basic SafeString type
-Handlebars.SafeString = function(string) {
-  this.string = string;
-};
-Handlebars.SafeString.prototype.toString = function() {
-  return this.string.toString();
-};
-
-var escape = {
-  "&": "&amp;",
-  "<": "&lt;",
-  ">": "&gt;",
-  '"': "&quot;",
-  "'": "&#x27;",
-  "`": "&#x60;"
-};
-
-var badChars = /[&<>"'`]/g;
-var possible = /[&<>"'`]/;
-
-var escapeChar = function(chr) {
-  return escape[chr] || "&amp;";
-};
-
-Handlebars.Utils = {
-  extend: function(obj, value) {
-    for(var key in value) {
-      if(value.hasOwnProperty(key)) {
-        obj[key] = value[key];
-      }
-    }
-  },
-
-  escapeExpression: function(string) {
-    // don't escape SafeStrings, since they're already safe
-    if (string instanceof Handlebars.SafeString) {
-      return string.toString();
-    } else if (string == null || string === false) {
-      return "";
-    }
-
-    // Force a string conversion as this will be done by the append regardless and
-    // the regex test will do this transparently behind the scenes, causing issues if
-    // an object's to string has escaped characters in it.
-    string = string.toString();
-
-    if(!possible.test(string)) { return string; }
-    return string.replace(badChars, escapeChar);
-  },
-
-  isEmpty: function(value) {
-    if (!value && value !== 0) {
-      return true;
-    } else if(toString.call(value) === "[object Array]" && value.length === 0) {
-      return true;
-    } else {
-      return false;
-    }
-  }
-};
-;
-// lib/handlebars/compiler/compiler.js
-
-/*jshint eqnull:true*/
-var Compiler = Handlebars.Compiler = function() {};
-var JavaScriptCompiler = Handlebars.JavaScriptCompiler = function() {};
-
-// the foundHelper register will disambiguate helper lookup from finding a
-// function in a context. This is necessary for mustache compatibility, which
-// requires that context functions in blocks are evaluated by blockHelperMissing,
-// and then proceed as if the resulting value was provided to blockHelperMissing.
-
-Compiler.prototype = {
-  compiler: Compiler,
-
-  disassemble: function() {
-    var opcodes = this.opcodes, opcode, out = [], params, param;
-
-    for (var i=0, l=opcodes.length; i<l; i++) {
-      opcode = opcodes[i];
-
-      if (opcode.opcode === 'DECLARE') {
-        out.push("DECLARE " + opcode.name + "=" + opcode.value);
-      } else {
-        params = [];
-        for (var j=0; j<opcode.args.length; j++) {
-          param = opcode.args[j];
-          if (typeof param === "string") {
-            param = "\"" + param.replace("\n", "\\n") + "\"";
-          }
-          params.push(param);
-        }
-        out.push(opcode.opcode + " " + params.join(" "));
-      }
-    }
-
-    return out.join("\n");
-  },
-  equals: function(other) {
-    var len = this.opcodes.length;
-    if (other.opcodes.length !== len) {
-      return false;
-    }
-
-    for (var i = 0; i < len; i++) {
-      var opcode = this.opcodes[i],
-          otherOpcode = other.opcodes[i];
-      if (opcode.opcode !== otherOpcode.opcode || opcode.args.length !== otherOpcode.args.length) {
-        return false;
-      }
-      for (var j = 0; j < opcode.args.length; j++) {
-        if (opcode.args[j] !== otherOpcode.args[j]) {
-          return false;
-        }
-      }
-    }
-
-    len = this.children.length;
-    if (other.children.length !== len) {
-      return false;
-    }
-    for (i = 0; i < len; i++) {
-      if (!this.children[i].equals(other.children[i])) {
-        return false;
-      }
-    }
-
-    return true;
-  },
-
-  guid: 0,
-
-  compile: function(program, options) {
-    this.children = [];
-    this.depths = {list: []};
-    this.options = options;
-
-    // These changes will propagate to the other compiler components
-    var knownHelpers = this.options.knownHelpers;
-    this.options.knownHelpers = {
-      'helperMissing': true,
-      'blockHelperMissing': true,
-      'each': true,
-      'if': true,
-      'unless': true,
-      'with': true,
-      'log': true
-    };
-    if (knownHelpers) {
-      for (var name in knownHelpers) {
-        this.options.knownHelpers[name] = knownHelpers[name];
-      }
-    }
-
-    return this.program(program);
-  },
-
-  accept: function(node) {
-    return this[node.type](node);
-  },
-
-  program: function(program) {
-    var statements = program.statements, statement;
-    this.opcodes = [];
-
-    for(var i=0, l=statements.length; i<l; i++) {
-      statement = statements[i];
-      this[statement.type](statement);
-    }
-    this.isSimple = l === 1;
-
-    this.depths.list = this.depths.list.sort(function(a, b) {
-      return a - b;
-    });
-
-    return this;
-  },
-
-  compileProgram: function(program) {
-    var result = new this.compiler().compile(program, this.options);
-    var guid = this.guid++, depth;
-
-    this.usePartial = this.usePartial || result.usePartial;
-
-    this.children[guid] = result;
-
-    for(var i=0, l=result.depths.list.length; i<l; i++) {
-      depth = result.depths.list[i];
-
-      if(depth < 2) { continue; }
-      else { this.addDepth(depth - 1); }
-    }
-
-    return guid;
-  },
-
-  block: function(block) {
-    var mustache = block.mustache,
-        program = block.program,
-        inverse = block.inverse;
-
-    if (program) {
-      program = this.compileProgram(program);
-    }
-
-    if (inverse) {
-      inverse = this.compileProgram(inverse);
-    }
-
-    var type = this.classifyMustache(mustache);
-
-    if (type === "helper") {
-      this.helperMustache(mustache, program, inverse);
-    } else if (type === "simple") {
-      this.simpleMustache(mustache);
-
-      // now that the simple mustache is resolved, we need to
-      // evaluate it by executing `blockHelperMissing`
-      this.opcode('pushProgram', program);
-      this.opcode('pushProgram', inverse);
-      this.opcode('emptyHash');
-      this.opcode('blockValue');
-    } else {
-      this.ambiguousMustache(mustache, program, inverse);
-
-      // now that the simple mustache is resolved, we need to
-      // evaluate it by executing `blockHelperMissing`
-      this.opcode('pushProgram', program);
-      this.opcode('pushProgram', inverse);
-      this.opcode('emptyHash');
-      this.opcode('ambiguousBlockValue');
-    }
-
-    this.opcode('append');
-  },
-
-  hash: function(hash) {
-    var pairs = hash.pairs, pair, val;
-
-    this.opcode('pushHash');
-
-    for(var i=0, l=pairs.length; i<l; i++) {
-      pair = pairs[i];
-      val  = pair[1];
-
-      if (this.options.stringParams) {
-        if(val.depth) {
-          this.addDepth(val.depth);
-        }
-        this.opcode('getContext', val.depth || 0);
-        this.opcode('pushStringParam', val.stringModeValue, val.type);
-      } else {
-        this.accept(val);
-      }
-
-      this.opcode('assignToHash', pair[0]);
-    }
-    this.opcode('popHash');
-  },
-
-  partial: function(partial) {
-    var partialName = partial.partialName;
-    this.usePartial = true;
-
-    if(partial.context) {
-      this.ID(partial.context);
-    } else {
-      this.opcode('push', 'depth0');
-    }
-
-    this.opcode('invokePartial', partialName.name);
-    this.opcode('append');
-  },
-
-  content: function(content) {
-    this.opcode('appendContent', content.string);
-  },
-
-  mustache: function(mustache) {
-    var options = this.options;
-    var type = this.classifyMustache(mustache);
-
-    if (type === "simple") {
-      this.simpleMustache(mustache);
-    } else if (type === "helper") {
-      this.helperMustache(mustache);
-    } else {
-      this.ambiguousMustache(mustache);
-    }
-
-    if(mustache.escaped && !options.noEscape) {
-      this.opcode('appendEscaped');
-    } else {
-      this.opcode('append');
-    }
-  },
-
-  ambiguousMustache: function(mustache, program, inverse) {
-    var id = mustache.id,
-        name = id.parts[0],
-        isBlock = program != null || inverse != null;
-
-    this.opcode('getContext', id.depth);
-
-    this.opcode('pushProgram', program);
-    this.opcode('pushProgram', inverse);
-
-    this.opcode('invokeAmbiguous', name, isBlock);
-  },
-
-  simpleMustache: function(mustache) {
-    var id = mustache.id;
-
-    if (id.type === 'DATA') {
-      this.DATA(id);
-    } else if (id.parts.length) {
-      this.ID(id);
-    } else {
-      // Simplified ID for `this`
-      this.addDepth(id.depth);
-      this.opcode('getContext', id.depth);
-      this.opcode('pushContext');
-    }
-
-    this.opcode('resolvePossibleLambda');
-  },
-
-  helperMustache: function(mustache, program, inverse) {
-    var params = this.setupFullMustacheParams(mustache, program, inverse),
-        name = mustache.id.parts[0];
-
-    if (this.options.knownHelpers[name]) {
-      this.opcode('invokeKnownHelper', params.length, name);
-    } else if (this.options.knownHelpersOnly) {
-      throw new Error("You specified knownHelpersOnly, but used the unknown helper " + name);
-    } else {
-      this.opcode('invokeHelper', params.length, name);
-    }
-  },
-
-  ID: function(id) {
-    this.addDepth(id.depth);
-    this.opcode('getContext', id.depth);
-
-    var name = id.parts[0];
-    if (!name) {
-      this.opcode('pushContext');
-    } else {
-      this.opcode('lookupOnContext', id.parts[0]);
-    }
-
-    for(var i=1, l=id.parts.length; i<l; i++) {
-      this.opcode('lookup', id.parts[i]);
-    }
-  },
-
-  DATA: function(data) {
-    this.options.data = true;
-    if (data.id.isScoped || data.id.depth) {
-      throw new Handlebars.Exception('Scoped data references are not supported: ' + data.original);
-    }
-
-    this.opcode('lookupData');
-    var parts = data.id.parts;
-    for(var i=0, l=parts.length; i<l; i++) {
-      this.opcode('lookup', parts[i]);
-    }
-  },
-
-  STRING: function(string) {
-    this.opcode('pushString', string.string);
-  },
-
-  INTEGER: function(integer) {
-    this.opcode('pushLiteral', integer.integer);
-  },
-
-  BOOLEAN: function(bool) {
-    this.opcode('pushLiteral', bool.bool);
-  },
-
-  comment: function() {},
-
-  // HELPERS
-  opcode: function(name) {
-    this.opcodes.push({ opcode: name, args: [].slice.call(arguments, 1) });
-  },
-
-  declare: function(name, value) {
-    this.opcodes.push({ opcode: 'DECLARE', name: name, value: value });
-  },
-
-  addDepth: function(depth) {
-    if(isNaN(depth)) { throw new Error("EWOT"); }
-    if(depth === 0) { return; }
-
-    if(!this.depths[depth]) {
-      this.depths[depth] = true;
-      this.depths.list.push(depth);
-    }
-  },
-
-  classifyMustache: function(mustache) {
-    var isHelper   = mustache.isHelper;
-    var isEligible = mustache.eligibleHelper;
-    var options    = this.options;
-
-    // if ambiguous, we can possibly resolve the ambiguity now
-    if (isEligible && !isHelper) {
-      var name = mustache.id.parts[0];
-
-      if (options.knownHelpers[name]) {
-        isHelper = true;
-      } else if (options.knownHelpersOnly) {
-        isEligible = false;
-      }
-    }
-
-    if (isHelper) { return "helper"; }
-    else if (isEligible) { return "ambiguous"; }
-    else { return "simple"; }
-  },
-
-  pushParams: function(params) {
-    var i = params.length, param;
-
-    while(i--) {
-      param = params[i];
-
-      if(this.options.stringParams) {
-        if(param.depth) {
-          this.addDepth(param.depth);
-        }
-
-        this.opcode('getContext', param.depth || 0);
-        this.opcode('pushStringParam', param.stringModeValue, param.type);
-      } else {
-        this[param.type](param);
-      }
-    }
-  },
-
-  setupMustacheParams: function(mustache) {
-    var params = mustache.params;
-    this.pushParams(params);
-
-    if(mustache.hash) {
-      this.hash(mustache.hash);
-    } else {
-      this.opcode('emptyHash');
-    }
-
-    return params;
-  },
-
-  // this will replace setupMustacheParams when we're done
-  setupFullMustacheParams: function(mustache, program, inverse) {
-    var params = mustache.params;
-    this.pushParams(params);
-
-    this.opcode('pushProgram', program);
-    this.opcode('pushProgram', inverse);
-
-    if(mustache.hash) {
-      this.hash(mustache.hash);
-    } else {
-      this.opcode('emptyHash');
-    }
-
-    return params;
-  }
-};
-
-var Literal = function(value) {
-  this.value = value;
-};
-
-JavaScriptCompiler.prototype = {
-  // PUBLIC API: You can override these methods in a subclass to provide
-  // alternative compiled forms for name lookup and buffering semantics
-  nameLookup: function(parent, name /* , type*/) {
-    if (/^[0-9]+$/.test(name)) {
-      return parent + "[" + name + "]";
-    } else if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
-      return parent + "." + name;
-    }
-    else {
-      return parent + "['" + name + "']";
-    }
-  },
-
-  appendToBuffer: function(string) {
-    if (this.environment.isSimple) {
-      return "return " + string + ";";
-    } else {
-      return {
-        appendToBuffer: true,
-        content: string,
-        toString: function() { return "buffer += " + string + ";"; }
-      };
-    }
-  },
-
-  initializeBuffer: function() {
-    return this.quotedString("");
-  },
-
-  namespace: "Handlebars",
-  // END PUBLIC API
-
-  compile: function(environment, options, context, asObject) {
-    this.environment = environment;
-    this.options = options || {};
-
-    Handlebars.log(Handlebars.logger.DEBUG, this.environment.disassemble() + "\n\n");
-
-    this.name = this.environment.name;
-    this.isChild = !!context;
-    this.context = context || {
-      programs: [],
-      environments: [],
-      aliases: { }
-    };
-
-    this.preamble();
-
-    this.stackSlot = 0;
-    this.stackVars = [];
-    this.registers = { list: [] };
-    this.compileStack = [];
-    this.inlineStack = [];
-
-    this.compileChildren(environment, options);
-
-    var opcodes = environment.opcodes, opcode;
-
-    this.i = 0;
-
-    for(l=opcodes.length; this.i<l; this.i++) {
-      opcode = opcodes[this.i];
-
-      if(opcode.opcode === 'DECLARE') {
-        this[opcode.name] = opcode.value;
-      } else {
-        this[opcode.opcode].apply(this, opcode.args);
-      }
-    }
-
-    return this.createFunctionContext(asObject);
-  },
-
-  nextOpcode: function() {
-    var opcodes = this.environment.opcodes;
-    return opcodes[this.i + 1];
-  },
-
-  eat: function() {
-    this.i = this.i + 1;
-  },
-
-  preamble: function() {
-    var out = [];
-
-    if (!this.isChild) {
-      var namespace = this.namespace;
-
-      var copies = "helpers = this.merge(helpers, " + namespace + ".helpers);";
-      if (this.environment.usePartial) { copies = copies + " partials = this.merge(partials, " + namespace + ".partials);"; }
-      if (this.options.data) { copies = copies + " data = data || {};"; }
-      out.push(copies);
-    } else {
-      out.push('');
-    }
-
-    if (!this.environment.isSimple) {
-      out.push(", buffer = " + this.initializeBuffer());
-    } else {
-      out.push("");
-    }
-
-    // track the last context pushed into place to allow skipping the
-    // getContext opcode when it would be a noop
-    this.lastContext = 0;
-    this.source = out;
-  },
-
-  createFunctionContext: function(asObject) {
-    var locals = this.stackVars.concat(this.registers.list);
-
-    if(locals.length > 0) {
-      this.source[1] = this.source[1] + ", " + locals.join(", ");
-    }
-
-    // Generate minimizer alias mappings
-    if (!this.isChild) {
-      for (var alias in this.context.aliases) {
-        if (this.context.aliases.hasOwnProperty(alias)) {
-          this.source[1] = this.source[1] + ', ' + alias + '=' + this.context.aliases[alias];
-        }
-      }
-    }
-
-    if (this.source[1]) {
-      this.source[1] = "var " + this.source[1].substring(2) + ";";
-    }
-
-    // Merge children
-    if (!this.isChild) {
-      this.source[1] += '\n' + this.context.programs.join('\n') + '\n';
-    }
-
-    if (!this.environment.isSimple) {
-      this.source.push("return buffer;");
-    }
-
-    var params = this.isChild ? ["depth0", "data"] : ["Handlebars", "depth0", "helpers", "partials", "data"];
-
-    for(var i=0, l=this.environment.depths.list.length; i<l; i++) {
-      params.push("depth" + this.environment.depths.list[i]);
-    }
-
-    // Perform a second pass over the output to merge content when possible
-    var source = this.mergeSource();
-
-    if (!this.isChild) {
-      var revision = Handlebars.COMPILER_REVISION,
-          versions = Handlebars.REVISION_CHANGES[revision];
-      source = "this.compilerInfo = ["+revision+",'"+versions+"'];\n"+source;
-    }
-
-    if (asObject) {
-      params.push(source);
-
-      return Function.apply(this, params);
-    } else {
-      var functionSource = 'function ' + (this.name || '') + '(' + params.join(',') + ') {\n  ' + source + '}';
-      Handlebars.log(Handlebars.logger.DEBUG, functionSource + "\n\n");
-      return functionSource;
-    }
-  },
-  mergeSource: function() {
-    // WARN: We are not handling the case where buffer is still populated as the source should
-    // not have buffer append operations as their final action.
-    var source = '',
-        buffer;
-    for (var i = 0, len = this.source.length; i < len; i++) {
-      var line = this.source[i];
-      if (line.appendToBuffer) {
-        if (buffer) {
-          buffer = buffer + '\n    + ' + line.content;
-        } else {
-          buffer = line.content;
-        }
-      } else {
-        if (buffer) {
-          source += 'buffer += ' + buffer + ';\n  ';
-          buffer = undefined;
-        }
-        source += line + '\n  ';
-      }
-    }
-    return source;
-  },
-
-  // [blockValue]
-  //
-  // On stack, before: hash, inverse, program, value
-  // On stack, after: return value of blockHelperMissing
-  //
-  // The purpose of this opcode is to take a block of the form
-  // `{{#foo}}...{{/foo}}`, resolve the value of `foo`, and
-  // replace it on the stack with the result of properly
-  // invoking blockHelperMissing.
-  blockValue: function() {
-    this.context.aliases.blockHelperMissing = 'helpers.blockHelperMissing';
-
-    var params = ["depth0"];
-    this.setupParams(0, params);
-
-    this.replaceStack(function(current) {
-      params.splice(1, 0, current);
-      return "blockHelperMissing.call(" + params.join(", ") + ")";
-    });
-  },
-
-  // [ambiguousBlockValue]
-  //
-  // On stack, before: hash, inverse, program, value
-  // Compiler value, before: lastHelper=value of last found helper, if any
-  // On stack, after, if no lastHelper: same as [blockValue]
-  // On stack, after, if lastHelper: value
-  ambiguousBlockValue: function() {
-    this.context.aliases.blockHelperMissing = 'helpers.blockHelperMissing';
-
-    var params = ["depth0"];
-    this.setupParams(0, params);
-
-    var current = this.topStack();
-    params.splice(1, 0, current);
-
-    // Use the options value generated from the invocation
-    params[params.length-1] = 'options';
-
-    this.source.push("if (!" + this.lastHelper + ") { " + current + " = blockHelperMissing.call(" + params.join(", ") + "); }");
-  },
-
-  // [appendContent]
-  //
-  // On stack, before: ...
-  // On stack, after: ...
-  //
-  // Appends the string value of `content` to the current buffer
-  appendContent: function(content) {
-    this.source.push(this.appendToBuffer(this.quotedString(content)));
-  },
-
-  // [append]
-  //
-  // On stack, before: value, ...
-  // On stack, after: ...
-  //
-  // Coerces `value` to a String and appends it to the current buffer.
-  //
-  // If `value` is truthy, or 0, it is coerced into a string and appended
-  // Otherwise, the empty string is appended
-  append: function() {
-    // Force anything that is inlined onto the stack so we don't have duplication
-    // when we examine local
-    this.flushInline();
-    var local = this.popStack();
-    this.source.push("if(" + local + " || " + local + " === 0) { " + this.appendToBuffer(local) + " }");
-    if (this.environment.isSimple) {
-      this.source.push("else { " + this.appendToBuffer("''") + " }");
-    }
-  },
-
-  // [appendEscaped]
-  //
-  // On stack, before: value, ...
-  // On stack, after: ...
-  //
-  // Escape `value` and append it to the buffer
-  appendEscaped: function() {
-    this.context.aliases.escapeExpression = 'this.escapeExpression';
-
-    this.source.push(this.appendToBuffer("escapeExpression(" + this.popStack() + ")"));
-  },
-
-  // [getContext]
-  //
-  // On stack, before: ...
-  // On stack, after: ...
-  // Compiler value, after: lastContext=depth
-  //
-  // Set the value of the `lastContext` compiler value to the depth
-  getContext: function(depth) {
-    if(this.lastContext !== depth) {
-      this.lastContext = depth;
-    }
-  },
-
-  // [lookupOnContext]
-  //
-  // On stack, before: ...
-  // On stack, after: currentContext[name], ...
-  //
-  // Looks up the value of `name` on the current context and pushes
-  // it onto the stack.
-  lookupOnContext: function(name) {
-    this.push(this.nameLookup('depth' + this.lastContext, name, 'context'));
-  },
-
-  // [pushContext]
-  //
-  // On stack, before: ...
-  // On stack, after: currentContext, ...
-  //
-  // Pushes the value of the current context onto the stack.
-  pushContext: function() {
-    this.pushStackLiteral('depth' + this.lastContext);
-  },
-
-  // [resolvePossibleLambda]
-  //
-  // On stack, before: value, ...
-  // On stack, after: resolved value, ...
-  //
-  // If the `value` is a lambda, replace it on the stack by
-  // the return value of the lambda
-  resolvePossibleLambda: function() {
-    this.context.aliases.functionType = '"function"';
-
-    this.replaceStack(function(current) {
-      return "typeof " + current + " === functionType ? " + current + ".apply(depth0) : " + current;
-    });
-  },
-
-  // [lookup]
-  //
-  // On stack, before: value, ...
-  // On stack, after: value[name], ...
-  //
-  // Replace the value on the stack with the result of looking
-  // up `name` on `value`
-  lookup: function(name) {
-    this.replaceStack(function(current) {
-      return current + " == null || " + current + " === false ? " + current + " : " + this.nameLookup(current, name, 'context');
-    });
-  },
-
-  // [lookupData]
-  //
-  // On stack, before: ...
-  // On stack, after: data[id], ...
-  //
-  // Push the result of looking up `id` on the current data
-  lookupData: function(id) {
-    this.push('data');
-  },
-
-  // [pushStringParam]
-  //
-  // On stack, before: ...
-  // On stack, after: string, currentContext, ...
-  //
-  // This opcode is designed for use in string mode, which
-  // provides the string value of a parameter along with its
-  // depth rather than resolving it immediately.
-  pushStringParam: function(string, type) {
-    this.pushStackLiteral('depth' + this.lastContext);
-
-    this.pushString(type);
-
-    if (typeof string === 'string') {
-      this.pushString(string);
-    } else {
-      this.pushStackLiteral(string);
-    }
-  },
-
-  emptyHash: function() {
-    this.pushStackLiteral('{}');
-
-    if (this.options.stringParams) {
-      this.register('hashTypes', '{}');
-      this.register('hashContexts', '{}');
-    }
-  },
-  pushHash: function() {
-    this.hash = {values: [], types: [], contexts: []};
-  },
-  popHash: function() {
-    var hash = this.hash;
-    this.hash = undefined;
-
-    if (this.options.stringParams) {
-      this.register('hashContexts', '{' + hash.contexts.join(',') + '}');
-      this.register('hashTypes', '{' + hash.types.join(',') + '}');
-    }
-    this.push('{\n    ' + hash.values.join(',\n    ') + '\n  }');
-  },
-
-  // [pushString]
-  //
-  // On stack, before: ...
-  // On stack, after: quotedString(string), ...
-  //
-  // Push a quoted version of `string` onto the stack
-  pushString: function(string) {
-    this.pushStackLiteral(this.quotedString(string));
-  },
-
-  // [push]
-  //
-  // On stack, before: ...
-  // On stack, after: expr, ...
-  //
-  // Push an expression onto the stack
-  push: function(expr) {
-    this.inlineStack.push(expr);
-    return expr;
-  },
-
-  // [pushLiteral]
-  //
-  // On stack, before: ...
-  // On stack, after: value, ...
-  //
-  // Pushes a value onto the stack. This operation prevents
-  // the compiler from creating a temporary variable to hold
-  // it.
-  pushLiteral: function(value) {
-    this.pushStackLiteral(value);
-  },
-
-  // [pushProgram]
-  //
-  // On stack, before: ...
-  // On stack, after: program(guid), ...
-  //
-  // Push a program expression onto the stack. This takes
-  // a compile-time guid and converts it into a runtime-accessible
-  // expression.
-  pushProgram: function(guid) {
-    if (guid != null) {
-      this.pushStackLiteral(this.programExpression(guid));
-    } else {
-      this.pushStackLiteral(null);
-    }
-  },
-
-  // [invokeHelper]
-  //
-  // On stack, before: hash, inverse, program, params..., ...
-  // On stack, after: result of helper invocation
-  //
-  // Pops off the helper's parameters, invokes the helper,
-  // and pushes the helper's return value onto the stack.
-  //
-  // If the helper is not found, `helperMissing` is called.
-  invokeHelper: function(paramSize, name) {
-    this.context.aliases.helperMissing = 'helpers.helperMissing';
-
-    var helper = this.lastHelper = this.setupHelper(paramSize, name, true);
-    var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');
-
-    this.push(helper.name + ' || ' + nonHelper);
-    this.replaceStack(function(name) {
-      return name + ' ? ' + name + '.call(' +
-          helper.callParams + ") " + ": helperMissing.call(" +
-          helper.helperMissingParams + ")";
-    });
-  },
-
-  // [invokeKnownHelper]
-  //
-  // On stack, before: hash, inverse, program, params..., ...
-  // On stack, after: result of helper invocation
-  //
-  // This operation is used when the helper is known to exist,
-  // so a `helperMissing` fallback is not required.
-  invokeKnownHelper: function(paramSize, name) {
-    var helper = this.setupHelper(paramSize, name);
-    this.push(helper.name + ".call(" + helper.callParams + ")");
-  },
-
-  // [invokeAmbiguous]
-  //
-  // On stack, before: hash, inverse, program, params..., ...
-  // On stack, after: result of disambiguation
-  //
-  // This operation is used when an expression like `{{foo}}`
-  // is provided, but we don't know at compile-time whether it
-  // is a helper or a path.
-  //
-  // This operation emits more code than the other options,
-  // and can be avoided by passing the `knownHelpers` and
-  // `knownHelpersOnly` flags at compile-time.
-  invokeAmbiguous: function(name, helperCall) {
-    this.context.aliases.functionType = '"function"';
-
-    this.pushStackLiteral('{}');    // Hash value
-    var helper = this.setupHelper(0, name, helperCall);
-
-    var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
-
-    var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');
-    var nextStack = this.nextStack();
-
-    this.source.push('if (' + nextStack + ' = ' + helperName + ') { ' + nextStack + ' = ' + nextStack + '.call(' + helper.callParams + '); }');
-    this.source.push('else { ' + nextStack + ' = ' + nonHelper + '; ' + nextStack + ' = typeof ' + nextStack + ' === functionType ? ' + nextStack + '.apply(depth0) : ' + nextStack + '; }');
-  },
-
-  // [invokePartial]
-  //
-  // On stack, before: context, ...
-  // On stack after: result of partial invocation
-  //
-  // This operation pops off a context, invokes a partial with that context,
-  // and pushes the result of the invocation back.
-  invokePartial: function(name) {
-    var params = [this.nameLookup('partials', name, 'partial'), "'" + name + "'", this.popStack(), "helpers", "partials"];
-
-    if (this.options.data) {
-      params.push("data");
-    }
-
-    this.context.aliases.self = "this";
-    this.push("self.invokePartial(" + params.join(", ") + ")");
-  },
-
-  // [assignToHash]
-  //
-  // On stack, before: value, hash, ...
-  // On stack, after: hash, ...
-  //
-  // Pops a value and hash off the stack, assigns `hash[key] = value`
-  // and pushes the hash back onto the stack.
-  assignToHash: function(key) {
-    var value = this.popStack(),
-        context,
-        type;
-
-    if (this.options.stringParams) {
-      type = this.popStack();
-      context = this.popStack();
-    }
-
-    var hash = this.hash;
-    if (context) {
-      hash.contexts.push("'" + key + "': " + context);
-    }
-    if (type) {
-      hash.types.push("'" + key + "': " + type);
-    }
-    hash.values.push("'" + key + "': (" + value + ")");
-  },
-
-  // HELPERS
-
-  compiler: JavaScriptCompiler,
-
-  compileChildren: function(environment, options) {
-    var children = environment.children, child, compiler;
-
-    for(var i=0, l=children.length; i<l; i++) {
-      child = children[i];
-      compiler = new this.compiler();
-
-      var index = this.matchExistingProgram(child);
-
-      if (index == null) {
-        this.context.programs.push('');     // Placeholder to prevent name conflicts for nested children
-        index = this.context.programs.length;
-        child.index = index;
-        child.name = 'program' + index;
-        this.context.programs[index] = compiler.compile(child, options, this.context);
-        this.context.environments[index] = child;
-      } else {
-        child.index = index;
-        child.name = 'program' + index;
-      }
-    }
-  },
-  matchExistingProgram: function(child) {
-    for (var i = 0, len = this.context.environments.length; i < len; i++) {
-      var environment = this.context.environments[i];
-      if (environment && environment.equals(child)) {
-        return i;
-      }
-    }
-  },
-
-  programExpression: function(guid) {
-    this.context.aliases.self = "this";
-
-    if(guid == null) {
-      return "self.noop";
-    }
-
-    var child = this.environment.children[guid],
-        depths = child.depths.list, depth;
-
-    var programParams = [child.index, child.name, "data"];
-
-    for(var i=0, l = depths.length; i<l; i++) {
-      depth = depths[i];
-
-      if(depth === 1) { programParams.push("depth0"); }
-      else { programParams.push("depth" + (depth - 1)); }
-    }
-
-    return (depths.length === 0 ? "self.program(" : "self.programWithDepth(") + programParams.join(", ") + ")";
-  },
-
-  register: function(name, val) {
-    this.useRegister(name);
-    this.source.push(name + " = " + val + ";");
-  },
-
-  useRegister: function(name) {
-    if(!this.registers[name]) {
-      this.registers[name] = true;
-      this.registers.list.push(name);
-    }
-  },
-
-  pushStackLiteral: function(item) {
-    return this.push(new Literal(item));
-  },
-
-  pushStack: function(item) {
-    this.flushInline();
-
-    var stack = this.incrStack();
-    if (item) {
-      this.source.push(stack + " = " + item + ";");
-    }
-    this.compileStack.push(stack);
-    return stack;
-  },
-
-  replaceStack: function(callback) {
-    var prefix = '',
-        inline = this.isInline(),
-        stack;
-
-    // If we are currently inline then we want to merge the inline statement into the
-    // replacement statement via ','
-    if (inline) {
-      var top = this.popStack(true);
-
-      if (top instanceof Literal) {
-        // Literals do not need to be inlined
-        stack = top.value;
-      } else {
-        // Get or create the current stack name for use by the inline
-        var name = this.stackSlot ? this.topStackName() : this.incrStack();
-
-        prefix = '(' + this.push(name) + ' = ' + top + '),';
-        stack = this.topStack();
-      }
-    } else {
-      stack = this.topStack();
-    }
-
-    var item = callback.call(this, stack);
-
-    if (inline) {
-      if (this.inlineStack.length || this.compileStack.length) {
-        this.popStack();
-      }
-      this.push('(' + prefix + item + ')');
-    } else {
-      // Prevent modification of the context depth variable. Through replaceStack
-      if (!/^stack/.test(stack)) {
-        stack = this.nextStack();
-      }
-
-      this.source.push(stack + " = (" + prefix + item + ");");
-    }
-    return stack;
-  },
-
-  nextStack: function() {
-    return this.pushStack();
-  },
-
-  incrStack: function() {
-    this.stackSlot++;
-    if(this.stackSlot > this.stackVars.length) { this.stackVars.push("stack" + this.stackSlot); }
-    return this.topStackName();
-  },
-  topStackName: function() {
-    return "stack" + this.stackSlot;
-  },
-  flushInline: function() {
-    var inlineStack = this.inlineStack;
-    if (inlineStack.length) {
-      this.inlineStack = [];
-      for (var i = 0, len = inlineStack.length; i < len; i++) {
-        var entry = inlineStack[i];
-        if (entry instanceof Literal) {
-          this.compileStack.push(entry);
-        } else {
-          this.pushStack(entry);
-        }
-      }
-    }
-  },
-  isInline: function() {
-    return this.inlineStack.length;
-  },
-
-  popStack: function(wrapped) {
-    var inline = this.isInline(),
-        item = (inline ? this.inlineStack : this.compileStack).pop();
-
-    if (!wrapped && (item instanceof Literal)) {
-      return item.value;
-    } else {
-      if (!inline) {
-        this.stackSlot--;
-      }
-      return item;
-    }
-  },
-
-  topStack: function(wrapped) {
-    var stack = (this.isInline() ? this.inlineStack : this.compileStack),
-        item = stack[stack.length - 1];
-
-    if (!wrapped && (item instanceof Literal)) {
-      return item.value;
-    } else {
-      return item;
-    }
-  },
-
-  quotedString: function(str) {
-    return '"' + str
-      .replace(/\\/g, '\\\\')
-      .replace(/"/g, '\\"')
-      .replace(/\n/g, '\\n')
-      .replace(/\r/g, '\\r')
-      .replace(/\u2028/g, '\\u2028')   // Per Ecma-262 7.3 + 7.8.4
-      .replace(/\u2029/g, '\\u2029') + '"';
-  },
-
-  setupHelper: function(paramSize, name, missingParams) {
-    var params = [];
-    this.setupParams(paramSize, params, missingParams);
-    var foundHelper = this.nameLookup('helpers', name, 'helper');
-
-    return {
-      params: params,
-      name: foundHelper,
-      callParams: ["depth0"].concat(params).join(", "),
-      helperMissingParams: missingParams && ["depth0", this.quotedString(name)].concat(params).join(", ")
-    };
-  },
-
-  // the params and contexts arguments are passed in arrays
-  // to fill in
-  setupParams: function(paramSize, params, useRegister) {
-    var options = [], contexts = [], types = [], param, inverse, program;
-
-    options.push("hash:" + this.popStack());
-
-    inverse = this.popStack();
-    program = this.popStack();
-
-    // Avoid setting fn and inverse if neither are set. This allows
-    // helpers to do a check for `if (options.fn)`
-    if (program || inverse) {
-      if (!program) {
-        this.context.aliases.self = "this";
-        program = "self.noop";
-      }
-
-      if (!inverse) {
-       this.context.aliases.self = "this";
-        inverse = "self.noop";
-      }
-
-      options.push("inverse:" + inverse);
-      options.push("fn:" + program);
-    }
-
-    for(var i=0; i<paramSize; i++) {
-      param = this.popStack();
-      params.push(param);
-
-      if(this.options.stringParams) {
-        types.push(this.popStack());
-        contexts.push(this.popStack());
-      }
-    }
-
-    if (this.options.stringParams) {
-      options.push("contexts:[" + contexts.join(",") + "]");
-      options.push("types:[" + types.join(",") + "]");
-      options.push("hashContexts:hashContexts");
-      options.push("hashTypes:hashTypes");
-    }
-
-    if(this.options.data) {
-      options.push("data:data");
-    }
-
-    options = "{" + options.join(",") + "}";
-    if (useRegister) {
-      this.register('options', options);
-      params.push('options');
-    } else {
-      params.push(options);
-    }
-    return params.join(", ");
-  }
-};
-
-var reservedWords = (
-  "break else new var" +
-  " case finally return void" +
-  " catch for switch while" +
-  " continue function this with" +
-  " default if throw" +
-  " delete in try" +
-  " do instanceof typeof" +
-  " abstract enum int short" +
-  " boolean export interface static" +
-  " byte extends long super" +
-  " char final native synchronized" +
-  " class float package throws" +
-  " const goto private transient" +
-  " debugger implements protected volatile" +
-  " double import public let yield"
-).split(" ");
-
-var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};
-
-for(var i=0, l=reservedWords.length; i<l; i++) {
-  compilerWords[reservedWords[i]] = true;
-}
-
-JavaScriptCompiler.isValidJavaScriptVariableName = function(name) {
-  if(!JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]+$/.test(name)) {
-    return true;
-  }
-  return false;
-};
-
-Handlebars.precompile = function(input, options) {
-  if (input == null || (typeof input !== 'string' && input.constructor !== Handlebars.AST.ProgramNode)) {
-    throw new Handlebars.Exception("You must pass a string or Handlebars AST to Handlebars.precompile. You passed " + input);
-  }
-
-  options = options || {};
-  if (!('data' in options)) {
-    options.data = true;
-  }
-  var ast = Handlebars.parse(input);
-  var environment = new Compiler().compile(ast, options);
-  return new JavaScriptCompiler().compile(environment, options);
-};
-
-Handlebars.compile = function(input, options) {
-  if (input == null || (typeof input !== 'string' && input.constructor !== Handlebars.AST.ProgramNode)) {
-    throw new Handlebars.Exception("You must pass a string or Handlebars AST to Handlebars.compile. You passed " + input);
-  }
-
-  options = options || {};
-  if (!('data' in options)) {
-    options.data = true;
-  }
-  var compiled;
-  function compile() {
-    var ast = Handlebars.parse(input);
-    var environment = new Compiler().compile(ast, options);
-    var templateSpec = new JavaScriptCompiler().compile(environment, options, undefined, true);
-    return Handlebars.template(templateSpec);
-  }
-
-  // Template is only compiled on first use and cached after that point.
-  return function(context, options) {
-    if (!compiled) {
-      compiled = compile();
-    }
-    return compiled.call(this, context, options);
-  };
-};
-
-;
-// lib/handlebars/runtime.js
-
-Handlebars.VM = {
-  template: function(templateSpec) {
-    // Just add water
-    var container = {
-      escapeExpression: Handlebars.Utils.escapeExpression,
-      invokePartial: Handlebars.VM.invokePartial,
-      programs: [],
-      program: function(i, fn, data) {
-        var programWrapper = this.programs[i];
-        if(data) {
-          programWrapper = Handlebars.VM.program(i, fn, data);
-        } else if (!programWrapper) {
-          programWrapper = this.programs[i] = Handlebars.VM.program(i, fn);
-        }
-        return programWrapper;
-      },
-      merge: function(param, common) {
-        var ret = param || common;
-
-        if (param && common) {
-          ret = {};
-          Handlebars.Utils.extend(ret, common);
-          Handlebars.Utils.extend(ret, param);
-        }
-        return ret;
-      },
-      programWithDepth: Handlebars.VM.programWithDepth,
-      noop: Handlebars.VM.noop,
-      compilerInfo: null
-    };
-
-    return function(context, options) {
-      options = options || {};
-      var result = templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data);
-
-      var compilerInfo = container.compilerInfo || [],
-          compilerRevision = compilerInfo[0] || 1,
-          currentRevision = Handlebars.COMPILER_REVISION;
-
-      if (compilerRevision !== currentRevision) {
-        if (compilerRevision < currentRevision) {
-          var runtimeVersions = Handlebars.REVISION_CHANGES[currentRevision],
-              compilerVersions = Handlebars.REVISION_CHANGES[compilerRevision];
-          throw "Template was precompiled with an older version of Handlebars than the current runtime. "+
-                "Please update your precompiler to a newer version ("+runtimeVersions+") or downgrade your runtime to an older version ("+compilerVersions+").";
-        } else {
-          // Use the embedded version info since the runtime doesn't know about this revision yet
-          throw "Template was precompiled with a newer version of Handlebars than the current runtime. "+
-                "Please update your runtime to a newer version ("+compilerInfo[1]+").";
-        }
-      }
-
-      return result;
-    };
-  },
-
-  programWithDepth: function(i, fn, data /*, $depth */) {
-    var args = Array.prototype.slice.call(arguments, 3);
-
-    var program = function(context, options) {
-      options = options || {};
-
-      return fn.apply(this, [context, options.data || data].concat(args));
-    };
-    program.program = i;
-    program.depth = args.length;
-    return program;
-  },
-  program: function(i, fn, data) {
-    var program = function(context, options) {
-      options = options || {};
-
-      return fn(context, options.data || data);
-    };
-    program.program = i;
-    program.depth = 0;
-    return program;
-  },
-  noop: function() { return ""; },
-  invokePartial: function(partial, name, context, helpers, partials, data) {
-    var options = { helpers: helpers, partials: partials, data: data };
-
-    if(partial === undefined) {
-      throw new Handlebars.Exception("The partial " + name + " could not be found");
-    } else if(partial instanceof Function) {
-      return partial(context, options);
-    } else if (!Handlebars.compile) {
-      throw new Handlebars.Exception("The partial " + name + " could not be compiled when running in runtime-only mode");
-    } else {
-      partials[name] = Handlebars.compile(partial, {data: data !== undefined});
-      return partials[name](context, options);
-    }
-  }
-};
-
-Handlebars.template = Handlebars.VM.template;
-;
-// lib/handlebars/browser-suffix.js
-})(Handlebars);
-;
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/highlight.7.3.pack.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/highlight.7.3.pack.js
deleted file mode 100644 (file)
index 9a95a75..0000000
+++ /dev/null
@@ -1 +0,0 @@
-var hljs=new function(){function l(o){return o.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function b(p){for(var o=p.firstChild;o;o=o.nextSibling){if(o.nodeName=="CODE"){return o}if(!(o.nodeType==3&&o.nodeValue.match(/\s+/))){break}}}function h(p,o){return Array.prototype.map.call(p.childNodes,function(q){if(q.nodeType==3){return o?q.nodeValue.replace(/\n/g,""):q.nodeValue}if(q.nodeName=="BR"){return"\n"}return h(q,o)}).join("")}function a(q){var p=(q.className+" "+q.parentNode.className).split(/\s+/);p=p.map(function(r){return r.replace(/^language-/,"")});for(var o=0;o<p.length;o++){if(e[p[o]]||p[o]=="no-highlight"){return p[o]}}}function c(q){var o=[];(function p(r,s){for(var t=r.firstChild;t;t=t.nextSibling){if(t.nodeType==3){s+=t.nodeValue.length}else{if(t.nodeName=="BR"){s+=1}else{if(t.nodeType==1){o.push({event:"start",offset:s,node:t});s=p(t,s);o.push({event:"stop",offset:s,node:t})}}}}return s})(q,0);return o}function j(x,v,w){var p=0;var y="";var r=[];function t(){if(x.length&&v.length){if(x[0].offset!=v[0].offset){return(x[0].offset<v[0].offset)?x:v}else{return v[0].event=="start"?x:v}}else{return x.length?x:v}}function s(A){function z(B){return" "+B.nodeName+'="'+l(B.value)+'"'}return"<"+A.nodeName+Array.prototype.map.call(A.attributes,z).join("")+">"}while(x.length||v.length){var u=t().splice(0,1)[0];y+=l(w.substr(p,u.offset-p));p=u.offset;if(u.event=="start"){y+=s(u.node);r.push(u.node)}else{if(u.event=="stop"){var o,q=r.length;do{q--;o=r[q];y+=("</"+o.nodeName.toLowerCase()+">")}while(o!=u.node);r.splice(q,1);while(q<r.length){y+=s(r[q]);q++}}}}return y+l(w.substr(p))}function f(q){function o(s,r){return RegExp(s,"m"+(q.cI?"i":"")+(r?"g":""))}function p(y,w){if(y.compiled){return}y.compiled=true;var s=[];if(y.k){var r={};function z(A,t){t.split(" ").forEach(function(B){var C=B.split("|");r[C[0]]=[A,C[1]?Number(C[1]):1];s.push(C[0])})}y.lR=o(y.l||hljs.IR,true);if(typeof y.k=="string"){z("keyword",y.k)}else{for(var x in y.k){if(!y.k.hasOwnProperty(x)){continue}z(x,y.k[x])}}y.k=r}if(w){if(y.bWK){y.b="\\b("+s.join("|")+")\\s"}y.bR=o(y.b?y.b:"\\B|\\b");if(!y.e&&!y.eW){y.e="\\B|\\b"}if(y.e){y.eR=o(y.e)}y.tE=y.e||"";if(y.eW&&w.tE){y.tE+=(y.e?"|":"")+w.tE}}if(y.i){y.iR=o(y.i)}if(y.r===undefined){y.r=1}if(!y.c){y.c=[]}for(var v=0;v<y.c.length;v++){if(y.c[v]=="self"){y.c[v]=y}p(y.c[v],y)}if(y.starts){p(y.starts,w)}var u=[];for(var v=0;v<y.c.length;v++){u.push(y.c[v].b)}if(y.tE){u.push(y.tE)}if(y.i){u.push(y.i)}y.t=u.length?o(u.join("|"),true):{exec:function(t){return null}}}p(q)}function d(D,E){function o(r,M){for(var L=0;L<M.c.length;L++){var K=M.c[L].bR.exec(r);if(K&&K.index==0){return M.c[L]}}}function s(K,r){if(K.e&&K.eR.test(r)){return K}if(K.eW){return s(K.parent,r)}}function t(r,K){return K.i&&K.iR.test(r)}function y(L,r){var K=F.cI?r[0].toLowerCase():r[0];return L.k.hasOwnProperty(K)&&L.k[K]}function G(){var K=l(w);if(!A.k){return K}var r="";var N=0;A.lR.lastIndex=0;var L=A.lR.exec(K);while(L){r+=K.substr(N,L.index-N);var M=y(A,L);if(M){v+=M[1];r+='<span class="'+M[0]+'">'+L[0]+"</span>"}else{r+=L[0]}N=A.lR.lastIndex;L=A.lR.exec(K)}return r+K.substr(N)}function z(){if(A.sL&&!e[A.sL]){return l(w)}var r=A.sL?d(A.sL,w):g(w);if(A.r>0){v+=r.keyword_count;B+=r.r}return'<span class="'+r.language+'">'+r.value+"</span>"}function J(){return A.sL!==undefined?z():G()}function I(L,r){var K=L.cN?'<span class="'+L.cN+'">':"";if(L.rB){x+=K;w=""}else{if(L.eB){x+=l(r)+K;w=""}else{x+=K;w=r}}A=Object.create(L,{parent:{value:A}});B+=L.r}function C(K,r){w+=K;if(r===undefined){x+=J();return 0}var L=o(r,A);if(L){x+=J();I(L,r);return L.rB?0:r.length}var M=s(A,r);if(M){if(!(M.rE||M.eE)){w+=r}x+=J();do{if(A.cN){x+="</span>"}A=A.parent}while(A!=M.parent);if(M.eE){x+=l(r)}w="";if(M.starts){I(M.starts,"")}return M.rE?0:r.length}if(t(r,A)){throw"Illegal"}w+=r;return r.length||1}var F=e[D];f(F);var A=F;var w="";var B=0;var v=0;var x="";try{var u,q,p=0;while(true){A.t.lastIndex=p;u=A.t.exec(E);if(!u){break}q=C(E.substr(p,u.index-p),u[0]);p=u.index+q}C(E.substr(p));return{r:B,keyword_count:v,value:x,language:D}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:l(E)}}else{throw H}}}function g(s){var o={keyword_count:0,r:0,value:l(s)};var q=o;for(var p in e){if(!e.hasOwnProperty(p)){continue}var r=d(p,s);r.language=p;if(r.keyword_count+r.r>q.keyword_count+q.r){q=r}if(r.keyword_count+r.r>o.keyword_count+o.r){q=o;o=r}}if(q.language){o.second_best=q}return o}function i(q,p,o){if(p){q=q.replace(/^((<[^>]+>|\t)+)/gm,function(r,v,u,t){return v.replace(/\t/g,p)})}if(o){q=q.replace(/\n/g,"<br>")}return q}function m(r,u,p){var v=h(r,p);var t=a(r);if(t=="no-highlight"){return}var w=t?d(t,v):g(v);t=w.language;var o=c(r);if(o.length){var q=document.createElement("pre");q.innerHTML=w.value;w.value=j(o,c(q),v)}w.value=i(w.value,u,p);var s=r.className;if(!s.match("(\\s|^)(language-)?"+t+"(\\s|$)")){s=s?(s+" "+t):t}r.innerHTML=w.value;r.className=s;r.result={language:t,kw:w.keyword_count,re:w.r};if(w.second_best){r.second_best={language:w.second_best.language,kw:w.second_best.keyword_count,re:w.second_best.r}}}function n(){if(n.called){return}n.called=true;Array.prototype.map.call(document.getElementsByTagName("pre"),b).filter(Boolean).forEach(function(o){m(o,hljs.tabReplace)})}function k(){window.addEventListener("DOMContentLoaded",n,false);window.addEventListener("load",n,false)}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=m;this.initHighlighting=n;this.initHighlightingOnLoad=k;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(q,r){var o={};for(var p in q){o[p]=q[p]}if(r){for(var p in r){o[p]=r[p]}}return o}}();hljs.LANGUAGES.xml=function(a){var c="[A-Za-z0-9\\._:-]+";var b={eW:true,c:[{cN:"attribute",b:c,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[b],starts:{e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:"[^ />]+"},b]}]}}(hljs);hljs.LANGUAGES.json=function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}}(hljs);
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery-1.8.0.min.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery-1.8.0.min.js
deleted file mode 100644 (file)
index f121291..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery v@1.8.0 jquery.com | jquery.org/license */\r
-(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d<e;d++)p.event.add(b,c,h[c][d])}g.data&&(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?(b.parentNode&&(b.outerHTML=a.outerHTML),p.support.html5Clone&&a.innerHTML&&!p.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):c==="input"&&bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bG(a){bv.test(a.type)&&(a.defaultChecked=a.checked)}function bX(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bV.length;while(e--){b=bV[e]+c;if(b in a)return b}return d}function bY(a,b){return a=b||a,p.css(a,"display")==="none"||!p.contains(a.ownerDocument,a)}function bZ(a,b){var c,d,e=[],f=0,g=a.length;for(;f<g;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,"olddisplay"),b?(!e[f]&&c.style.display==="none"&&(c.style.display=""),c.style.display===""&&bY(c)&&(e[f]=p._data(c,"olddisplay",cb(c.nodeName)))):(d=bH(c,"display"),!e[f]&&d!=="none"&&p._data(c,"olddisplay",d))}for(f=0;f<g;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display==="none"||c.style.display==="")c.style.display=b?e[f]||"":"none"}return a}function b$(a,b,c){var d=bO.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function b_(a,b,c,d){var e=c===(d?"border":"content")?4:b==="width"?1:0,f=0;for(;e<4;e+=2)c==="margin"&&(f+=p.css(a,c+bU[e],!0)),d?(c==="content"&&(f-=parseFloat(bH(a,"padding"+bU[e]))||0),c!=="margin"&&(f-=parseFloat(bH(a,"border"+bU[e]+"Width"))||0)):(f+=parseFloat(bH(a,"padding"+bU[e]))||0,c!=="padding"&&(f+=parseFloat(bH(a,"border"+bU[e]+"Width"))||0));return f}function ca(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing&&p.css(a,"boxSizing")==="border-box";if(d<=0){d=bH(a,b);if(d<0||d==null)d=a.style[b];if(bP.test(d))return d;e=f&&(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+b_(a,b,c||(f?"border":"content"),e)+"px"}function cb(a){if(bR[a])return bR[a];var b=p("<"+a+">").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write("<!doctype html><html><body>"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bR[a]=c,c}function ch(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||cd.test(a)?d(a,e):ch(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ch(a+"["+e+"]",b[e],c,d);else d(a,b)}function cy(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h<i;h++)d=g[h],f=/^\+/.test(d),f&&(d=d.substr(1)||"*"),e=a[d]=a[d]||[],e[f?"unshift":"push"](c)}}function cz(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cu;for(;j<k&&(l||!h);j++)h=i[j](c,d,e),typeof h=="string"&&(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cz(a,c,d,e,h,g)));return(l||!h)&&!g["*"]&&(h=cz(a,c,d,e,"*",g)),h}function cA(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((f[d]?a:e||(e={}))[d]=c[d]);e&&p.extend(!0,a,e)}function cB(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d&&(c[k[f]]=d[f]);while(j[0]==="*")j.shift(),e===b&&(e=a.mimeType||c.getResponseHeader("content-type"));if(e)for(f in i)if(i[f]&&i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+" "+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]&&j.unshift(g),d[g]}function cC(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter&&(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!=="*"){if(h!=="*"&&h!==e){c=i[h+" "+e]||i["* "+e];if(!c)for(d in i){f=d.split(" ");if(f[1]===e){c=i[h+" "+f[0]]||i["* "+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c&&a["throws"])b=c(b);else try{b=c(b)}catch(k){return{state:"parsererror",error:c?k:"No conversion from "+h+" to "+e}}}h=e}return{state:"success",data:b}}function cK(){try{return new a.XMLHttpRequest}catch(b){}}function cL(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cT(){return setTimeout(function(){cM=b},0),cM=p.now()}function cU(a,b){p.each(b,function(b,c){var d=(cS[b]||[]).concat(cS["*"]),e=0,f=d.length;for(;e<f;e++)if(d[e].call(a,b,c))return})}function cV(a,b,c){var d,e=0,f=0,g=cR.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cM||cT(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e<f;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d<1&&f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cM||cT(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c<d;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cW(k,j.opts.specialEasing);for(;e<g;e++){d=cR[e].call(j,a,k,j.opts);if(d)return d}return cU(j,k),p.isFunction(j.opts.start)&&j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cW(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cX(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType&&bY(a);c.queue||(j=p._queueHooks(a,"fx"),j.unqueued==null&&(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,"fx").length||j.empty.fire()})})),a.nodeType===1&&("height"in b||"width"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,"display")==="inline"&&p.css(a,"float")==="none"&&(!p.support.inlineBlockNeedsLayout||cb(a.nodeName)==="inline"?m.display="inline-block":m.zoom=1)),c.overflow&&(m.overflow="hidden",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cO.exec(f)){delete b[d];if(f===(q?"hide":"show"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,"fxshow")||p._data(a,"fxshow",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,"fxshow",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d<g;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q&&(i.end=i.start,i.start=e==="width"||e==="height"?1:0))}}function cY(a,b,c,d,e){return new cY.prototype.init(a,b,c,d,e)}function cZ(a,b){var c,d={height:a},e=0;for(;e<4;e+=2-b)c=bU[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function c_(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,r=/\S/,s=/\s+/,t=r.test(" ")?/^[\s\xA0]+|[\s\xA0]+$/g:/^\s+|\s+$/g,u=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.0",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i<j;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k&&e&&(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d&&p.isArray(d)?d:[]):g=d&&p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b&&(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p&&(a.$=i),b&&a.jQuery===p&&(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0&&--p.readyWait>0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f<g;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f<g;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o?function(a){return a==null?"":o.call(a)}:function(a){return a==null?"":a.toString().replace(t,"")},makeArray:function(a,b){var c,d=b||[];return a!=null&&(c=p.type(a),a.length==null||c==="string"||c==="function"||c==="regexp"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if(typeof d=="number")for(;f<d;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f<g;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b&&typeof i=="number"&&(i>0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h<i;h++)e=c(a[h],h,d),e!=null&&(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null&&(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c=="string"&&(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||f.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d&&typeof d=="object"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b&&p.isFunction(e),j&&(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k<l;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState==="complete"||e.readyState!=="loading"&&e.addEventListener)setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener("DOMContentLoaded",D,!1),a.addEventListener("load",p.ready,!1);else{e.attachEvent("onreadystatechange",D),a.attachEvent("onload",p.ready);var c=!1;try{c=a.frameElement==null&&e.documentElement}catch(f){}c&&c.doScroll&&function g(){if(!p.isReady){try{c.doScroll("left")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){E["[object "+b+"]"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a=="string"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once&&[],k=function(b){c=a.memory&&b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i&&h<g;h++)if(i[h].apply(b[0],b[1])===!1&&a.stopOnFalse){c=!1;break}e=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){p.isFunction(c)&&(!a.unique||!l.has(c))?i.push(c):c&&c.length&&d(c)})})(arguments),e?g=i.length:c&&(f=b,k(c))}return this},remove:function(){return i&&p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))>-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b<d;b++)c[b]&&p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement("div");n.setAttribute("className","t"),n.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="<div></div>",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/^(?:\{.*\}|\[.*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e<f;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute("classid")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1&&!p._data(i,"parsedAttrs")){f=i.attributes;for(h=f.length;j<h;j++)g=f[j].name,g.indexOf("data-")===0&&(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,"parsedAttrs",!0)}}return k}return typeof a=="object"?this.each(function(){p.data(this,a)}):(d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!",p.access(this,function(c){if(c===b)return k=this.triggerHandler("getData"+e,[d[0]]),k===b&&i&&(k=p.data(i,a),k=J(i,a,k)),k===b&&d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler("setData"+e,d),p.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.shift(),e=p._queueHooks(a,b),f=function(){p.dequeue(a,b)};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),delete e.stop,d.call(a,f,e)),!c.length&&e&&e.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length<d?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a==="fx"&&b[0]!=="inprogress"&&p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!="string"&&(c=a,a=b),a=a||"fx";while(h--)(d=p._data(g[h],a+"queueHooks"))&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\t\r\n]/g,P=/\r/g,Q=/^(?:button|input)$/i,R=/^(?:button|input|object|select|textarea)$/i,S=/^a(?:rea|)$/i,T=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,U=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{f=" "+e.className+" ";for(g=0,h=b.length;g<h;g++)~f.indexOf(" "+b[g]+" ")||(f+=b[g]+" ");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(s);for(h=0,i=this.length;h<i;h++){e=this[h];if(e.nodeType===1&&e.className){d=(" "+e.className+" ").replace(O," ");for(f=0,g=c.length;f<g;f++)while(d.indexOf(" "+c[f]+" ")>-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(O," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c<d;c++){e=h[c];if(e.selected&&(p.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!p.nodeName(e.parentNode,"optgroup"))){b=p(e).val();if(i)return b;g.push(b)}}return i&&!g.length&&h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find("option").each(function(){this.selected=p.inArray(p(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g<d.length;g++)e=d[g],e&&(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,""),a.removeAttribute(U?e:c),f&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)&&a.parentNode)p.error("type property can't be changed");else if(!p.support.radioValue&&b==="radio"&&p.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}},value:{get:function(a,b){return L&&p.nodeName(a,"button")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L&&p.nodeName(a,"button"))return L.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g&&(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&(e=f.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):R.test(a.nodeName)||S.test(a.nodeName)&&a.href?0:b}}}}),M={get:function(a,c){var d,e=p.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d&&(N[c]?d.value!=="":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+""}},p.each(["width","height"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c==="")return a.setAttribute(b,"auto"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===""&&(b="false"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each(["href","src","width","height"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype="encoding"),p.support.checkOn||p.each(["radio","checkbox"],function(){p.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),p.each(["radio","checkbox"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)>=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j<c.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||"").split(".").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,namespace:m.join(".")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent&&a.attachEvent("on"+l,h)}r.add&&(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)&&p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||"")).split(" ");for(f=0;f<b.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(l=0;l<o.length;l++)q=o[l],(e||i===q.origType)&&(!c||c.guid===q.guid)&&(!j||j.test(q.namespace))&&(!d||d===q.selector||d==="**"&&q.selector)&&(o.splice(l--,1),q.selector&&o.delegateCount--,n.remove&&n.remove.call(a,q));o.length===0&&k!==o.length&&((!n.teardown||n.teardown.call(a,j,r.handle)===!1)&&p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)&&(delete r.handle,p.removeData(a,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3&&f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf("!")>=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j<q.length&&!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,"events")||{})[c.type]&&p._data(k,"handle"),o&&o.apply(k,d),o=m&&k[m],o&&p.acceptData(k)&&o.apply(k,d)===!1&&c.preventDefault();return c.type=s,!g&&!c.isDefaultPrevented()&&(!n._default||n._default.apply(f.ownerDocument,d)===!1)&&(s!=="click"||!p.nodeName(f,"a"))&&p.acceptData(f)&&m&&f[s]&&(s!=="focus"&&s!=="blur"||c.target.offsetWidth!==0)&&!p.isWindow(f)&&(l=f[m],l&&(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l&&(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,k,l,m,n,o=(p._data(this,"events")||{})[c.type]||[],q=o.delegateCount,r=[].slice.call(arguments),s=!c.exclusive&&!c.namespace,t=p.event.special[c.type]||{},u=[];r[0]=c,c.delegateTarget=this;if(t.preDispatch&&t.preDispatch.call(this,c)===!1)return;if(q&&(!c.button||c.type!=="click")){g=p(this),g.context=this;for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!=="click"){i={},k=[],g[0]=f;for(d=0;d<q;d++)l=o[d],m=l.selector,i[m]===b&&(i[m]=g.is(m)),i[m]&&k.push(l);k.length&&u.push({elem:f,matches:k})}}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d<u.length&&!c.isPropagationStopped();d++){j=u[d],c.currentTarget=j.elem;for(e=0;e<j.matches.length&&!c.isImmediatePropagationStopped();e++){l=j.matches[e];if(s||!c.namespace&&!l.namespace||c.namespace_re&&c.namespace_re.test(l.namespace))c.data=l.data,c.handleObj=l,h=((p.event.special[l.origType]||{}).handle||l.handler).apply(j.elem,r),h!==b&&(c.result=h,h===!1&&(c.preventDefault(),c.stopPropagation()))}}return t.postDispatch&&t.postDispatch.call(this,c),c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null&&c.clientX!=null&&(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?c.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{ready:{setup:p.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){p.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]=="undefined"&&(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?bb:ba):this.type=a,b&&p.extend(this,b),this.timeStamp=a&&a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d&&!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,"form"))return!1;p.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=p.nodeName(c,"input")||p.nodeName(c,"button")?c.form:b;d&&!p._data(d,"_submit_attached")&&(p.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),p._data(d,"_submit_attached",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&p.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,"form"))return!1;p.event.remove(this,"._submit")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")p.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),p.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),p.event.simulate("change",this,a,!0)});return!1}p.event.add(this,"beforeactivate._change",function(a){var b=a.target;V.test(b.nodeName)&&!p._data(b,"_change_attached")&&(p.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&p.event.simulate("change",this.parentNode,a,!0)}),p._data(b,"_change_attached",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){return p.event.remove(this,"._change"),V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0&&e.addEventListener(a,d,!0)},teardown:function(){--c===0&&e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=ba;else if(!e)return this;return f===1&&(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a=="object"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c=="function")d=c,c=b;return d===!1&&(d=ba),this.each(function(){p.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||"**",b),this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a||"**",c)},trigger:function(a,b){return this.each(function(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,"lastToggle"+a.guid)||0)%d;return p._data(this,"lastToggle"+a.guid,e+1),c.preventDefault(),b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),p.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){p.fn[b]=function(a,c){return c==null&&(c=a,a=null),arguments.length>0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bd(a,b,c,d){var e=0,f=b.length;for(;e<f;e++)Z(a,b[e],c,d)}function be(a,b,c,d,e,f){var g,h=$.setFilters[b.toLowerCase()];return h||Z.error(b),(a||!(g=e))&&bd(a||"*",d,g=[],e),g.length>0?h(g,c,f):[]}function bf(a,c,d,e,f){var g,h,i,j,k,l,m,n,p=0,q=f.length,s=L.POS,t=new RegExp("^"+s.source+"(?!"+r+")","i"),u=function(){var a=1,c=arguments.length-2;for(;a<c;a++)arguments[a]===b&&(g[a]=b)};for(;p<q;p++){s.exec(""),a=f[p],j=[],i=0,k=e;while(g=s.exec(a)){n=s.lastIndex=g.index+g[0].length;if(n>i){m=a.slice(i,g.index),i=n,l=[c],B.test(m)&&(k&&(l=k),k=e);if(h=H.test(m))m=m.slice(0,-5).replace(B,"$&*");g.length>1&&g[0].replace(t,u),k=be(m,g[1],g[2],l,k,h)}}k?(j=j.concat(k),(m=a.slice(i))&&m!==")"?B.test(m)?bd(m,j,d,e):Z(m,c,d,e?e.concat(k):k):o.apply(d,j)):Z(a,c,d,e)}return q===1?d:Z.uniqueSort(d)}function bg(a,b,c){var d,e,f,g=[],i=0,j=D.exec(a),k=!j.pop()&&!j.pop(),l=k&&a.match(C)||[""],m=$.preFilter,n=$.filter,o=!c&&b!==h;for(;(e=l[i])!=null&&k;i++){g.push(d=[]),o&&(e=" "+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({part:j.pop().replace(A," "),captures:j});for(f in n)(j=L[f].exec(e))&&(!m[f]||(j=m[f](j,b,c)))&&(e=e.slice(j.shift().length),k=d.push({part:f,captures:j}));if(!k)break}}return k||Z.error(a),g}function bh(a,b,e){var f=b.dir,g=m++;return a||(a=function(a){return a===e}),b.first?function(b,c){while(b=b[f])if(b.nodeType===1)return a(b,c)&&b}:function(b,e){var h,i=g+"."+d,j=i+"."+c;while(b=b[f])if(b.nodeType===1){if((h=b[q])===j)return b.sizset;if(typeof h=="string"&&h.indexOf(i)===0){if(b.sizset)return b}else{b[q]=j;if(a(b,e))return b.sizset=!0,b;b.sizset=!1}}}}function bi(a,b){return a?function(c,d){var e=b(c,d);return e&&a(e===!0?c:e,d)}:b}function bj(a,b,c){var d,e,f=0;for(;d=a[f];f++)$.relative[d.part]?e=bh(e,$.relative[d.part],b):(d.captures.push(b,c),e=bi(e,$.filter[d.part].apply(null,d.captures)));return e}function bk(a){return function(b,c){var d,e=0;for(;d=a[e];e++)if(d(b,c))return!0;return!1}}var c,d,e,f,g,h=a.document,i=h.documentElement,j="undefined",k=!1,l=!0,m=0,n=[].slice,o=[].push,q=("sizcache"+Math.random()).replace(".",""),r="[\\x20\\t\\r\\n\\f]",s="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",t=s.replace("w","w#"),u="([*^$|!~]?=)",v="\\["+r+"*("+s+")"+r+"*(?:"+u+r+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+t+")|)|)"+r+"*\\]",w=":("+s+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)",x=":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)",y=r+"*([\\x20\\t\\r\\n\\f>+~])"+r+"*",z="(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|"+v+"|"+w.replace(2,7)+"|[^\\\\(),])+",A=new RegExp("^"+r+"+|((?:^|[^\\\\])(?:\\\\.)*)"+r+"+$","g"),B=new RegExp("^"+y),C=new RegExp(z+"?(?="+r+"*,|$)","g"),D=new RegExp("^(?:(?!,)(?:(?:^|,)"+r+"*"+z+")*?|"+r+"*(.*?))(\\)|$)"),E=new RegExp(z.slice(19,-6)+"\\x20\\t\\r\\n\\f>+~])+|"+y,"g"),F=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,G=/[\x20\t\r\n\f]*[+~]/,H=/:not\($/,I=/h\d/i,J=/input|select|textarea|button/i,K=/\\(?!\\)/g,L={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),NAME:new RegExp("^\\[name=['\"]?("+s+")['\"]?\\]"),TAG:new RegExp("^("+s.replace("[-","[-\\*")+")"),ATTR:new RegExp("^"+v),PSEUDO:new RegExp("^"+w),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+r+"*(even|odd|(([+-]|)(\\d*)n|)"+r+"*(?:([+-]|)"+r+"*(\\d+)|))"+r+"*\\)|)","i"),POS:new RegExp(x,"ig"),needsContext:new RegExp("^"+r+"*[>+~]|"+x,"i")},M={},N=[],O={},P=[],Q=function(a){return a.sizzleFilter=!0,a},R=function(a){return function(b){return b.nodeName.toLowerCase()==="input"&&b.type===a}},S=function(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}},T=function(a){var b=!1,c=h.createElement("div");try{b=a(c)}catch(d){}return c=null,b},U=T(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),V=T(function(a){a.id=q+0,a.innerHTML="<a name='"+q+"'></a><div name='"+q+"'></div>",i.insertBefore(a,i.firstChild);var b=h.getElementsByName&&h.getElementsByName(q).length===2+h.getElementsByName(q+0).length;return g=!h.getElementById(q),i.removeChild(a),b}),W=T(function(a){return a.appendChild(h.createComment("")),a.getElementsByTagName("*").length===0}),X=T(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==j&&a.firstChild.getAttribute("href")==="#"}),Y=T(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!a.getElementsByClassName||a.getElementsByClassName("e").length===0?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length!==1)}),Z=function(a,b,c,d){c=c||[],b=b||h;var e,f,g,i,j=b.nodeType;if(j!==1&&j!==9)return[];if(!a||typeof a!="string")return c;g=ba(b);if(!g&&!d)if(e=F.exec(a))if(i=e[1]){if(j===9){f=b.getElementById(i);if(!f||!f.parentNode)return c;if(f.id===i)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(i))&&bb(b,f)&&f.id===i)return c.push(f),c}else{if(e[2])return o.apply(c,n.call(b.getElementsByTagName(a),0)),c;if((i=e[3])&&Y&&b.getElementsByClassName)return o.apply(c,n.call(b.getElementsByClassName(i),0)),c}return bm(a,b,c,d,g)},$=Z.selectors={cacheLength:50,match:L,order:["ID","TAG"],attrHandle:{},createPseudo:Q,find:{ID:g?function(a,b,c){if(typeof b.getElementById!==j&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==j&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==j&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:W?function(a,b){if(typeof b.getElementsByTagName!==j)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(K,""),a[3]=(a[4]||a[5]||"").replace(K,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||Z.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&Z.error(a[0]),a},PSEUDO:function(a){var b,c=a[4];return L.CHILD.test(a[0])?null:(c&&(b=D.exec(c))&&b.pop()&&(a[0]=a[0].slice(0,b[0].length-c.length-1),c=b[0].slice(0,-1)),a.splice(2,3,c||a[3]),a)}},filter:{ID:g?function(a){return a=a.replace(K,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(K,""),function(b){var c=typeof b.getAttributeNode!==j&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(K,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=M[a];return b||(b=M[a]=new RegExp("(^|"+r+")"+a+"("+r+"|$)"),N.push(a),N.length>$.cacheLength&&delete M[N.shift()]),function(a){return b.test(a.className||typeof a.getAttribute!==j&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=Z.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return Z.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=m++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[q]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[q]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e=$.pseudos[a]||$.pseudos[a.toLowerCase()];return e||Z.error("unsupported pseudo: "+a),e.sizzleFilter?e(b,c,d):e}},pseudos:{not:Q(function(a,b,c){var d=bl(a.replace(A,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!$.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:Q(function(a){return function(b){return(b.textContent||b.innerText||bc(b)).indexOf(a)>-1}}),has:Q(function(a){return function(b){return Z(a,b).length>0}}),header:function(a){return I.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:R("radio"),checkbox:R("checkbox"),file:R("file"),password:R("password"),image:R("image"),submit:S("submit"),reset:S("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return J.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e<f;e=e+2)d.push(a[e]);return d},odd:function(a,b,c){var d=[],e=c?0:1,f=a.length;for(;e<f;e=e+2)d.push(a[e]);return d},lt:function(a,b,c){return c?a.slice(+b):a.slice(0,+b)},gt:function(a,b,c){return c?a.slice(0,+b+1):a.slice(+b+1)},eq:function(a,b,c){var d=a.splice(+b,1);return c?a:d}}};$.setFilters.nth=$.setFilters.eq,$.filters=$.pseudos,X||($.attrHandle={href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}}),V&&($.order.push("NAME"),$.find.NAME=function(a,b){if(typeof b.getElementsByName!==j)return b.getElementsByName(a)}),Y&&($.order.splice(1,0,"CLASS"),$.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!==j&&!c)return b.getElementsByClassName(a)});try{n.call(i.childNodes,0)[0].nodeType}catch(_){n=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}var ba=Z.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},bb=Z.contains=i.compareDocumentPosition?function(a,b){return!!(a.compareDocumentPosition(b)&16)}:i.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc=Z.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=bc(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=bc(b);return c};Z.attr=function(a,b){var c,d=ba(a);return d||(b=b.toLowerCase()),$.attrHandle[b]?$.attrHandle[b](a):U||d?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},Z.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},[0,0].sort(function(){return l=0}),i.compareDocumentPosition?e=function(a,b){return a===b?(k=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)&4)?-1:1}:(e=function(a,b){if(a===b)return k=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],g=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return f(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)g.unshift(j),j=j.parentNode;c=e.length,d=g.length;for(var l=0;l<c&&l<d;l++)if(e[l]!==g[l])return f(e[l],g[l]);return l===c?f(a,g[l],-1):f(e[l],b,1)},f=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),Z.uniqueSort=function(a){var b,c=1;if(e){k=l,a.sort(e);if(k)for(;b=a[c];c++)b===a[c-1]&&a.splice(c--,1)}return a};var bl=Z.compile=function(a,b,c){var d,e,f,g=O[a];if(g&&g.context===b)return g;e=bg(a,b,c);for(f=0;d=e[f];f++)e[f]=bj(d,b,c);return g=O[a]=bk(e),g.context=b,g.runs=g.dirruns=0,P.push(a),P.length>$.cacheLength&&delete O[P.shift()],g};Z.matches=function(a,b){return Z(a,null,null,b)},Z.matchesSelector=function(a,b){return Z(b,null,null,[a]).length>0};var bm=function(a,b,e,f,g){a=a.replace(A,"$1");var h,i,j,k,l,m,p,q,r,s=a.match(C),t=a.match(E),u=b.nodeType;if(L.POS.test(a))return bf(a,b,e,f,s);if(f)h=n.call(f,0);else if(s&&s.length===1){if(t.length>1&&u===9&&!g&&(s=L.ID.exec(t[0]))){b=$.find.ID(s[1],b,g)[0];if(!b)return e;a=a.slice(t.shift().length)}q=(s=G.exec(t[0]))&&!s.index&&b.parentNode||b,r=t.pop(),m=r.split(":not")[0];for(j=0,k=$.order.length;j<k;j++){p=$.order[j];if(s=L[p].exec(m)){h=$.find[p]((s[1]||"").replace(K,""),q,g);if(h==null)continue;m===r&&(a=a.slice(0,a.length-r.length)+m.replace(L[p],""),a||o.apply(e,n.call(h,0)));break}}}if(a){i=bl(a,b,g),d=i.dirruns++,h==null&&(h=$.find.TAG("*",G.test(a)&&b.parentNode||b));for(j=0;l=h[j];j++)c=i.runs++,i(l,b)&&e.push(l)}return e};h.querySelectorAll&&function(){var a,b=bm,c=/'|\\/g,d=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,e=[],f=[":active"],g=i.matchesSelector||i.mozMatchesSelector||i.webkitMatchesSelector||i.oMatchesSelector||i.msMatchesSelector;T(function(a){a.innerHTML="<select><option selected></option></select>",a.querySelectorAll("[selected]").length||e.push("\\["+r+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="<p test=''></p>",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+r+"*(?:\"\"|'')"),a.innerHTML="<input type='hidden'>",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bm=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return o.apply(f,n.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j=d.getAttribute("id"),k=j||q,l=G.test(a)&&d.parentNode||d;j?k=k.replace(c,"\\$&"):d.setAttribute("id",k);try{return o.apply(f,n.call(l.querySelectorAll(a.replace(C,"[id='"+k+"'] $&")),0)),f}catch(i){}finally{j||d.removeAttribute("id")}}return b(a,d,f,g,h)},g&&(T(function(b){a=g.call(b,"div");try{g.call(b,"[test!='']:sizzle"),f.push($.match.PSEUDO)}catch(c){}}),f=new RegExp(f.join("|")),Z.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!ba(b)&&!f.test(c)&&(!e||!e.test(c)))try{var h=g.call(b,c);if(h||a||b.document&&b.document.nodeType!==11)return h}catch(i){}return Z(c,null,null,[b]).length>0})}(),Z.attr=p.attr,p.find=Z,p.expr=Z.selectors,p.expr[":"]=p.expr.pseudos,p.unique=Z.uniqueSort,p.text=Z.getText,p.isXMLDoc=Z.isXML,p.contains=Z.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b<c;b++)if(p.contains(h[b],this))return!0});g=this.pushStack("","find",a);for(b=0,c=this.length;b<c;b++){d=g.length,p.find(a,this[b],g);if(b>0)for(e=d;e<g.length;e++)for(f=0;f<d;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b<d;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),"not",a)},filter:function(a){return this.pushStack(bj(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?bf.test(a)?p(a,this.context).index(this[0])>=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d<e;d++){c=this[d];while(c&&c.ownerDocument&&c!==b&&c.nodeType!==11){if(g?g.index(c)>-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/<tbody/i,br=/<|&#?\w+;/,bs=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,bu=new RegExp("<(?:"+bl+")[\\s/>]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,bz={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X<div>","</div>"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),"replaceWith",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!="string"&&(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone&&l>1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i<l;i++)d.call(c&&p.nodeName(this[i],"table")?bC(this[i],"tbody"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length&&p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):p.error("no ajax"):p.globalEval((b.text||b.textContent||b.innerHTML||"").replace(by,"")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=(c[0]||c).ownerDocument||c[0]||c,typeof c.createDocumentFragment=="undefined"&&(c=e),a.length===1&&typeof i=="string"&&i.length<512&&c===e&&i.charAt(0)==="<"&&!bt.test(i)&&(p.support.checkClone||!bw.test(i))&&(p.support.html5Clone||!bu.test(i))&&(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g&&(p.fragments[i]=h&&f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1&&this[0].parentNode;if((i==null||i&&i.nodeType===11&&i.childNodes.length===1)&&h===1)return g[b](this[0]),this;for(;e<h;e++)d=(e>0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=0,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(g=b===e&&bA;(h=a[s])!=null;s++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{g=g||bk(b),l=l||g.appendChild(b.createElement("div")),h=h.replace(bo,"<$1></$2>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]==="<table>"&&!m?l.childNodes:[];for(f=n.length-1;f>=0;--f)p.nodeName(n[f],"tbody")&&!n[f].childNodes.length&&n[f].parentNode.removeChild(n[f])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l=g.lastChild}h.nodeType?t.push(h):t=p.merge(t,h)}l&&(g.removeChild(l),h=l=g=null);if(!p.support.appendChecked)for(s=0;(h=t[s])!=null;s++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(s=0;(h=t[s])!=null;s++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[s+1,0].concat(r)),s+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^margin/,bO=new RegExp("^("+q+")(.*)$","i"),bP=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bQ=new RegExp("^([-+])=("+q+")","i"),bR={},bS={position:"absolute",visibility:"hidden",display:"block"},bT={letterSpacing:0,fontWeight:400,lineHeight:1},bU=["Top","Right","Bottom","Left"],bV=["Webkit","O","Moz","ms"],bW=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return bZ(this,!0)},hide:function(){return bZ(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bW.apply(this,arguments):this.each(function(){(c?a:bY(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bX(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bQ.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bX(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bT&&(f=bT[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(a,b){var c,d,e,f,g=getComputedStyle(a,null),h=a.style;return g&&(c=g[b],c===""&&!p.contains(a.ownerDocument.documentElement,a)&&(c=p.style(a,b)),bP.test(c)&&bN.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=c,c=g.width,h.width=d,h.minWidth=e,h.maxWidth=f)),c}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bP.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0||bH(a,"display")!=="none"?ca(a,b,d):p.swap(a,bS,function(){return ca(a,b,d)})},set:function(a,c,d){return b$(a,c,d?b_(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bP.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bU[d]+b]=e[d]||e[d-2]||e[0];return f}},bN.test(a)||(p.cssHooks[a+b].set=b$)});var cc=/%20/g,cd=/\[\]$/,ce=/\r?\n/g,cf=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,cg=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||cg.test(this.nodeName)||cf.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(ce,"\r\n")}}):{name:b.name,value:c.replace(ce,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ch(d,a[d],c,f);return e.join("&").replace(cc,"+")};var ci,cj,ck=/#.*$/,cl=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cm=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,cn=/^(?:GET|HEAD)$/,co=/^\/\//,cp=/\?/,cq=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,cr=/([?&])_=[^&]*/,cs=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,ct=p.fn.load,cu={},cv={},cw=["*/"]+["*"];try{ci=f.href}catch(cx){ci=e.createElement("a"),ci.href="",ci=ci.href}cj=cs.exec(ci.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&ct)return ct.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("<div>").append(a.replace(cq,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cA(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cA(a,b),a},ajaxSettings:{url:ci,isLocal:cm.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cw},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cy(cu),ajaxTransport:cy(cv),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cB(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cC(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cl.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(ck,"").replace(co,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=cs.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==cj[1]&&i[2]==cj[2]&&(i[3]||(i[1]==="http:"?80:443))==(cj[3]||(cj[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cz(cu,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!cn.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cp.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cr,"$1_="+z);l.url=A+(A===l.url?(cp.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cw+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cz(cv,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cD=[],cE=/\?/,cF=/(=)\?(?=&|$)|\?\?/,cG=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cD.pop()||p.expando+"_"+cG++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cF.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cF.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cF,"$1"+f):m?c.data=i.replace(cF,"$1"+f):k&&(c.url+=(cE.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cD.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cH,cI=a.ActiveXObject?function(){for(var a in cH)cH[a](0,1)}:!1,cJ=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cK()||cL()}:cK,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cI&&delete cH[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cJ,cI&&(cH||(cH={},p(a).unload(cI)),cH[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cM,cN,cO=/^(?:toggle|show|hide)$/,cP=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cQ=/queueHooks$/,cR=[cX],cS={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cP.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cV,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d<e;d++)c=a[d],cS[c]=cS[c]||[],cS[c].unshift(b)},prefilter:function(a,b){b?cR.unshift(a):cR.push(a)}}),p.Tween=cY,cY.prototype={constructor:cY,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?"":"px")},cur:function(){var a=cY.propHooks[this.prop];return a&&a.get?a.get(this):cY.propHooks._default.get(this)},run:function(a){var b,c=cY.propHooks[this.prop];return this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration),this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):cY.propHooks._default.set(this),this}},cY.prototype.init.prototype=cY.prototype,cY.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style&&a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,""),!b||b==="auto"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style&&(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cY.propHooks.scrollTop=cY.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},p.each(["toggle","show","hide"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d=="boolean"||!a&&p.isFunction(d)&&p.isFunction(e)?c.apply(this,arguments):this.animate(cZ(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bY).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cV(this,p.extend({},a),f);e&&b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,c=a!=null&&a+"queueHooks",f=p.timers,g=p._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cQ.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem===this&&(a==null||f[c].queue===a)&&(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&p.dequeue(this,a)})}}),p.each({slideDown:cZ("show"),slideUp:cZ("hide"),slideToggle:cZ("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a&&typeof a=="object"?p.extend({},a):{complete:c||!c&&b||p.isFunction(a)&&a,duration:a,easing:c&&b||b&&!p.isFunction(b)&&b};d.duration=p.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)&&d.old.call(this),d.queue&&p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cY.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()&&p.timers.push(a)&&!cN&&(cN=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cN),cN=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr&&p.expr.filters&&(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c$=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j,k,l,m=this[0],n=m&&m.ownerDocument;if(!n)return;return(e=n.body)===m?p.offset.bodyOffset(m):(d=n.documentElement,p.contains(d,m)?(c=m.getBoundingClientRect(),f=c_(n),g=d.clientTop||e.clientTop||0,h=d.clientLeft||e.clientLeft||0,i=f.pageYOffset||d.scrollTop,j=f.pageXOffset||d.scrollLeft,k=c.top+i-g,l=c.left+j-h,{top:k,left:l}):{top:0,left:0})},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(p.css(a,"marginTop"))||0,c+=parseFloat(p.css(a,"marginLeft"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,"position");d==="static"&&(a.style.position="relative");var e=p(a),f=e.offset(),g=p.css(a,"top"),h=p.css(a,"left"),i=(d==="absolute"||d==="fixed")&&p.inArray("auto",[g,h])>-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c$.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c$.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=c_(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window);
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery-ui-1.11.0.min.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery-ui-1.11.0.min.js
deleted file mode 100644 (file)
index 0e0a79e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*! jQuery UI - v1.11.0-beta.2 - 2014-06-08
-* http://jqueryui.com
-* Includes: core.js, widget.js, mouse.js, position.js, draggable.js, droppable.js, resizable.js, selectable.js, sortable.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, menu.js, progressbar.js, selectmenu.js, slider.js, spinner.js, tabs.js, tooltip.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js
-* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
-
-(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,i){var r,s,n,o=t.nodeName.toLowerCase();return"area"===o?(r=t.parentNode,s=r.name,t.href&&s&&"map"===r.nodeName.toLowerCase()?(n=e("img[usemap=#"+s+"]")[0],!!n&&a(n)):!1):(/input|select|textarea|button|object/.test(o)?!t.disabled:"a"===o?t.href||i:i)&&a(t)}function a(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function i(e){for(var t,a;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(a=parseInt(e.css("zIndex"),10),!isNaN(a)&&0!==a))return a;e=e.parent()}return 0}function r(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.dpDiv=s(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function s(t){var a="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(a,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(a,"mouseover",function(){e.datepicker._isDisabledDatepicker(g.inline?t.parent()[0]:g.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))})}function n(t,a){e.extend(t,a);for(var i in a)null==a[i]&&(t[i]=a[i]);return t}function o(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.0-beta.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(){var t=this.css("position"),a="absolute"===t,i=this.parents().filter(function(){var t=e(this);return a&&"static"===t.css("position")?!1:/(auto|scroll)/.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==t&&i.length?i:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(a){return!!e.data(a,t)}}):function(t,a,i){return!!e.data(t,i[3])},focusable:function(a){return t(a,!isNaN(e.attr(a,"tabindex")))},tabbable:function(a){var i=e.attr(a,"tabindex"),r=isNaN(i);return(r||i>=0)&&t(a,!r)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,a){function i(t,a,i,s){return e.each(r,function(){a-=parseFloat(e.css(t,"padding"+this))||0,i&&(a-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(a-=parseFloat(e.css(t,"margin"+this))||0)}),a}var r="Width"===a?["Left","Right"]:["Top","Bottom"],s=a.toLowerCase(),n={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+a]=function(t){return void 0===t?n["inner"+a].call(this):this.each(function(){e(this).css(s,i(this,t)+"px")})},e.fn["outer"+a]=function(t,r){return"number"!=typeof t?n["outer"+a].call(this,t):this.each(function(){e(this).css(s,i(this,t,!0,r)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(a){return arguments.length?t.call(this,e.camelCase(a)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(a,i){return"number"==typeof a?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),i&&i.call(t)},a)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var a,i,r=e(this[0]);r.length&&r[0]!==document;){if(a=r.css("position"),("absolute"===a||"relative"===a||"fixed"===a)&&(i=parseInt(r.css("zIndex"),10),!isNaN(i)&&0!==i))return i;r=r.parent()}return 0}}),e.ui.plugin={add:function(t,a,i){var r,s=e.ui[t].prototype;for(r in i)s.plugins[r]=s.plugins[r]||[],s.plugins[r].push([a,i[r]])},call:function(e,t,a,i){var r,s=e.plugins[t];if(s&&(i||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(r=0;s.length>r;r++)e.options[s[r][0]]&&s[r][1].apply(e.element,a)}};var d=0,u=Array.prototype.slice;e.cleanData=function(t){return function(a){for(var i,r=0;null!=(i=a[r]);r++)try{e(i).triggerHandler("remove")}catch(s){}t(a)}}(e.cleanData),e.widget=function(t,a,i){var r,s,n,o,d={},u=t.split(".")[0];return t=t.split(".")[1],r=u+"-"+t,i||(i=a,a=e.Widget),e.expr[":"][r.toLowerCase()]=function(t){return!!e.data(t,r)},e[u]=e[u]||{},s=e[u][t],n=e[u][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new n(e,t)},e.extend(n,s,{version:i.version,_proto:e.extend({},i),_childConstructors:[]}),o=new a,o.options=e.widget.extend({},o.options),e.each(i,function(t,i){return e.isFunction(i)?(d[t]=function(){var e=function(){return a.prototype[t].apply(this,arguments)},r=function(e){return a.prototype[t].apply(this,e)};return function(){var t,a=this._super,s=this._superApply;return this._super=e,this._superApply=r,t=i.apply(this,arguments),this._super=a,this._superApply=s,t}}(),void 0):(d[t]=i,void 0)}),n.prototype=e.widget.extend(o,{widgetEventPrefix:s?o.widgetEventPrefix||t:t},d,{constructor:n,namespace:u,widgetName:t,widgetFullName:r}),s?(e.each(s._childConstructors,function(t,a){var i=a.prototype;e.widget(i.namespace+"."+i.widgetName,n,a._proto)}),delete s._childConstructors):a._childConstructors.push(n),e.widget.bridge(t,n),n},e.widget.extend=function(t){for(var a,i,r=u.call(arguments,1),s=0,n=r.length;n>s;s++)for(a in r[s])i=r[s][a],r[s].hasOwnProperty(a)&&void 0!==i&&(t[a]=e.isPlainObject(i)?e.isPlainObject(t[a])?e.widget.extend({},t[a],i):e.widget.extend({},i):i);return t},e.widget.bridge=function(t,a){var i=a.prototype.widgetFullName||t;e.fn[t]=function(r){var s="string"==typeof r,n=u.call(arguments,1),o=this;return r=!s&&n.length?e.widget.extend.apply(null,[r].concat(n)):r,s?this.each(function(){var a,s=e.data(this,i);return"instance"===r?(o=s,!1):s?e.isFunction(s[r])&&"_"!==r.charAt(0)?(a=s[r].apply(s,n),a!==s&&void 0!==a?(o=a&&a.jquery?o.pushStack(a.get()):a,!1):void 0):e.error("no such method '"+r+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+r+"'")}):this.each(function(){var t=e.data(this,i);t?(t.option(r||{}),t._init&&t._init()):e.data(this,i,new a(r,this))}),o}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,a){a=e(a||this.defaultElement||this)[0],this.element=e(a),this.uuid=d++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),a!==this&&(e.data(a,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===a&&this.destroy()}}),this.document=e(a.style?a.ownerDocument:a.document||a),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,a){var i,r,s,n=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(n={},i=t.split("."),t=i.shift(),i.length){for(r=n[t]=e.widget.extend({},this.options[t]),s=0;i.length-1>s;s++)r[i[s]]=r[i[s]]||{},r=r[i[s]];if(t=i.pop(),1===arguments.length)return void 0===r[t]?null:r[t];r[t]=a}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];n[t]=a}return this._setOptions(n),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,a,i){var r,s=this;"boolean"!=typeof t&&(i=a,a=t,t=!1),i?(a=r=e(a),this.bindings=this.bindings.add(a)):(i=a,a=this.element,r=this.widget()),e.each(i,function(i,n){function o(){return t||s.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof n?s[n]:n).apply(s,arguments):void 0}"string"!=typeof n&&(o.guid=n.guid=n.guid||o.guid||e.guid++);var d=i.match(/^([\w:-]*)\s*(.*)$/),u=d[1]+s.eventNamespace,h=d[2];h?r.delegate(h,u,o):a.bind(u,o)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function a(){return("string"==typeof e?i[e]:e).apply(i,arguments)}var i=this;return setTimeout(a,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,a,i){var r,s,n=this.options[t];if(i=i||{},a=e.Event(a),a.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),a.target=this.element[0],s=a.originalEvent)for(r in s)r in a||(a[r]=s[r]);return this.element.trigger(a,i),!(e.isFunction(n)&&n.apply(this.element[0],[a].concat(i))===!1||a.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,a){e.Widget.prototype["_"+t]=function(i,r,s){"string"==typeof r&&(r={effect:r});var n,o=r?r===!0||"number"==typeof r?a:r.effect||a:t;r=r||{},"number"==typeof r&&(r={duration:r}),n=!e.isEmptyObject(r),r.complete=s,r.delay&&i.delay(r.delay),n&&e.effects&&e.effects.effect[o]?i[t](r):o!==t&&i[o]?i[o](r.duration,r.easing,s):i.queue(function(a){e(this)[t](),s&&s.call(i[0]),a()})}}),e.widget;var h=!1;e(document).mouseup(function(){h=!1}),e.widget("ui.mouse",{version:"1.11.0-beta.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(a){return!0===e.data(a.target,t.widgetName+".preventClickEvent")?(e.removeData(a.target,t.widgetName+".preventClickEvent"),a.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!h){this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var a=this,i=1===t.which,r="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return i&&!r&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){a.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return a._mouseMove(e)},this._mouseUpDelegate=function(e){return a._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),h=!0,!0)):!0}},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button?this._mouseUp(t):t.which?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),h=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,a){return[parseFloat(e[0])*(c.test(e[0])?t/100:1),parseFloat(e[1])*(c.test(e[1])?a/100:1)]}function a(t,a){return parseInt(e.css(t,a),10)||0}function i(t){var a=t[0];return 9===a.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(a)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:a.preventDefault?{width:0,height:0,offset:{top:a.pageY,left:a.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var r,s,n=Math.max,o=Math.abs,d=Math.round,u=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,m=/^\w+/,c=/%$/,p=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==r)return r;var t,a,i=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),s=i.children()[0];return e("body").append(i),t=s.offsetWidth,i.css("overflow","scroll"),a=s.offsetWidth,t===a&&(a=i[0].clientWidth),i.remove(),r=t-a},getScrollInfo:function(t){var a=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),r="scroll"===a||"auto"===a&&t.width<t.element[0].scrollWidth,s="scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight;return{width:s?e.position.scrollbarWidth():0,height:r?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var a=e(t||window),i=e.isWindow(a[0]),r=!!a[0]&&9===a[0].nodeType;return{element:a,isWindow:i,isDocument:r,offset:a.offset()||{left:0,top:0},scrollLeft:a.scrollLeft(),scrollTop:a.scrollTop(),width:i?a.width():a.outerWidth(),height:i?a.height():a.outerHeight()}}},e.fn.position=function(r){if(!r||!r.of)return p.apply(this,arguments);r=e.extend({},r);var c,f,g,y,x,v,T=e(r.of),k=e.position.getWithinInfo(r.within),S=e.position.getScrollInfo(k),b=(r.collision||"flip").split(" "),N={};return v=i(T),T[0].preventDefault&&(r.at="left top"),f=v.width,g=v.height,y=v.offset,x=e.extend({},y),e.each(["my","at"],function(){var e,t,a=(r[this]||"").split(" ");1===a.length&&(a=u.test(a[0])?a.concat(["center"]):h.test(a[0])?["center"].concat(a):["center","center"]),a[0]=u.test(a[0])?a[0]:"center",a[1]=h.test(a[1])?a[1]:"center",e=l.exec(a[0]),t=l.exec(a[1]),N[this]=[e?e[0]:0,t?t[0]:0],r[this]=[m.exec(a[0])[0],m.exec(a[1])[0]]}),1===b.length&&(b[1]=b[0]),"right"===r.at[0]?x.left+=f:"center"===r.at[0]&&(x.left+=f/2),"bottom"===r.at[1]?x.top+=g:"center"===r.at[1]&&(x.top+=g/2),c=t(N.at,f,g),x.left+=c[0],x.top+=c[1],this.each(function(){var i,u,h=e(this),l=h.outerWidth(),m=h.outerHeight(),p=a(this,"marginLeft"),v=a(this,"marginTop"),M=l+p+a(this,"marginRight")+S.width,D=m+v+a(this,"marginBottom")+S.height,w=e.extend({},x),_=t(N.my,h.outerWidth(),h.outerHeight());"right"===r.my[0]?w.left-=l:"center"===r.my[0]&&(w.left-=l/2),"bottom"===r.my[1]?w.top-=m:"center"===r.my[1]&&(w.top-=m/2),w.left+=_[0],w.top+=_[1],s||(w.left=d(w.left),w.top=d(w.top)),i={marginLeft:p,marginTop:v},e.each(["left","top"],function(t,a){e.ui.position[b[t]]&&e.ui.position[b[t]][a](w,{targetWidth:f,targetHeight:g,elemWidth:l,elemHeight:m,collisionPosition:i,collisionWidth:M,collisionHeight:D,offset:[c[0]+_[0],c[1]+_[1]],my:r.my,at:r.at,within:k,elem:h})}),r.using&&(u=function(e){var t=y.left-w.left,a=t+f-l,i=y.top-w.top,s=i+g-m,d={target:{element:T,left:y.left,top:y.top,width:f,height:g},element:{element:h,left:w.left,top:w.top,width:l,height:m},horizontal:0>a?"left":t>0?"right":"center",vertical:0>s?"top":i>0?"bottom":"middle"};l>f&&f>o(t+a)&&(d.horizontal="center"),m>g&&g>o(i+s)&&(d.vertical="middle"),d.important=n(o(t),o(a))>n(o(i),o(s))?"horizontal":"vertical",r.using.call(this,e,d)}),h.offset(e.extend(w,{using:u}))})},e.ui.position={fit:{left:function(e,t){var a,i=t.within,r=i.isWindow?i.scrollLeft:i.offset.left,s=i.width,o=e.left-t.collisionPosition.marginLeft,d=r-o,u=o+t.collisionWidth-s-r;t.collisionWidth>s?d>0&&0>=u?(a=e.left+d+t.collisionWidth-s-r,e.left+=d-a):e.left=u>0&&0>=d?r:d>u?r+s-t.collisionWidth:r:d>0?e.left+=d:u>0?e.left-=u:e.left=n(e.left-o,e.left)},top:function(e,t){var a,i=t.within,r=i.isWindow?i.scrollTop:i.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,d=r-o,u=o+t.collisionHeight-s-r;t.collisionHeight>s?d>0&&0>=u?(a=e.top+d+t.collisionHeight-s-r,e.top+=d-a):e.top=u>0&&0>=d?r:d>u?r+s-t.collisionHeight:r:d>0?e.top+=d:u>0?e.top-=u:e.top=n(e.top-o,e.top)}},flip:{left:function(e,t){var a,i,r=t.within,s=r.offset.left+r.scrollLeft,n=r.width,d=r.isWindow?r.scrollLeft:r.offset.left,u=e.left-t.collisionPosition.marginLeft,h=u-d,l=u+t.collisionWidth-n-d,m="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,c="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,p=-2*t.offset[0];0>h?(a=e.left+m+c+p+t.collisionWidth-n-s,(0>a||o(h)>a)&&(e.left+=m+c+p)):l>0&&(i=e.left-t.collisionPosition.marginLeft+m+c+p-d,(i>0||l>o(i))&&(e.left+=m+c+p))},top:function(e,t){var a,i,r=t.within,s=r.offset.top+r.scrollTop,n=r.height,d=r.isWindow?r.scrollTop:r.offset.top,u=e.top-t.collisionPosition.marginTop,h=u-d,l=u+t.collisionHeight-n-d,m="top"===t.my[1],c=m?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,p="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,f=-2*t.offset[1];0>h?(i=e.top+c+p+f+t.collisionHeight-n-s,e.top+c+p+f>h&&(0>i||o(h)>i)&&(e.top+=c+p+f)):l>0&&(a=e.top-t.collisionPosition.marginTop+c+p+f-d,e.top+c+p+f>l&&(a>0||l>o(a))&&(e.top+=c+p+f))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,a,i,r,n,o=document.getElementsByTagName("body")[0],d=document.createElement("div");t=document.createElement(o?"div":"body"),i={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(i,{position:"absolute",left:"-1000px",top:"-1000px"});for(n in i)t.style[n]=i[n];t.appendChild(d),a=o||document.documentElement,a.insertBefore(t,a.firstChild),d.style.cssText="position: absolute; left: 10.7432222px;",r=e(d).offset().left,s=r>10&&11>r,t.innerHTML="",a.removeChild(t)}()}(),e.ui.position,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.0-beta.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var a=this.document[0],i=this.options;try{a.activeElement&&"body"!==a.activeElement.nodeName.toLowerCase()&&e(a.activeElement).blur()}catch(r){}return this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(e(i.iframeFix===!0?"iframe":i.iframeFix).each(function(){e("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var a=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offsetParent=this.helper.offsetParent(),this.offsetParentCssPosition=this.offsetParent.css("position"),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.offset.scroll=!1,e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!a.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,a){if("fixed"===this.offsetParentCssPosition&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!a){var i=this._uiHash();if(this._trigger("drag",t,i)===!1)return this._mouseUp({}),!1;this.position=i.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var a=this,i=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(i=e.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,i)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){a._trigger("stop",t)!==!1&&a._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this._removeHandleClassName(),e(this.options.handle||this.element).addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.element.find(".ui-draggable-handle").addBack().removeClass("ui-draggable-handle")},_createHelper:function(t){var a=this.options,i=e.isFunction(a.helper)?e(a.helper.apply(this.element[0],[t])):"clone"===a.helper?this.element.clone().removeAttr("id"):this.element;return i.parents("body").length||i.appendTo("parent"===a.appendTo?this.element[0].parentNode:a.appendTo),i[0]===this.element[0]||/(fixed|absolute)/.test(i.css("position"))||i.css("position","absolute"),i},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),a=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==a&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,a,i,r=this.options,s=this.document[0];return this.relative_container=null,r.containment?"window"===r.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||s.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===r.containment?(this.containment=[0,0,e(s).width()-this.helperProportions.width-this.margins.left,(e(s).height()||s.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):r.containment.constructor===Array?(this.containment=r.containment,void 0):("parent"===r.containment&&(r.containment=this.helper[0].parentNode),a=e(r.containment),i=a[0],i&&(t="hidden"!==a.css("overflow"),this.containment=[(parseInt(a.css("borderLeftWidth"),10)||0)+(parseInt(a.css("paddingLeft"),10)||0),(parseInt(a.css("borderTopWidth"),10)||0)+(parseInt(a.css("paddingTop"),10)||0),(t?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(a.css("borderRightWidth"),10)||0)-(parseInt(a.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(a.css("borderBottomWidth"),10)||0)-(parseInt(a.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=a),void 0):(this.containment=null,void 0)},_convertPositionTo:function(e,t){t||(t=this.position);var a="absolute"===e?1:-1,i=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*a+this.offset.parent.top*a-("fixed"===this.cssPosition?-this.offset.scroll.top:i?0:this.offset.scroll.top)*a,left:t.left+this.offset.relative.left*a+this.offset.parent.left*a-("fixed"===this.cssPosition?-this.offset.scroll.left:i?0:this.offset.scroll.left)*a}},_generatePosition:function(e,t){var a,i,r,s,n=this.options,o=this._isRootNode(this.scrollParent[0]),d=e.pageX,u=e.pageY;return o&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relative_container?(i=this.relative_container.offset(),a=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]):a=this.containment,e.pageX-this.offset.click.left<a[0]&&(d=a[0]+this.offset.click.left),e.pageY-this.offset.click.top<a[1]&&(u=a[1]+this.offset.click.top),e.pageX-this.offset.click.left>a[2]&&(d=a[2]+this.offset.click.left),e.pageY-this.offset.click.top>a[3]&&(u=a[3]+this.offset.click.top)),n.grid&&(r=n.grid[1]?this.originalPageY+Math.round((u-this.originalPageY)/n.grid[1])*n.grid[1]:this.originalPageY,u=a?r-this.offset.click.top>=a[1]||r-this.offset.click.top>a[3]?r:r-this.offset.click.top>=a[1]?r-n.grid[1]:r+n.grid[1]:r,s=n.grid[0]?this.originalPageX+Math.round((d-this.originalPageX)/n.grid[0])*n.grid[0]:this.originalPageX,d=a?s-this.offset.click.left>=a[0]||s-this.offset.click.left>a[2]?s:s-this.offset.click.left>=a[0]?s-n.grid[0]:s+n.grid[0]:s),"y"===n.axis&&(d=this.originalPageX),"x"===n.axis&&(u=this.originalPageY)),{top:u-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:o?0:this.offset.scroll.top),left:d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:o?0:this.offset.scroll.left)}
-},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,a,i){return i=i||this._uiHash(),e.ui.plugin.call(this,t,[a,i,this],!0),"drag"===t&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,a,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,a,i){var r=i.options,s=e.extend({},a,{item:i.element});i.sortables=[],e(r.connectToSortable).each(function(){var a=e(this).sortable("instance");a&&!a.options.disabled&&(i.sortables.push({instance:a,shouldRevert:a.options.revert}),a.refreshPositions(),a._trigger("activate",t,s))})},stop:function(t,a,i){var r=e.extend({},a,{item:i.element});e.each(i.sortables,function(){this.instance.isOver?(this.instance.isOver=0,i.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,"original"===i.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,r))})},drag:function(t,a,i){var r=this;e.each(i.sortables,function(){var s=!1,n=this;this.instance.positionAbs=i.positionAbs,this.instance.helperProportions=i.helperProportions,this.instance.offset.click=i.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(s=!0,e.each(i.sortables,function(){return this.instance.positionAbs=i.positionAbs,this.instance.helperProportions=i.helperProportions,this.instance.offset.click=i.offset.click,this!==n&&this.instance._intersectsWith(this.instance.containerCache)&&e.contains(n.instance.element[0],this.instance.element[0])&&(s=!1),s})),s?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(r).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return a.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=i.offset.click.top,this.instance.offset.click.left=i.offset.click.left,this.instance.offset.parent.left-=i.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=i.offset.parent.top-this.instance.offset.parent.top,i._trigger("toSortable",t),i.dropped=this.instance.element,i.currentItem=i.element,this.instance.fromOutside=i),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),i._trigger("fromSortable",t),i.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,a,i){var r=e("body"),s=i.options;r.css("cursor")&&(s._cursor=r.css("cursor")),r.css("cursor",s.cursor)},stop:function(t,a,i){var r=i.options;r._cursor&&e("body").css("cursor",r._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,a,i){var r=e(a.helper),s=i.options;r.css("opacity")&&(s._opacity=r.css("opacity")),r.css("opacity",s.opacity)},stop:function(t,a,i){var r=i.options;r._opacity&&e(a.helper).css("opacity",r._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,a){a.scrollParent[0]!==a.document[0]&&"HTML"!==a.scrollParent[0].tagName&&(a.overflowOffset=a.scrollParent.offset())},drag:function(t,a,i){var r=i.options,s=!1,n=i.document[0];i.scrollParent[0]!==n&&"HTML"!==i.scrollParent[0].tagName?(r.axis&&"x"===r.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-t.pageY<r.scrollSensitivity?i.scrollParent[0].scrollTop=s=i.scrollParent[0].scrollTop+r.scrollSpeed:t.pageY-i.overflowOffset.top<r.scrollSensitivity&&(i.scrollParent[0].scrollTop=s=i.scrollParent[0].scrollTop-r.scrollSpeed)),r.axis&&"y"===r.axis||(i.overflowOffset.left+i.scrollParent[0].offsetWidth-t.pageX<r.scrollSensitivity?i.scrollParent[0].scrollLeft=s=i.scrollParent[0].scrollLeft+r.scrollSpeed:t.pageX-i.overflowOffset.left<r.scrollSensitivity&&(i.scrollParent[0].scrollLeft=s=i.scrollParent[0].scrollLeft-r.scrollSpeed))):(r.axis&&"x"===r.axis||(t.pageY-e(n).scrollTop()<r.scrollSensitivity?s=e(n).scrollTop(e(n).scrollTop()-r.scrollSpeed):e(window).height()-(t.pageY-e(n).scrollTop())<r.scrollSensitivity&&(s=e(n).scrollTop(e(n).scrollTop()+r.scrollSpeed))),r.axis&&"y"===r.axis||(t.pageX-e(n).scrollLeft()<r.scrollSensitivity?s=e(n).scrollLeft(e(n).scrollLeft()-r.scrollSpeed):e(window).width()-(t.pageX-e(n).scrollLeft())<r.scrollSensitivity&&(s=e(n).scrollLeft(e(n).scrollLeft()+r.scrollSpeed)))),s!==!1&&e.ui.ddmanager&&!r.dropBehaviour&&e.ui.ddmanager.prepareOffsets(i,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,a,i){var r=i.options;i.snapElements=[],e(r.snap.constructor!==String?r.snap.items||":data(ui-draggable)":r.snap).each(function(){var t=e(this),a=t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:a.top,left:a.left})})},drag:function(t,a,i){var r,s,n,o,d,u,h,l,m,c,p=i.options,f=p.snapTolerance,g=a.offset.left,y=g+i.helperProportions.width,x=a.offset.top,v=x+i.helperProportions.height;for(m=i.snapElements.length-1;m>=0;m--)d=i.snapElements[m].left,u=d+i.snapElements[m].width,h=i.snapElements[m].top,l=h+i.snapElements[m].height,d-f>y||g>u+f||h-f>v||x>l+f||!e.contains(i.snapElements[m].item.ownerDocument,i.snapElements[m].item)?(i.snapElements[m].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,t,e.extend(i._uiHash(),{snapItem:i.snapElements[m].item})),i.snapElements[m].snapping=!1):("inner"!==p.snapMode&&(r=f>=Math.abs(h-v),s=f>=Math.abs(l-x),n=f>=Math.abs(d-y),o=f>=Math.abs(u-g),r&&(a.position.top=i._convertPositionTo("relative",{top:h-i.helperProportions.height,left:0}).top-i.margins.top),s&&(a.position.top=i._convertPositionTo("relative",{top:l,left:0}).top-i.margins.top),n&&(a.position.left=i._convertPositionTo("relative",{top:0,left:d-i.helperProportions.width}).left-i.margins.left),o&&(a.position.left=i._convertPositionTo("relative",{top:0,left:u}).left-i.margins.left)),c=r||s||n||o,"outer"!==p.snapMode&&(r=f>=Math.abs(h-x),s=f>=Math.abs(l-v),n=f>=Math.abs(d-g),o=f>=Math.abs(u-y),r&&(a.position.top=i._convertPositionTo("relative",{top:h,left:0}).top-i.margins.top),s&&(a.position.top=i._convertPositionTo("relative",{top:l-i.helperProportions.height,left:0}).top-i.margins.top),n&&(a.position.left=i._convertPositionTo("relative",{top:0,left:d}).left-i.margins.left),o&&(a.position.left=i._convertPositionTo("relative",{top:0,left:u-i.helperProportions.width}).left-i.margins.left)),!i.snapElements[m].snapping&&(r||s||n||o||c)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,t,e.extend(i._uiHash(),{snapItem:i.snapElements[m].item})),i.snapElements[m].snapping=r||s||n||o||c)}}),e.ui.plugin.add("draggable","stack",{start:function(t,a,i){var r,s=i.options,n=e.makeArray(e(s.stack)).sort(function(t,a){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(a).css("zIndex"),10)||0)});n.length&&(r=parseInt(e(n[0]).css("zIndex"),10)||0,e(n).each(function(t){e(this).css("zIndex",r+t)}),this.css("zIndex",r+n.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,a,i){var r=e(a.helper),s=i.options;r.css("zIndex")&&(s._zIndex=r.css("zIndex")),r.css("zIndex",s.zIndex)},stop:function(t,a,i){var r=i.options;r._zIndex&&e(a.helper).css("zIndex",r._zIndex)}}),e.ui.draggable,e.widget("ui.droppable",{version:"1.11.0-beta.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,a=this.options,i=a.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(i)?i:function(e){return e.is(i)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(a.scope),a.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,a){if("accept"===t)this.accept=e.isFunction(a)?a:function(e){return e.is(a)};else if("scope"===t){var i=e.ui.ddmanager.droppables[this.options.scope];this._splice(i),this._addToManager(a)}this._super(t,a)},_activate:function(t){var a=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),a&&this._trigger("activate",t,this.ui(a))},_deactivate:function(t){var a=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),a&&this._trigger("deactivate",t,this.ui(a))},_over:function(t){var a=e.ui.ddmanager.current;a&&(a.currentItem||a.element)[0]!==this.element[0]&&this.accept.call(this.element[0],a.currentItem||a.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(a)))},_out:function(t){var a=e.ui.ddmanager.current;a&&(a.currentItem||a.element)[0]!==this.element[0]&&this.accept.call(this.element[0],a.currentItem||a.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(a)))},_drop:function(t,a){var i=a||e.ui.ddmanager.current,r=!1;return i&&(i.currentItem||i.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=e(this).droppable("instance");return t.options.greedy&&!t.options.disabled&&t.options.scope===i.options.scope&&t.accept.call(t.element[0],i.currentItem||i.element)&&e.ui.intersect(i,e.extend(t,{offset:t.element.offset()}),t.options.tolerance)?(r=!0,!1):void 0}),r?!1:this.accept.call(this.element[0],i.currentItem||i.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(i)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,a){return e>=t&&t+a>e}return function(t,a,i){if(!a.offset)return!1;var r,s,n=(t.positionAbs||t.position.absolute).left,o=(t.positionAbs||t.position.absolute).top,d=n+t.helperProportions.width,u=o+t.helperProportions.height,h=a.offset.left,l=a.offset.top,m=h+a.proportions().width,c=l+a.proportions().height;switch(i){case"fit":return n>=h&&m>=d&&o>=l&&c>=u;case"intersect":return n+t.helperProportions.width/2>h&&m>d-t.helperProportions.width/2&&o+t.helperProportions.height/2>l&&c>u-t.helperProportions.height/2;case"pointer":return r=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,s=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,e(s,l,a.proportions().height)&&e(r,h,a.proportions().width);case"touch":return(o>=l&&c>=o||u>=l&&c>=u||l>o&&u>c)&&(n>=h&&m>=n||d>=h&&m>=d||h>n&&d>m);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,a){var i,r,s=e.ui.ddmanager.droppables[t.options.scope]||[],n=a?a.type:null,o=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(i=0;s.length>i;i++)if(!(s[i].options.disabled||t&&!s[i].accept.call(s[i].element[0],t.currentItem||t.element))){for(r=0;o.length>r;r++)if(o[r]===s[i].element[0]){s[i].proportions().height=0;continue e}s[i].visible="none"!==s[i].element.css("display"),s[i].visible&&("mousedown"===n&&s[i]._activate.call(s[i],a),s[i].offset=s[i].element.offset(),s[i].proportions({width:s[i].element[0].offsetWidth,height:s[i].element[0].offsetHeight}))}},drop:function(t,a){var i=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(i=this._drop.call(this,a)||i),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,a)))}),i},dragStart:function(t,a){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,a)})},drag:function(t,a){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,a),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var i,r,s,n=e.ui.intersect(t,this,this.options.tolerance),o=!n&&this.isover?"isout":n&&!this.isover?"isover":null;o&&(this.options.greedy&&(r=this.options.scope,s=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===r}),s.length&&(i=e(s[0]).droppable("instance"),i.greedyChild="isover"===o)),i&&"isover"===o&&(i.isover=!1,i.isout=!0,i._out.call(i,a)),this[o]=!0,this["isout"===o?"isover":"isout"]=!1,this["isover"===o?"_over":"_out"].call(this,a),i&&"isout"===o&&(i.isout=!1,i.isover=!0,i._over.call(i,a)))}})},dragStop:function(t,a){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,a)}},e.ui.droppable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.0-beta.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,a){if("hidden"===e(t).css("overflow"))return!1;var i=a&&"left"===a?"scrollLeft":"scrollTop",r=!1;return t[i]>0?!0:(t[i]=1,r=t[i]>0,t[i]=0,r)},_create:function(){var t,a,i,r,s,n=this,o=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!o.aspectRatio,aspectRatio:o.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:o.helper||o.ghost||o.animate?o.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=o.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},a=0;t.length>a;a++)i=e.trim(t[a]),s="ui-resizable-"+i,r=e("<div class='ui-resizable-handle "+s+"'></div>"),r.css({zIndex:o.zIndex}),"se"===i&&r.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[i]=".ui-resizable-"+i,this.element.append(r);this._renderAxis=function(t){var a,i,r,s;t=t||this.element;for(a in this.handles)this.handles[a].constructor===String&&(this.handles[a]=this.element.children(this.handles[a]).first().show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(i=e(this.handles[a],this.element),s=/sw|ne|nw|se|n|s/.test(a)?i.outerHeight():i.outerWidth(),r=["padding",/ne|nw|n/.test(a)?"Top":/se|sw|s/.test(a)?"Bottom":/^e$/.test(a)?"Right":"Left"].join(""),t.css(r,s),this._proportionallyResize()),e(this.handles[a]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){n.resizing||(this.className&&(r=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),n.axis=r&&r[1]?r[1]:"se")}),o.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){o.disabled||(e(this).removeClass("ui-resizable-autohide"),n._handles.show())}).mouseleave(function(){o.disabled||n.resizing||(e(this).addClass("ui-resizable-autohide"),n._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,a=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(a(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),a(this.originalElement),this},_mouseCapture:function(t){var a,i,r=!1;for(a in this.handles)i=e(this.handles[a])[0],(i===t.target||e.contains(i,t.target))&&(r=!0);return!this.options.disabled&&r},_mouseStart:function(t){var a,i,r,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),a=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(a+=e(s.containment).scrollLeft()||0,i+=e(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:a,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.originalPosition={left:a,top:i},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,r=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===r?this.axis+"-resize":r),n.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var a,i=this.helper,r={},s=this.originalMousePosition,n=this.axis,o=t.pageX-s.left||0,d=t.pageY-s.top||0,u=this._change[n];return this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height},u?(a=u.apply(this,[t,o,d]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(a=this._updateRatio(a,t)),a=this._respectSize(a,t),this._updateCache(a),this._propagate("resize",t),this.position.top!==this.prevPosition.top&&(r.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(r.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(r.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(r.height=this.size.height+"px"),i.css(r),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(r)||this._trigger("resize",t,this.ui()),!1):!1},_mouseStop:function(t){this.resizing=!1;var a,i,r,s,n,o,d,u=this.options,h=this;return this._helper&&(a=this._proportionallyResizeElements,i=a.length&&/textarea/i.test(a[0].nodeName),r=i&&this._hasScroll(a[0],"left")?0:h.sizeDiff.height,s=i?0:h.sizeDiff.width,n={width:h.helper.width()-s,height:h.helper.height()-r},o=parseInt(h.element.css("left"),10)+(h.position.left-h.originalPosition.left)||null,d=parseInt(h.element.css("top"),10)+(h.position.top-h.originalPosition.top)||null,u.animate||this.element.css(e.extend(n,{top:d,left:o})),h.helper.height(h.size.height),h.helper.width(h.size.width),this._helper&&!u.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t,a,i,r,s,n=this.options;s={minWidth:this._isNumber(n.minWidth)?n.minWidth:0,maxWidth:this._isNumber(n.maxWidth)?n.maxWidth:1/0,minHeight:this._isNumber(n.minHeight)?n.minHeight:0,maxHeight:this._isNumber(n.maxHeight)?n.maxHeight:1/0},(this._aspectRatio||e)&&(t=s.minHeight*this.aspectRatio,i=s.minWidth/this.aspectRatio,a=s.maxHeight*this.aspectRatio,r=s.maxWidth/this.aspectRatio,t>s.minWidth&&(s.minWidth=t),i>s.minHeight&&(s.minHeight=i),s.maxWidth>a&&(s.maxWidth=a),s.maxHeight>r&&(s.maxHeight=r)),this._vBoundaries=s},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,a=this.size,i=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===i&&(e.left=t.left+(a.width-e.width),e.top=null),"nw"===i&&(e.top=t.top+(a.height-e.height),e.left=t.left+(a.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,a=this.axis,i=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,r=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,s=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,n=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,o=this.originalPosition.left+this.originalSize.width,d=this.position.top+this.size.height,u=/sw|nw|w/.test(a),h=/nw|ne|n/.test(a);return s&&(e.width=t.minWidth),n&&(e.height=t.minHeight),i&&(e.width=t.maxWidth),r&&(e.height=t.maxHeight),s&&u&&(e.left=o-t.minWidth),i&&u&&(e.left=o-t.maxWidth),n&&h&&(e.top=d-t.minHeight),r&&h&&(e.top=d-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var e,t,a,i,r,s=this.helper||this.element;for(e=0;this._proportionallyResizeElements.length>e;e++){if(r=this._proportionallyResizeElements[e],!this.borderDif)for(this.borderDif=[],a=[r.css("borderTopWidth"),r.css("borderRightWidth"),r.css("borderBottomWidth"),r.css("borderLeftWidth")],i=[r.css("paddingTop"),r.css("paddingRight"),r.css("paddingBottom"),r.css("paddingLeft")],t=0;a.length>t;t++)this.borderDif[t]=(parseInt(a[t],10)||0)+(parseInt(i[t],10)||0);r.css({height:s.height()-this.borderDif[0]-this.borderDif[2]||0,width:s.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var t=this.element,a=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++a.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var a=this.originalSize,i=this.originalPosition;return{left:i.left+t,width:a.width-t}},n:function(e,t,a){var i=this.originalSize,r=this.originalPosition;return{top:r.top+a,height:i.height-a}},s:function(e,t,a){return{height:this.originalSize.height+a}},se:function(t,a,i){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,a,i]))},sw:function(t,a,i){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,a,i]))},ne:function(t,a,i){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,a,i]))},nw:function(t,a,i){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,a,i]))}},_propagate:function(t,a){e.ui.plugin.call(this,t,[a,this.ui()]),"resize"!==t&&this._trigger(t,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition,prevSize:this.prevSize,prevPosition:this.prevPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var a=e(this).resizable("instance"),i=a.options,r=a._proportionallyResizeElements,s=r.length&&/textarea/i.test(r[0].nodeName),n=s&&a._hasScroll(r[0],"left")?0:a.sizeDiff.height,o=s?0:a.sizeDiff.width,d={width:a.size.width-o,height:a.size.height-n},u=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null,h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(d,h&&u?{top:h,left:u}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};r&&r.length&&e(r[0]).css({width:i.width,height:i.height}),a._updateCache(i),a._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,a,i,r,s,n,o,d=e(this).resizable("instance"),u=d.options,h=d.element,l=u.containment,m=l instanceof e?l.get(0):/parent/.test(l)?h.parent().get(0):l;m&&(d.containerElement=e(m),/document/.test(l)||l===document?(d.containerOffset={left:0,top:0},d.containerPosition={left:0,top:0},d.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(m),a=[],e(["Top","Right","Left","Bottom"]).each(function(e,i){a[e]=d._num(t.css("padding"+i))}),d.containerOffset=t.offset(),d.containerPosition=t.position(),d.containerSize={height:t.innerHeight()-a[3],width:t.innerWidth()-a[1]},i=d.containerOffset,r=d.containerSize.height,s=d.containerSize.width,n=d._hasScroll(m,"left")?m.scrollWidth:s,o=d._hasScroll(m)?m.scrollHeight:r,d.parentData={element:m,left:i.left,top:i.top,width:n,height:o}))},resize:function(t,a){var i,r,s,n,o=e(this).resizable("instance"),d=o.options,u=o.containerOffset,h=o.position,l=o._aspectRatio||t.shiftKey,m={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(m=u),h.left<(o._helper?u.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-u.left:o.position.left-m.left),l&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=d.helper?u.left:0),h.top<(o._helper?u.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-u.top:o.position.top),l&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?u.top:0),o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top,i=Math.abs((o._helper?o.offset.left-m.left:o.offset.left-u.left)+o.sizeDiff.width),r=Math.abs((o._helper?o.offset.top-m.top:o.offset.top-u.top)+o.sizeDiff.height),s=o.containerElement.get(0)===o.element.parent().get(0),n=/relative|absolute/.test(o.containerElement.css("position")),s&&n&&(i-=Math.abs(o.parentData.left)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,l&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),r+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-r,l&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=a.prevPosition.left,o.position.top=a.prevPosition.top,o.size.width=a.prevSize.width,o.size.height=a.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),a=t.options,i=t.containerOffset,r=t.containerPosition,s=t.containerElement,n=e(t.helper),o=n.offset(),d=n.outerWidth()-t.sizeDiff.width,u=n.outerHeight()-t.sizeDiff.height;t._helper&&!a.animate&&/relative/.test(s.css("position"))&&e(this).css({left:o.left-r.left-i.left,width:d,height:u}),t._helper&&!a.animate&&/static/.test(s.css("position"))&&e(this).css({left:o.left-r.left-i.left,width:d,height:u})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),a=t.options,i=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};"object"!=typeof a.alsoResize||a.alsoResize.parentNode?i(a.alsoResize):a.alsoResize.length?(a.alsoResize=a.alsoResize[0],i(a.alsoResize)):e.each(a.alsoResize,function(e){i(e)})},resize:function(t,a){var i=e(this).resizable("instance"),r=i.options,s=i.originalSize,n=i.originalPosition,o={height:i.size.height-s.height||0,width:i.size.width-s.width||0,top:i.position.top-n.top||0,left:i.position.left-n.left||0},d=function(t,i){e(t).each(function(){var t=e(this),r=e(this).data("ui-resizable-alsoresize"),s={},n=i&&i.length?i:t.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(n,function(e,t){var a=(r[t]||0)+(o[t]||0);a&&a>=0&&(s[t]=a||null)}),t.css(s)})};"object"!=typeof r.alsoResize||r.alsoResize.nodeType?d(r.alsoResize):e.each(r.alsoResize,function(e,t){d(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),a=t.options,i=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof a.ghost?a.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t=e(this).resizable("instance"),a=t.options,i=t.size,r=t.originalSize,s=t.originalPosition,n=t.axis,o="number"==typeof a.grid?[a.grid,a.grid]:a.grid,d=o[0]||1,u=o[1]||1,h=Math.round((i.width-r.width)/d)*d,l=Math.round((i.height-r.height)/u)*u,m=r.width+h,c=r.height+l,p=a.maxWidth&&m>a.maxWidth,f=a.maxHeight&&c>a.maxHeight,g=a.minWidth&&a.minWidth>m,y=a.minHeight&&a.minHeight>c;a.grid=o,g&&(m+=d),y&&(c+=u),p&&(m-=d),f&&(c-=u),/^(se|s|e)$/.test(n)?(t.size.width=m,t.size.height=c):/^(ne)$/.test(n)?(t.size.width=m,t.size.height=c,t.position.top=s.top-l):/^(sw)$/.test(n)?(t.size.width=m,t.size.height=c,t.position.left=s.left-h):(c-u>0?(t.size.height=c,t.position.top=s.top-l):(t.size.height=u,t.position.top=s.top+r.height-u),m-d>0?(t.size.width=m,t.position.left=s.left-h):(t.size.width=d,t.position.left=s.left+r.width-d))}}),e.ui.resizable,e.widget("ui.selectable",e.ui.mouse,{version:"1.11.0-beta.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,a=this;
-this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(a.options.filter,a.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),a=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:a.left,top:a.top,right:a.left+t.outerWidth(),bottom:a.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var a=this,i=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(i.filter,this.element[0]),this._trigger("start",t),e(i.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),i.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var i=e.data(this,"selectable-item");i.startselected=!0,t.metaKey||t.ctrlKey||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,a._trigger("unselecting",t,{unselecting:i.element}))}),e(t.target).parents().addBack().each(function(){var i,r=e.data(this,"selectable-item");return r?(i=!t.metaKey&&!t.ctrlKey||!r.$element.hasClass("ui-selected"),r.$element.removeClass(i?"ui-unselecting":"ui-selected").addClass(i?"ui-selecting":"ui-unselecting"),r.unselecting=!i,r.selecting=i,r.selected=i,i?a._trigger("selecting",t,{selecting:r.element}):a._trigger("unselecting",t,{unselecting:r.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var a,i=this,r=this.options,s=this.opos[0],n=this.opos[1],o=t.pageX,d=t.pageY;return s>o&&(a=o,o=s,s=a),n>d&&(a=d,d=n,n=a),this.helper.css({left:s,top:n,width:o-s,height:d-n}),this.selectees.each(function(){var a=e.data(this,"selectable-item"),u=!1;a&&a.element!==i.element[0]&&("touch"===r.tolerance?u=!(a.left>o||s>a.right||a.top>d||n>a.bottom):"fit"===r.tolerance&&(u=a.left>s&&o>a.right&&a.top>n&&d>a.bottom),u?(a.selected&&(a.$element.removeClass("ui-selected"),a.selected=!1),a.unselecting&&(a.$element.removeClass("ui-unselecting"),a.unselecting=!1),a.selecting||(a.$element.addClass("ui-selecting"),a.selecting=!0,i._trigger("selecting",t,{selecting:a.element}))):(a.selecting&&((t.metaKey||t.ctrlKey)&&a.startselected?(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.$element.addClass("ui-selected"),a.selected=!0):(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.startselected&&(a.$element.addClass("ui-unselecting"),a.unselecting=!0),i._trigger("unselecting",t,{unselecting:a.element}))),a.selected&&(t.metaKey||t.ctrlKey||a.startselected||(a.$element.removeClass("ui-selected"),a.selected=!1,a.$element.addClass("ui-unselecting"),a.unselecting=!0,i._trigger("unselecting",t,{unselecting:a.element})))))}),!1}},_mouseStop:function(t){var a=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var i=e.data(this,"selectable-item");i.$element.removeClass("ui-unselecting"),i.unselecting=!1,i.startselected=!1,a._trigger("unselected",t,{unselected:i.element})}),e(".ui-selecting",this.element[0]).each(function(){var i=e.data(this,"selectable-item");i.$element.removeClass("ui-selecting").addClass("ui-selected"),i.selecting=!1,i.selected=!0,i.startselected=!0,a._trigger("selected",t,{selected:i.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.0-beta.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,a){return e>=t&&t+a>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===e.axis||this._isFloating(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,a){var i=null,r=!1,s=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,s.widgetName+"-item")===s?(i=e(this),!1):void 0}),e.data(t.target,s.widgetName+"-item")===s&&(i=e(t.target)),i?!this.options.handle||a||(e(this.options.handle,i).find("*").addBack().each(function(){this===t.target&&(r=!0)}),r)?(this.currentItem=i,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,a,i){var r,s,n=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),n.containment&&this._setContainment(),n.cursor&&"auto"!==n.cursor&&(s=this.document.find("body"),this.storedCursor=s.css("cursor"),s.css("cursor",n.cursor),this.storedStylesheet=e("<style>*{ cursor: "+n.cursor+" !important; }</style>").appendTo(s)),n.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",n.opacity)),n.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",n.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(r=this.containers.length-1;r>=0;r--)this.containers[r]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var a,i,r,s,n=this.options,o=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<n.scrollSensitivity?this.scrollParent[0].scrollTop=o=this.scrollParent[0].scrollTop+n.scrollSpeed:t.pageY-this.overflowOffset.top<n.scrollSensitivity&&(this.scrollParent[0].scrollTop=o=this.scrollParent[0].scrollTop-n.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<n.scrollSensitivity?this.scrollParent[0].scrollLeft=o=this.scrollParent[0].scrollLeft+n.scrollSpeed:t.pageX-this.overflowOffset.left<n.scrollSensitivity&&(this.scrollParent[0].scrollLeft=o=this.scrollParent[0].scrollLeft-n.scrollSpeed)):(t.pageY-e(document).scrollTop()<n.scrollSensitivity?o=e(document).scrollTop(e(document).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<n.scrollSensitivity&&(o=e(document).scrollTop(e(document).scrollTop()+n.scrollSpeed)),t.pageX-e(document).scrollLeft()<n.scrollSensitivity?o=e(document).scrollLeft(e(document).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<n.scrollSensitivity&&(o=e(document).scrollLeft(e(document).scrollLeft()+n.scrollSpeed))),o!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),a=this.items.length-1;a>=0;a--)if(i=this.items[a],r=i.item[0],s=this._intersectsWithPointer(i),s&&i.instance===this.currentContainer&&r!==this.currentItem[0]&&this.placeholder[1===s?"next":"prev"]()[0]!==r&&!e.contains(this.placeholder[0],r)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],r):!0)){if(this.direction=1===s?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,a){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var i=this,r=this.placeholder.offset(),s=this.options.axis,n={};s&&"x"!==s||(n.left=r.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),s&&"y"!==s||(n.top=r.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(n,parseInt(this.options.revert,10)||500,function(){i._clear(t)})}else this._clear(t,a);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var a=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e(a).each(function(){var a=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);a&&i.push((t.key||a[1]+"[]")+"="+(t.key&&t.expression?a[1]:a[2]))}),!i.length&&t.key&&i.push(t.key+"="),i.join("&")},toArray:function(t){var a=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},a.each(function(){i.push(e(t.item||this).attr(t.attribute||"id")||"")}),i},_intersectsWith:function(e){var t=this.positionAbs.left,a=t+this.helperProportions.width,i=this.positionAbs.top,r=i+this.helperProportions.height,s=e.left,n=s+e.width,o=e.top,d=o+e.height,u=this.offset.click.top,h=this.offset.click.left,l="x"===this.options.axis||i+u>o&&d>i+u,m="y"===this.options.axis||t+h>s&&n>t+h,c=l&&m;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:t+this.helperProportions.width/2>s&&n>a-this.helperProportions.width/2&&i+this.helperProportions.height/2>o&&d>r-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),a="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),i=t&&a,r=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return i?this.floating?s&&"right"===s||"down"===r?2:1:r&&("down"===r?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),a=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),i=this._getDragVerticalDirection(),r=this._getDragHorizontalDirection();return this.floating&&r?"right"===r&&a||"left"===r&&!a:i&&("down"===i&&t||"up"===i&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function a(){o.push(this)}var i,r,s,n,o=[],d=[],u=this._connectWith();if(u&&t)for(i=u.length-1;i>=0;i--)for(s=e(u[i]),r=s.length-1;r>=0;r--)n=e.data(s[r],this.widgetFullName),n&&n!==this&&!n.options.disabled&&d.push([e.isFunction(n.options.items)?n.options.items.call(n.element):e(n.options.items,n.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),n]);for(d.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),i=d.length-1;i>=0;i--)d[i][0].each(a);return e(o)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var a=0;t.length>a;a++)if(t[a]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var a,i,r,s,n,o,d,u,h=this.items,l=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],m=this._connectWith();if(m&&this.ready)for(a=m.length-1;a>=0;a--)for(r=e(m[a]),i=r.length-1;i>=0;i--)s=e.data(r[i],this.widgetFullName),s&&s!==this&&!s.options.disabled&&(l.push([e.isFunction(s.options.items)?s.options.items.call(s.element[0],t,{item:this.currentItem}):e(s.options.items,s.element),s]),this.containers.push(s));for(a=l.length-1;a>=0;a--)for(n=l[a][1],o=l[a][0],i=0,u=o.length;u>i;i++)d=e(o[i]),d.data(this.widgetName+"-item",n),h.push({item:d,instance:n,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var a,i,r,s;for(a=this.items.length-1;a>=0;a--)i=this.items[a],i.instance!==this.currentContainer&&this.currentContainer&&i.item[0]!==this.currentItem[0]||(r=this.options.toleranceElement?e(this.options.toleranceElement,i.item):i.item,t||(i.width=r.outerWidth(),i.height=r.outerHeight()),s=r.offset(),i.left=s.left,i.top=s.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(a=this.containers.length-1;a>=0;a--)s=this.containers[a].element.offset(),this.containers[a].containerCache.left=s.left,this.containers[a].containerCache.top=s.top,this.containers[a].containerCache.width=this.containers[a].element.outerWidth(),this.containers[a].containerCache.height=this.containers[a].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var a,i=t.options;i.placeholder&&i.placeholder.constructor!==String||(a=i.placeholder,i.placeholder={element:function(){var i=t.currentItem[0].nodeName.toLowerCase(),r=e("<"+i+">",t.document[0]).addClass(a||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===i?t.currentItem.children().each(function(){e("<td>&#160;</td>",t.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(r)}):"img"===i&&r.attr("src",t.currentItem.attr("src")),a||r.css("visibility","hidden"),r},update:function(e,r){(!a||i.forcePlaceholderSize)&&(r.height()||r.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),r.width()||r.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(i.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),i.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var a,i,r,s,n,o,d,u,h,l,m=null,c=null;for(a=this.containers.length-1;a>=0;a--)if(!e.contains(this.currentItem[0],this.containers[a].element[0]))if(this._intersectsWith(this.containers[a].containerCache)){if(m&&e.contains(this.containers[a].element[0],m.element[0]))continue;m=this.containers[a],c=a}else this.containers[a].containerCache.over&&(this.containers[a]._trigger("out",t,this._uiHash(this)),this.containers[a].containerCache.over=0);if(m)if(1===this.containers.length)this.containers[c].containerCache.over||(this.containers[c]._trigger("over",t,this._uiHash(this)),this.containers[c].containerCache.over=1);else{for(r=1e4,s=null,h=m.floating||this._isFloating(this.currentItem),n=h?"left":"top",o=h?"width":"height",l=h?"clientX":"clientY",i=this.items.length-1;i>=0;i--)e.contains(this.containers[c].element[0],this.items[i].item[0])&&this.items[i].item[0]!==this.currentItem[0]&&(d=this.items[i].item.offset()[n],u=!1,t[l]-d>this.items[i][o]/2&&(u=!0),r>Math.abs(t[l]-d)&&(r=Math.abs(t[l]-d),s=this.items[i],this.direction=u?"up":"down"));if(!s&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[c])return;s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[c].element,!0),this._trigger("change",t,this._uiHash()),this.containers[c]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[c],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[c]._trigger("over",t,this._uiHash(this)),this.containers[c].containerCache.over=1}},_createHelper:function(t){var a=this.options,i=e.isFunction(a.helper)?e(a.helper.apply(this.element[0],[t,this.currentItem])):"clone"===a.helper?this.currentItem.clone():this.currentItem;return i.parents("body").length||e("parent"!==a.appendTo?a.appendTo:this.currentItem[0].parentNode)[0].appendChild(i[0]),i[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!i[0].style.width||a.forceHelperSize)&&i.width(this.currentItem.width()),(!i[0].style.height||a.forceHelperSize)&&i.height(this.currentItem.height()),i},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,a,i,r=this.options;"parent"===r.containment&&(r.containment=this.helper[0].parentNode),("document"===r.containment||"window"===r.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e("document"===r.containment?document:window).width()-this.helperProportions.width-this.margins.left,(e("document"===r.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(r.containment)||(t=e(r.containment)[0],a=e(r.containment).offset(),i="hidden"!==e(t).css("overflow"),this.containment=[a.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,a.left+(i?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(i?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,a){a||(a=this.position);var i="absolute"===t?1:-1,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,s=/(html|body)/i.test(r[0].tagName);return{top:a.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():s?0:r.scrollTop())*i,left:a.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():s?0:r.scrollLeft())*i}},_generatePosition:function(t){var a,i,r=this.options,s=t.pageX,n=t.pageY,o="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,d=/(html|body)/i.test(o[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(n=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(n=this.containment[3]+this.offset.click.top)),r.grid&&(a=this.originalPageY+Math.round((n-this.originalPageY)/r.grid[1])*r.grid[1],n=this.containment?a-this.offset.click.top>=this.containment[1]&&a-this.offset.click.top<=this.containment[3]?a:a-this.offset.click.top>=this.containment[1]?a-r.grid[1]:a+r.grid[1]:a,i=this.originalPageX+Math.round((s-this.originalPageX)/r.grid[0])*r.grid[0],s=this.containment?i-this.offset.click.left>=this.containment[0]&&i-this.offset.click.left<=this.containment[2]?i:i-this.offset.click.left>=this.containment[0]?i-r.grid[0]:i+r.grid[0]:i)),{top:n-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():d?0:o.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():d?0:o.scrollLeft())}},_rearrange:function(e,t,a,i){a?a[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var r=this.counter;this._delay(function(){r===this.counter&&this.refreshPositions(!i)})},_clear:function(e,t){function a(e,t,a){return function(i){a._trigger(e,i,t._uiHash(t))}}this.reverting=!1;var i,r=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)("auto"===this._storedCSS[i]||"static"===this._storedCSS[i])&&(this._storedCSS[i]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&r.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||r.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(r.push(function(e){this._trigger("remove",e,this._uiHash())}),r.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),r.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;i>=0;i--)t||r.push(a("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(r.push(a("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!t){for(this._trigger("beforeStop",e,this._uiHash()),i=0;r.length>i;i++)r[i].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!1}if(t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!t){for(i=0;r.length>i;i++)r[i].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var a=t||this;return{helper:a.helper,placeholder:a.placeholder||e([]),position:a.position,originalPosition:a.originalPosition,offset:a.positionAbs,item:a.currentItem,sender:t?t.element:null}}}),e.widget("ui.accordion",{version:"1.11.0-beta.2",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var a=e.ui.keyCode,i=this.headers.length,r=this.headers.index(t.target),s=!1;switch(t.keyCode){case a.RIGHT:case a.DOWN:s=this.headers[(r+1)%i];break;case a.LEFT:case a.UP:s=this.headers[(r-1+i)%i];break;case a.SPACE:case a.ENTER:this._eventHandler(t);break;case a.HOME:s=this.headers[0];break;case a.END:s=this.headers[i-1]}s&&(e(t.target).attr("tabIndex",-1),e(s).attr("tabIndex",0),s.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var t,a=this.options,i=a.heightStyle,r=this.element.parent();this.active=this._findActive(a.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),a=t.uniqueId().attr("id"),i=t.next(),r=i.uniqueId().attr("id");
-t.attr("aria-controls",r),i.attr("aria-labelledby",a)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(a.event),"fill"===i?(t=r.height(),this.element.siblings(":visible").each(function(){var a=e(this),i=a.css("position");"absolute"!==i&&"fixed"!==i&&(t-=a.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===i&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var a=this._findActive(t)[0];a!==this.active[0]&&(a=a||this.active[0],this._eventHandler({target:a,currentTarget:a,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var a={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){a[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,a),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var a=this.options,i=this.active,r=e(t.currentTarget),s=r[0]===i[0],n=s&&a.collapsible,o=n?e():r.next(),d=i.next(),u={oldHeader:i,oldPanel:d,newHeader:n?e():r,newPanel:o};t.preventDefault(),s&&!a.collapsible||this._trigger("beforeActivate",t,u)===!1||(a.active=n?!1:this.headers.index(r),this.active=s?e():r,this._toggle(u),i.removeClass("ui-accordion-header-active ui-state-active"),a.icons&&i.children(".ui-accordion-header-icon").removeClass(a.icons.activeHeader).addClass(a.icons.header),s||(r.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),a.icons&&r.children(".ui-accordion-header-icon").removeClass(a.icons.header).addClass(a.icons.activeHeader),r.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var a=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=a,this.prevHide=i,this.options.animate?this._animate(a,i,t):(i.hide(),a.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr("aria-selected","false"),a.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):a.length&&this.headers.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false").prev().attr({"aria-selected":"true",tabIndex:0,"aria-expanded":"true"})},_animate:function(e,t,a){var i,r,s,n=this,o=0,d=e.length&&(!t.length||e.index()<t.index()),u=this.options.animate||{},h=d&&u.down||u,l=function(){n._toggleComplete(a)};return"number"==typeof h&&(s=h),"string"==typeof h&&(r=h),r=r||h.easing||u.easing,s=s||h.duration||u.duration,t.length?e.length?(i=e.show().outerHeight(),t.animate(this.hideProps,{duration:s,easing:r,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:s,easing:r,complete:l,step:function(e,a){a.now=Math.round(e),"height"!==a.prop?o+=a.now:"content"!==n.options.heightStyle&&(a.now=Math.round(i-t.outerHeight()-o),o=0)}}),void 0):t.animate(this.hideProps,s,r,l):e.animate(this.showProps,s,r,l)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.0-beta.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var a=e(t.target);!this.mouseHandled&&a.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),a.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var a=e(t.currentTarget);a.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,a)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var a=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,a)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var i,r,s,n,o,d=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:d=!1,r=this.previousFilter||"",s=String.fromCharCode(t.keyCode),n=!1,clearTimeout(this.filterTimer),s===r?n=!0:s=r+s,o=RegExp("^"+a(s),"i"),i=this.activeMenu.find(this.options.items).filter(function(){return o.test(e(this).text())}),i=n&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(s=String.fromCharCode(t.keyCode),o=RegExp("^"+a(s),"i"),i=this.activeMenu.find(this.options.items).filter(function(){return o.test(e(this).text())})),i.length?(this.focus(t,i),i.length>1?(this.previousFilter=s,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}d&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,a,i=this,r=this.options.icons.submenu,s=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),a=t.parent(),i=e("<span>").addClass("ui-menu-icon ui-icon "+r).data("ui-menu-submenu-carat",!0);a.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",a.attr("id"))}),t=s.add(this.element),a=t.find(this.options.items),a.not(".ui-menu-item").each(function(){var t=e(this);i._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),a.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),a.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var a,i;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),i=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),a=t.children(".ui-menu"),a.length&&e&&/^mouse/.test(e.type)&&this._startOpening(a),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var a,i,r,s,n,o;this._hasScroll()&&(a=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,r=t.offset().top-this.activeMenu.offset().top-a-i,s=this.activeMenu.scrollTop(),n=this.activeMenu.height(),o=t.outerHeight(),0>r?this.activeMenu.scrollTop(s+r):r+o>n&&this.activeMenu.scrollTop(s+r-n+o))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var a=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(a)},collapseAll:function(t,a){clearTimeout(this.timer),this.timer=this._delay(function(){var i=a?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));i.length||(i=this.element),this._close(i),this.blur(t),this.activeMenu=i},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,a){var i;this.active&&(i="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),i&&i.length&&this.active||(i=this.activeMenu.find(this.options.items)[t]()),this.focus(a,i)},nextPage:function(t){var a,i,r;return this.active?(this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,r=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return a=e(this),0>a.offset().top-i-r}),this.focus(t,a)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var a,i,r;return this.active?(this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,r=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return a=e(this),a.offset().top-i+r>0}),this.focus(t,a)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var a={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,a)}}),e.widget("ui.autocomplete",{version:"1.11.0-beta.2",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,a,i,r=this.element[0].nodeName.toLowerCase(),s="textarea"===r,n="input"===r;this.isMultiLine=s?!0:n?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[s||n?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(r){if(this.element.prop("readOnly"))return t=!0,i=!0,a=!0,void 0;t=!1,i=!1,a=!1;var s=e.ui.keyCode;switch(r.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",r);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",r);break;case s.UP:t=!0,this._keyEvent("previous",r);break;case s.DOWN:t=!0,this._keyEvent("next",r);break;case s.ENTER:this.menu.active&&(t=!0,r.preventDefault(),this.menu.select(r));break;case s.TAB:this.menu.active&&this.menu.select(r);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(r),r.preventDefault());break;default:a=!0,this._searchTimeout(r)}},keypress:function(i){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&i.preventDefault(),void 0;if(!a){var r=e.ui.keyCode;switch(i.keyCode){case r.PAGE_UP:this._move("previousPage",i);break;case r.PAGE_DOWN:this._move("nextPage",i);break;case r.UP:this._keyEvent("previous",i);break;case r.DOWN:this._keyEvent("next",i)}}},input:function(e){return i?(i=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var a=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(i){i.target===t.element[0]||i.target===a||e.contains(a,i.target)||t.close()})})},menufocus:function(t,a){var i,r;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(r=a.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:r})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value),i=a.item.attr("aria-label")||r.value,i&&jQuery.trim(i).length&&(this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var a=t.item.data("ui-autocomplete-item"),i=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=i,this._delay(function(){this.previous=i,this.selectedItem=a})),!1!==this._trigger("select",e,{item:a})&&this._value(a.value),this.term=this._value(),this.close(e),this.selectedItem=a}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,a,i=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(a,i){i(e.ui.autocomplete.filter(t,a.term))}):"string"==typeof this.options.source?(a=this.options.source,this.source=function(t,r){i.xhr&&i.xhr.abort(),i.xhr=e.ajax({url:a,data:t,dataType:"json",success:function(e){r(e)},error:function(){r([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),a=this.menu.element.is(":visible"),i=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!a&&!i)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var a=this.menu.element.empty();this._renderMenu(a,t),this.isNewMenu=!0,this.menu.refresh(),a.show(),this._resizeMenu(),a.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,a){var i=this;e.each(a,function(e,a){i._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,a){return e("<li>").text(a.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,a){var i=RegExp(e.ui.autocomplete.escapeRegex(a),"i");return e.grep(t,function(e){return i.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var a;this._superApply(arguments),this.options.disabled||this.cancelSearch||(a=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(a).appendTo(this.liveRegion))}}),e.ui.autocomplete;var l,m="ui-button ui-widget ui-state-default ui-corner-all",c="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",p=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},f=function(t){var a=t.name,i=t.form,r=e([]);return a&&(a=a.replace(/'/g,"\\'"),r=i?e(i).find("[name='"+a+"'][type=radio]"):e("[name='"+a+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),r};e.widget("ui.button",{version:"1.11.0-beta.2",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,p),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,a=this.options,i="checkbox"===this.type||"radio"===this.type,r=i?"":"ui-state-active";null===a.label&&(a.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(m).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){a.disabled||this===l&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){a.disabled||e(this).removeClass(r)}).bind("click"+this.eventNamespace,function(e){a.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),i&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return a.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(a.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var i=t.element[0];f(i).not(i).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return a.disabled?!1:(e(this).addClass("ui-state-active"),l=this,t.document.one("mouseup",function(){l=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return a.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return a.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",a.disabled),this._resetButton()},_determineButtonType:function(){var e,t,a;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),a=this.element.is(":checked"),a&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",a)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(m+" ui-state-active "+c).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?f(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(c),a=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),i=this.options.icons,r=i.primary&&i.secondary,s=[];i.primary||i.secondary?(this.options.text&&s.push("ui-button-text-icon"+(r?"s":i.primary?"-primary":"-secondary")),i.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+i.primary+"'></span>"),i.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+i.secondary+"'></span>"),this.options.text||(s.push(r?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(a)))):s.push("ui-button-text-only"),t.addClass(s.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.0-beta.2",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),a=this.element.find(this.options.items),i=a.filter(":ui-button");a.not(":ui-button").button(),i.button("refresh"),this.buttons=a.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.0-beta.2"}});var g;e.extend(r.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return n(this._defaults,e||{}),this},_attachDatepicker:function(t,a){var i,r,s;i=t.nodeName.toLowerCase(),r="div"===i||"span"===i,t.id||(this.uuid+=1,t.id="dp"+this.uuid),s=this._newInst(e(t),r),s.settings=e.extend({},a||{}),"input"===i?this._connectDatepicker(t,s):r&&this._inlineDatepicker(t,s)},_newInst:function(t,a){var i=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:i,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:a,dpDiv:a?s(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,a){var i=e(t);a.append=e([]),a.trigger=e([]),i.hasClass(this.markerClassName)||(this._attachments(i,a),i.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(a),e.data(t,"datepicker",a),a.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,a){var i,r,s,n=this._get(a,"appendText"),o=this._get(a,"isRTL");a.append&&a.append.remove(),n&&(a.append=e("<span class='"+this._appendClass+"'>"+n+"</span>"),t[o?"before":"after"](a.append)),t.unbind("focus",this._showDatepicker),a.trigger&&a.trigger.remove(),i=this._get(a,"showOn"),("focus"===i||"both"===i)&&t.focus(this._showDatepicker),("button"===i||"both"===i)&&(r=this._get(a,"buttonText"),s=this._get(a,"buttonImage"),a.trigger=e(this._get(a,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:s,alt:r,title:r}):e("<button type='button'></button>").addClass(this._triggerClass).html(s?e("<img/>").attr({src:s,alt:r,title:r}):r)),t[o?"before":"after"](a.trigger),a.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,a,i,r,s=new Date(2009,11,20),n=this._get(e,"dateFormat");n.match(/[DM]/)&&(t=function(e){for(a=0,i=0,r=0;e.length>r;r++)e[r].length>a&&(a=e[r].length,i=r);return i},s.setMonth(t(this._get(e,n.match(/MM/)?"monthNames":"monthNamesShort"))),s.setDate(t(this._get(e,n.match(/DD/)?"dayNames":"dayNamesShort"))+20-s.getDay())),e.input.attr("size",this._formatDate(e,s).length)}},_inlineDatepicker:function(t,a){var i=e(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(a.dpDiv),e.data(t,"datepicker",a),this._setDate(a,this._getDefaultDate(a),!0),this._updateDatepicker(a),this._updateAlternate(a),a.settings.disabled&&this._disableDatepicker(t),a.dpDiv.css("display","block"))},_dialogDatepicker:function(t,a,i,r,s){var o,d,u,h,l,m=this._dialogInst;return m||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),m=this._dialogInst=this._newInst(this._dialogInput,!1),m.settings={},e.data(this._dialogInput[0],"datepicker",m)),n(m.settings,r||{}),a=a&&a.constructor===Date?this._formatDate(m,a):a,this._dialogInput.val(a),this._pos=s?s.length?s:[s.pageX,s.pageY]:null,this._pos||(d=document.documentElement.clientWidth,u=document.documentElement.clientHeight,h=document.documentElement.scrollLeft||document.body.scrollLeft,l=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[d/2-100+h,u/2-150+l]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),m.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",m),this},_destroyDatepicker:function(t){var a,i=e(t),r=e.data(t,"datepicker");i.hasClass(this.markerClassName)&&(a=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===a?(r.append.remove(),r.trigger.remove(),i.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===a||"span"===a)&&i.removeClass(this.markerClassName).empty())
-},_enableDatepicker:function(t){var a,i,r=e(t),s=e.data(t,"datepicker");r.hasClass(this.markerClassName)&&(a=t.nodeName.toLowerCase(),"input"===a?(t.disabled=!1,s.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===a||"span"===a)&&(i=r.children("."+this._inlineClass),i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var a,i,r=e(t),s=e.data(t,"datepicker");r.hasClass(this.markerClassName)&&(a=t.nodeName.toLowerCase(),"input"===a?(t.disabled=!0,s.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===a||"span"===a)&&(i=r.children("."+this._inlineClass),i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(a){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,a,i){var r,s,o,d,u=this._getInst(t);return 2===arguments.length&&"string"==typeof a?"defaults"===a?e.extend({},e.datepicker._defaults):u?"all"===a?e.extend({},u.settings):this._get(u,a):null:(r=a||{},"string"==typeof a&&(r={},r[a]=i),u&&(this._curInst===u&&this._hideDatepicker(),s=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(u,"min"),d=this._getMinMaxDate(u,"max"),n(u.settings,r),null!==o&&void 0!==r.dateFormat&&void 0===r.minDate&&(u.settings.minDate=this._formatDate(u,o)),null!==d&&void 0!==r.dateFormat&&void 0===r.maxDate&&(u.settings.maxDate=this._formatDate(u,d)),"disabled"in r&&(r.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),u),this._autoSize(u),this._setDate(u,s),this._updateAlternate(u),this._updateDatepicker(u)),void 0)},_changeDatepicker:function(e,t,a){this._optionDatepicker(e,t,a)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var a=this._getInst(e);a&&(this._setDate(a,t),this._updateDatepicker(a),this._updateAlternate(a))},_getDateDatepicker:function(e,t){var a=this._getInst(e);return a&&!a.inline&&this._setDateFromField(a,t),a?this._getDate(a):null},_doKeyDown:function(t){var a,i,r,s=e.datepicker._getInst(t.target),n=!0,o=s.dpDiv.is(".ui-datepicker-rtl");if(s._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),n=!1;break;case 13:return r=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",s.dpDiv),r[0]&&e.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,r[0]),a=e.datepicker._get(s,"onSelect"),a?(i=e.datepicker._formatDate(s),a.apply(s.input?s.input[0]:null,[i,s])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(s,"stepBigMonths"):-e.datepicker._get(s,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(s,"stepBigMonths"):+e.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),n=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),n=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?1:-1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(s,"stepBigMonths"):-e.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),n=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?-1:1,"D"),n=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(s,"stepBigMonths"):+e.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),n=t.ctrlKey||t.metaKey;break;default:n=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):n=!1;n&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var a,i,r=e.datepicker._getInst(t.target);return e.datepicker._get(r,"constrainInput")?(a=e.datepicker._possibleChars(e.datepicker._get(r,"dateFormat")),i=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">i||!a||a.indexOf(i)>-1):void 0},_doKeyUp:function(t){var a,i=e.datepicker._getInst(t.target);if(i.input.val()!==i.lastVal)try{a=e.datepicker.parseDate(e.datepicker._get(i,"dateFormat"),i.input?i.input.val():null,e.datepicker._getFormatConfig(i)),a&&(e.datepicker._setDateFromField(i),e.datepicker._updateAlternate(i),e.datepicker._updateDatepicker(i))}catch(r){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var a,r,s,o,d,u,h;a=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==a&&(e.datepicker._curInst.dpDiv.stop(!0,!0),a&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),r=e.datepicker._get(a,"beforeShow"),s=r?r.apply(t,[t,a]):{},s!==!1&&(n(a.settings,s),a.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(a),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),d={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,a.dpDiv.empty(),a.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(a),d=e.datepicker._checkOffset(a,d,o),a.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:d.left+"px",top:d.top+"px"}),a.inline||(u=e.datepicker._get(a,"showAnim"),h=e.datepicker._get(a,"duration"),a.dpDiv.css("z-index",i(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[u]?a.dpDiv.show(u,e.datepicker._get(a,"showOptions"),h):a.dpDiv[u||"show"](u?h:null),e.datepicker._shouldFocusInput(a)&&a.input.focus(),e.datepicker._curInst=a))}},_updateDatepicker:function(t){this.maxRows=4,g=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t),t.dpDiv.find("."+this._dayOverClass+" a");var a,i=this._getNumberOfMonths(t),r=i[1],s=17;t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),r>1&&t.dpDiv.addClass("ui-datepicker-multi-"+r).css("width",s*r+"em"),t.dpDiv[(1!==i[0]||1!==i[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(a=t.yearshtml,setTimeout(function(){a===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),a=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,a,i){var r=t.dpDiv.outerWidth(),s=t.dpDiv.outerHeight(),n=t.input?t.input.outerWidth():0,o=t.input?t.input.outerHeight():0,d=document.documentElement.clientWidth+(i?0:e(document).scrollLeft()),u=document.documentElement.clientHeight+(i?0:e(document).scrollTop());return a.left-=this._get(t,"isRTL")?r-n:0,a.left-=i&&a.left===t.input.offset().left?e(document).scrollLeft():0,a.top-=i&&a.top===t.input.offset().top+o?e(document).scrollTop():0,a.left-=Math.min(a.left,a.left+r>d&&d>r?Math.abs(a.left+r-d):0),a.top-=Math.min(a.top,a.top+s>u&&u>s?Math.abs(s+o):0),a},_findPos:function(t){for(var a,i=this._getInst(t),r=this._get(i,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[r?"previousSibling":"nextSibling"];return a=e(t).offset(),[a.left,a.top]},_hideDatepicker:function(t){var a,i,r,s,n=this._curInst;!n||t&&n!==e.data(t,"datepicker")||this._datepickerShowing&&(a=this._get(n,"showAnim"),i=this._get(n,"duration"),r=function(){e.datepicker._tidyDialog(n)},e.effects&&(e.effects.effect[a]||e.effects[a])?n.dpDiv.hide(a,e.datepicker._get(n,"showOptions"),i,r):n.dpDiv["slideDown"===a?"slideUp":"fadeIn"===a?"fadeOut":"hide"](a?i:null,r),a||r(),this._datepickerShowing=!1,s=this._get(n,"onClose"),s&&s.apply(n.input?n.input[0]:null,[n.input?n.input.val():"",n]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var a=e(t.target),i=e.datepicker._getInst(a[0]);(a[0].id!==e.datepicker._mainDivId&&0===a.parents("#"+e.datepicker._mainDivId).length&&!a.hasClass(e.datepicker.markerClassName)&&!a.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||a.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==i)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,a,i){var r=e(t),s=this._getInst(r[0]);this._isDisabledDatepicker(r[0])||(this._adjustInstDate(s,a+("M"===i?this._get(s,"showCurrentAtPos"):0),i),this._updateDatepicker(s))},_gotoToday:function(t){var a,i=e(t),r=this._getInst(i[0]);this._get(r,"gotoCurrent")&&r.currentDay?(r.selectedDay=r.currentDay,r.drawMonth=r.selectedMonth=r.currentMonth,r.drawYear=r.selectedYear=r.currentYear):(a=new Date,r.selectedDay=a.getDate(),r.drawMonth=r.selectedMonth=a.getMonth(),r.drawYear=r.selectedYear=a.getFullYear()),this._notifyChange(r),this._adjustDate(i)},_selectMonthYear:function(t,a,i){var r=e(t),s=this._getInst(r[0]);s["selected"+("M"===i?"Month":"Year")]=s["draw"+("M"===i?"Month":"Year")]=parseInt(a.options[a.selectedIndex].value,10),this._notifyChange(s),this._adjustDate(r)},_selectDay:function(t,a,i,r){var s,n=e(t);e(r).hasClass(this._unselectableClass)||this._isDisabledDatepicker(n[0])||(s=this._getInst(n[0]),s.selectedDay=s.currentDay=e("a",r).html(),s.selectedMonth=s.currentMonth=a,s.selectedYear=s.currentYear=i,this._selectDate(t,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear)))},_clearDate:function(t){var a=e(t);this._selectDate(a,"")},_selectDate:function(t,a){var i,r=e(t),s=this._getInst(r[0]);a=null!=a?a:this._formatDate(s),s.input&&s.input.val(a),this._updateAlternate(s),i=this._get(s,"onSelect"),i?i.apply(s.input?s.input[0]:null,[a,s]):s.input&&s.input.trigger("change"),s.inline?this._updateDatepicker(s):(this._hideDatepicker(),this._lastInput=s.input[0],"object"!=typeof s.input[0]&&s.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var a,i,r,s=this._get(t,"altField");s&&(a=this._get(t,"altFormat")||this._get(t,"dateFormat"),i=this._getDate(t),r=this.formatDate(a,i,this._getFormatConfig(t)),e(s).each(function(){e(this).val(r)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,a=new Date(e.getTime());return a.setDate(a.getDate()+4-(a.getDay()||7)),t=a.getTime(),a.setMonth(0),a.setDate(1),Math.floor(Math.round((t-a)/864e5)/7)+1},parseDate:function(t,a,i){if(null==t||null==a)throw"Invalid arguments";if(a="object"==typeof a?""+a:a+"",""===a)return null;var r,s,n,o,d=0,u=(i?i.shortYearCutoff:null)||this._defaults.shortYearCutoff,h="string"!=typeof u?u:(new Date).getFullYear()%100+parseInt(u,10),l=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,m=(i?i.dayNames:null)||this._defaults.dayNames,c=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,p=(i?i.monthNames:null)||this._defaults.monthNames,f=-1,g=-1,y=-1,x=-1,v=!1,T=function(e){var a=t.length>r+1&&t.charAt(r+1)===e;return a&&r++,a},k=function(e){var t=T(e),i="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,r=RegExp("^\\d{1,"+i+"}"),s=a.substring(d).match(r);if(!s)throw"Missing number at position "+d;return d+=s[0].length,parseInt(s[0],10)},S=function(t,i,r){var s=-1,n=e.map(T(t)?r:i,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(n,function(e,t){var i=t[1];return a.substr(d,i.length).toLowerCase()===i.toLowerCase()?(s=t[0],d+=i.length,!1):void 0}),-1!==s)return s+1;throw"Unknown name at position "+d},b=function(){if(a.charAt(d)!==t.charAt(r))throw"Unexpected literal at position "+d;d++};for(r=0;t.length>r;r++)if(v)"'"!==t.charAt(r)||T("'")?b():v=!1;else switch(t.charAt(r)){case"d":y=k("d");break;case"D":S("D",l,m);break;case"o":x=k("o");break;case"m":g=k("m");break;case"M":g=S("M",c,p);break;case"y":f=k("y");break;case"@":o=new Date(k("@")),f=o.getFullYear(),g=o.getMonth()+1,y=o.getDate();break;case"!":o=new Date((k("!")-this._ticksTo1970)/1e4),f=o.getFullYear(),g=o.getMonth()+1,y=o.getDate();break;case"'":T("'")?b():v=!0;break;default:b()}if(a.length>d&&(n=a.substr(d),!/^\s+/.test(n)))throw"Extra/unparsed characters found in date: "+n;if(-1===f?f=(new Date).getFullYear():100>f&&(f+=(new Date).getFullYear()-(new Date).getFullYear()%100+(h>=f?0:-100)),x>-1)for(g=1,y=x;;){if(s=this._getDaysInMonth(f,g-1),s>=y)break;g++,y-=s}if(o=this._daylightSavingAdjust(new Date(f,g-1,y)),o.getFullYear()!==f||o.getMonth()+1!==g||o.getDate()!==y)throw"Invalid date";return o},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,a){if(!t)return"";var i,r=(a?a.dayNamesShort:null)||this._defaults.dayNamesShort,s=(a?a.dayNames:null)||this._defaults.dayNames,n=(a?a.monthNamesShort:null)||this._defaults.monthNamesShort,o=(a?a.monthNames:null)||this._defaults.monthNames,d=function(t){var a=e.length>i+1&&e.charAt(i+1)===t;return a&&i++,a},u=function(e,t,a){var i=""+t;if(d(e))for(;a>i.length;)i="0"+i;return i},h=function(e,t,a,i){return d(e)?i[t]:a[t]},l="",m=!1;if(t)for(i=0;e.length>i;i++)if(m)"'"!==e.charAt(i)||d("'")?l+=e.charAt(i):m=!1;else switch(e.charAt(i)){case"d":l+=u("d",t.getDate(),2);break;case"D":l+=h("D",t.getDay(),r,s);break;case"o":l+=u("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":l+=u("m",t.getMonth()+1,2);break;case"M":l+=h("M",t.getMonth(),n,o);break;case"y":l+=d("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":l+=t.getTime();break;case"!":l+=1e4*t.getTime()+this._ticksTo1970;break;case"'":d("'")?l+="'":m=!0;break;default:l+=e.charAt(i)}return l},_possibleChars:function(e){var t,a="",i=!1,r=function(a){var i=e.length>t+1&&e.charAt(t+1)===a;return i&&t++,i};for(t=0;e.length>t;t++)if(i)"'"!==e.charAt(t)||r("'")?a+=e.charAt(t):i=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":a+="0123456789";break;case"D":case"M":return null;case"'":r("'")?a+="'":i=!0;break;default:a+=e.charAt(t)}return a},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var a=this._get(e,"dateFormat"),i=e.lastVal=e.input?e.input.val():null,r=this._getDefaultDate(e),s=r,n=this._getFormatConfig(e);try{s=this.parseDate(a,i,n)||r}catch(o){i=t?"":i}e.selectedDay=s.getDate(),e.drawMonth=e.selectedMonth=s.getMonth(),e.drawYear=e.selectedYear=s.getFullYear(),e.currentDay=i?s.getDate():0,e.currentMonth=i?s.getMonth():0,e.currentYear=i?s.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,a,i){var r=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},s=function(a){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),a,e.datepicker._getFormatConfig(t))}catch(i){}for(var r=(a.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,s=r.getFullYear(),n=r.getMonth(),o=r.getDate(),d=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,u=d.exec(a);u;){switch(u[2]||"d"){case"d":case"D":o+=parseInt(u[1],10);break;case"w":case"W":o+=7*parseInt(u[1],10);break;case"m":case"M":n+=parseInt(u[1],10),o=Math.min(o,e.datepicker._getDaysInMonth(s,n));break;case"y":case"Y":s+=parseInt(u[1],10),o=Math.min(o,e.datepicker._getDaysInMonth(s,n))}u=d.exec(a)}return new Date(s,n,o)},n=null==a||""===a?i:"string"==typeof a?s(a):"number"==typeof a?isNaN(a)?i:r(a):new Date(a.getTime());return n=n&&"Invalid Date"==""+n?i:n,n&&(n.setHours(0),n.setMinutes(0),n.setSeconds(0),n.setMilliseconds(0)),this._daylightSavingAdjust(n)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,a){var i=!t,r=e.selectedMonth,s=e.selectedYear,n=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=n.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=n.getMonth(),e.drawYear=e.selectedYear=e.currentYear=n.getFullYear(),r===e.selectedMonth&&s===e.selectedYear||a||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(i?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var a=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(i,-a,"M")},next:function(){e.datepicker._adjustDate(i,+a,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(i)},selectDay:function(){return e.datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(i,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,a,i,r,s,n,o,d,u,h,l,m,c,p,f,g,y,x,v,T,k,S,b,N,M,D,w,_,A,j,F,C,L,H,J,P,z,R,E,O=new Date,Y=this._daylightSavingAdjust(new Date(O.getFullYear(),O.getMonth(),O.getDate())),I=this._get(e,"isRTL"),Q=this._get(e,"showButtonPanel"),W=this._get(e,"hideIfNoPrevNext"),B=this._get(e,"navigationAsDateFormat"),V=this._getNumberOfMonths(e),K=this._get(e,"showCurrentAtPos"),G=this._get(e,"stepMonths"),U=1!==V[0]||1!==V[1],q=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),Z=this._getMinMaxDate(e,"min"),X=this._getMinMaxDate(e,"max"),$=e.drawMonth-K,et=e.drawYear;if(0>$&&($+=12,et--),X)for(t=this._daylightSavingAdjust(new Date(X.getFullYear(),X.getMonth()-V[0]*V[1]+1,X.getDate())),t=Z&&Z>t?Z:t;this._daylightSavingAdjust(new Date(et,$,1))>t;)$--,0>$&&($=11,et--);for(e.drawMonth=$,e.drawYear=et,a=this._get(e,"prevText"),a=B?this.formatDate(a,this._daylightSavingAdjust(new Date(et,$-G,1)),this._getFormatConfig(e)):a,i=this._canAdjustMonth(e,-1,et,$)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+a+"'><span class='ui-icon ui-icon-circle-triangle-"+(I?"e":"w")+"'>"+a+"</span></a>":W?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+a+"'><span class='ui-icon ui-icon-circle-triangle-"+(I?"e":"w")+"'>"+a+"</span></a>",r=this._get(e,"nextText"),r=B?this.formatDate(r,this._daylightSavingAdjust(new Date(et,$+G,1)),this._getFormatConfig(e)):r,s=this._canAdjustMonth(e,1,et,$)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+r+"'><span class='ui-icon ui-icon-circle-triangle-"+(I?"w":"e")+"'>"+r+"</span></a>":W?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+r+"'><span class='ui-icon ui-icon-circle-triangle-"+(I?"w":"e")+"'>"+r+"</span></a>",n=this._get(e,"currentText"),o=this._get(e,"gotoCurrent")&&e.currentDay?q:Y,n=B?this.formatDate(n,o,this._getFormatConfig(e)):n,d=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",u=Q?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(I?d:"")+(this._isInRange(e,o)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+n+"</button>":"")+(I?"":d)+"</div>":"",h=parseInt(this._get(e,"firstDay"),10),h=isNaN(h)?0:h,l=this._get(e,"showWeek"),m=this._get(e,"dayNames"),c=this._get(e,"dayNamesMin"),p=this._get(e,"monthNames"),f=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),y=this._get(e,"showOtherMonths"),x=this._get(e,"selectOtherMonths"),v=this._getDefaultDate(e),T="",S=0;V[0]>S;S++){for(b="",this.maxRows=4,N=0;V[1]>N;N++){if(M=this._daylightSavingAdjust(new Date(et,$,e.selectedDay)),D=" ui-corner-all",w="",U){if(w+="<div class='ui-datepicker-group",V[1]>1)switch(N){case 0:w+=" ui-datepicker-group-first",D=" ui-corner-"+(I?"right":"left");break;case V[1]-1:w+=" ui-datepicker-group-last",D=" ui-corner-"+(I?"left":"right");break;default:w+=" ui-datepicker-group-middle",D=""}w+="'>"}for(w+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+D+"'>"+(/all|left/.test(D)&&0===S?I?s:i:"")+(/all|right/.test(D)&&0===S?I?i:s:"")+this._generateMonthYearHeader(e,$,et,Z,X,S>0||N>0,p,f)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",_=l?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",k=0;7>k;k++)A=(k+h)%7,_+="<th scope='col'"+((k+h+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+m[A]+"'>"+c[A]+"</span></th>";for(w+=_+"</tr></thead><tbody>",j=this._getDaysInMonth(et,$),et===e.selectedYear&&$===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,j)),F=(this._getFirstDayOfMonth(et,$)-h+7)%7,C=Math.ceil((F+j)/7),L=U?this.maxRows>C?this.maxRows:C:C,this.maxRows=L,H=this._daylightSavingAdjust(new Date(et,$,1-F)),J=0;L>J;J++){for(w+="<tr>",P=l?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(H)+"</td>":"",k=0;7>k;k++)z=g?g.apply(e.input?e.input[0]:null,[H]):[!0,""],R=H.getMonth()!==$,E=R&&!x||!z[0]||Z&&Z>H||X&&H>X,P+="<td class='"+((k+h+6)%7>=5?" ui-datepicker-week-end":"")+(R?" ui-datepicker-other-month":"")+(H.getTime()===M.getTime()&&$===e.selectedMonth&&e._keyEvent||v.getTime()===H.getTime()&&v.getTime()===M.getTime()?" "+this._dayOverClass:"")+(E?" "+this._unselectableClass+" ui-state-disabled":"")+(R&&!y?"":" "+z[1]+(H.getTime()===q.getTime()?" "+this._currentClass:"")+(H.getTime()===Y.getTime()?" ui-datepicker-today":""))+"'"+(R&&!y||!z[2]?"":" title='"+z[2].replace(/'/g,"&#39;")+"'")+(E?"":" data-handler='selectDay' data-event='click' data-month='"+H.getMonth()+"' data-year='"+H.getFullYear()+"'")+">"+(R&&!y?"&#xa0;":E?"<span class='ui-state-default'>"+H.getDate()+"</span>":"<a class='ui-state-default"+(H.getTime()===Y.getTime()?" ui-state-highlight":"")+(H.getTime()===q.getTime()?" ui-state-active":"")+(R?" ui-priority-secondary":"")+"' href='#'>"+H.getDate()+"</a>")+"</td>",H.setDate(H.getDate()+1),H=this._daylightSavingAdjust(H);w+=P+"</tr>"}$++,$>11&&($=0,et++),w+="</tbody></table>"+(U?"</div>"+(V[0]>0&&N===V[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),b+=w}T+=b}return T+=u,e._keyEvent=!1,T},_generateMonthYearHeader:function(e,t,a,i,r,s,n,o){var d,u,h,l,m,c,p,f,g=this._get(e,"changeMonth"),y=this._get(e,"changeYear"),x=this._get(e,"showMonthAfterYear"),v="<div class='ui-datepicker-title'>",T="";if(s||!g)T+="<span class='ui-datepicker-month'>"+n[t]+"</span>";else{for(d=i&&i.getFullYear()===a,u=r&&r.getFullYear()===a,T+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",h=0;12>h;h++)(!d||h>=i.getMonth())&&(!u||r.getMonth()>=h)&&(T+="<option value='"+h+"'"+(h===t?" selected='selected'":"")+">"+o[h]+"</option>");T+="</select>"}if(x||(v+=T+(!s&&g&&y?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",s||!y)v+="<span class='ui-datepicker-year'>"+a+"</span>";else{for(l=this._get(e,"yearRange").split(":"),m=(new Date).getFullYear(),c=function(e){var t=e.match(/c[+\-].*/)?a+parseInt(e.substring(1),10):e.match(/[+\-].*/)?m+parseInt(e,10):parseInt(e,10);return isNaN(t)?m:t},p=c(l[0]),f=Math.max(p,c(l[1]||"")),p=i?Math.max(p,i.getFullYear()):p,f=r?Math.min(f,r.getFullYear()):f,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";f>=p;p++)e.yearshtml+="<option value='"+p+"'"+(p===a?" selected='selected'":"")+">"+p+"</option>";e.yearshtml+="</select>",v+=e.yearshtml,e.yearshtml=null}return v+=this._get(e,"yearSuffix"),x&&(v+=(!s&&g&&y?"":"&#xa0;")+T),v+="</div>"},_adjustInstDate:function(e,t,a){var i=e.drawYear+("Y"===a?t:0),r=e.drawMonth+("M"===a?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(i,r))+("D"===a?t:0),n=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(i,r,s)));e.selectedDay=n.getDate(),e.drawMonth=e.selectedMonth=n.getMonth(),e.drawYear=e.selectedYear=n.getFullYear(),("M"===a||"Y"===a)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var a=this._getMinMaxDate(e,"min"),i=this._getMinMaxDate(e,"max"),r=a&&a>t?a:t;return i&&r>i?i:r},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,a,i){var r=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(a,i+(0>t?t:r[0]*r[1]),1));return 0>t&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var a,i,r=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=null,o=null,d=this._get(e,"yearRange");return d&&(a=d.split(":"),i=(new Date).getFullYear(),n=parseInt(a[0],10),o=parseInt(a[1],10),a[0].match(/[+\-].*/)&&(n+=i),a[1].match(/[+\-].*/)&&(o+=i)),(!r||t.getTime()>=r.getTime())&&(!s||t.getTime()<=s.getTime())&&(!n||t.getFullYear()>=n)&&(!o||o>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,a,i){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var r=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(i,a,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),r,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var a=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(a)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(a)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(a))},e.datepicker=new r,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.0-beta.2",e.datepicker,e.widget("ui.dialog",{version:"1.11.0-beta.2",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var a=e(this).css(t).offset().top;0>a&&e(this).css("top",t.top-a)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var a,i=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{a=this.document[0].activeElement,a&&"body"!==a.nodeName.toLowerCase()&&e(a).blur()}catch(r){}this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,a){var i=!1,r=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),s=Math.max.apply(null,r);return s>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!a&&this._trigger("focus",t),i},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()
-},_keepFocus:function(t){function a(){var t=this.document[0].activeElement,a=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);a||this._focusTabbable()}t.preventDefault(),a.call(this),this._delay(a)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;if(t.keyCode===e.ui.keyCode.TAB){var a=this.uiDialog.find(":tabbable"),i=a.filter(":first"),r=a.filter(":last");t.target!==r[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){i.focus()}),t.preventDefault()):(this._delay(function(){i.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,a=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(a)||e.isArray(a)&&!a.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(a,function(a,i){var r,s;i=e.isFunction(i)?{click:i,text:a}:i,i=e.extend({type:"button"},i),r=i.click,i.click=function(){r.apply(t.element[0],arguments)},s={icons:i.icons,text:i.showText},delete i.icons,delete i.showText,e("<button></button>",i).button(s).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var a=this,i=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(i,r){e(this).addClass("ui-dialog-dragging"),a._blockFrames(),a._trigger("dragStart",i,t(r))},drag:function(e,i){a._trigger("drag",e,t(i))},stop:function(r,s){var n=s.offset.left-a.document.scrollLeft(),o=s.offset.top-a.document.scrollTop();i.position={my:"left top",at:"left"+(n>=0?"+":"")+n+" "+"top"+(o>=0?"+":"")+o,of:a.window},e(this).removeClass("ui-dialog-dragging"),a._unblockFrames(),a._trigger("dragStop",r,t(s))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var a=this,i=this.options,r=i.resizable,s=this.uiDialog.css("position"),n="string"==typeof r?r:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:this._minHeight(),handles:n,start:function(i,r){e(this).addClass("ui-dialog-resizing"),a._blockFrames(),a._trigger("resizeStart",i,t(r))},resize:function(e,i){a._trigger("resize",e,t(i))},stop:function(r,s){var n=a.uiDialog.offset(),o=n.left-a.document.scrollLeft(),d=n.top-a.document.scrollTop();i.height=a.uiDialog.height(),i.width=a.uiDialog.width(),i.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(d>=0?"+":"")+d,of:a.window},e(this).removeClass("ui-dialog-resizing"),a._unblockFrames(),a._trigger("resizeStop",r,t(s))}}).css("position",s)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._untrackInstance(),this._trackingInstances().unshift(this),this._focusedElement=e(t.target)}})},_untrackInstance:function(){var t=this._trackingInstances(),a=e.inArray(this,t);-1!==a&&t.splice(a,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var a=this,i=!1,r={};e.each(t,function(e,t){a._setOption(e,t),e in a.sizeRelatedOptions&&(i=!0),e in a.resizableRelatedOptions&&(r[e]=t)}),i&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",r)},_setOption:function(e,t){var a,i,r=this.uiDialog;"dialogClass"===e&&r.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(a=r.is(":data(ui-draggable)"),a&&!t&&r.draggable("destroy"),!a&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(i=r.is(":data(ui-resizable)"),i&&!t&&r.resizable("destroy"),i&&"string"==typeof t&&r.resizable("option","handles",t),i||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,a,i=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),i.minWidth>i.width&&(i.width=i.minWidth),e=this.uiDialog.css({height:"auto",width:i.width}).outerHeight(),t=Math.max(0,i.minHeight-e),a="number"==typeof i.maxHeight?Math.max(0,i.maxHeight-e):"none","auto"===i.height?this.element.css({minHeight:t,maxHeight:a,height:"auto"}):this.element.height(Math.max(0,i.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.off("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.progressbar",{version:"1.11.0-beta.2",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,a=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(a.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectmenu",{version:"1.11.0-beta.2",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this,a=this.element.attr("tabindex");this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:a||this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._setOption("width",this.options.width),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,a){e.preventDefault(),t._select(a.item.data("ui-selectmenu-item"),e)},focus:function(e,a){var i=a.item.data("ui-selectmenu-item");null!=t.focusIndex&&i.index!==t.focusIndex&&(t._trigger("focus",e,{item:i}),t.isOpen||t._select(i,e)),t.focusIndex=i.index,t.button.attr("aria-activedescendant",t.menuItems.eq(i.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this._setOption("width",this.options.width)},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,a){var i=this,r="";e.each(a,function(a,s){s.optgroup!==r&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(s.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:s.optgroup}).appendTo(t),r=s.optgroup),i._renderItemData(t,s)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,a){var i=e("<li>");return a.disabled&&i.addClass("ui-state-disabled"),this._setText(i,a.label),i.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html("&#160;")},_move:function(e,t){var a,i,r=".ui-menu-item";this.isOpen?a=this.menuItems.eq(this.focusIndex):(a=this.menuItems.eq(this.element[0].selectedIndex),r+=":not(.ui-state-disabled)"),i="first"===e||"last"===e?a["first"===e?"prevAll":"nextAll"](r).eq(-1):a[e+"All"](r).eq(0),i.length&&this.menuInstance.focus(t,i)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{click:"_toggle",keydown:function(t){var a=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),a=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),a=!1}a&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var a=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==a&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&(t||(t=this.element.outerWidth()),this.button.outerWidth(t))},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var a=[];t.each(function(t,i){var r=e(i),s=r.parent("optgroup");a.push({element:r,index:t,value:r.attr("value"),label:r.text(),optgroup:s.attr("label")||"",disabled:s.prop("disabled")||r.prop("disabled")})}),this.items=a},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.0-beta.2",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,a,i=this.options,r=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),s="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",n=[];for(a=i.values&&i.values.length||1,r.length>a&&(r.slice(a).remove(),r=r.slice(0,a)),t=r.length;a>t;t++)n.push(s);this.handles=r.add(e(n.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,a="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),a="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(a+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var a,i,r,s,n,o,d,u,h=this,l=this.options;return l.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(a),r=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var a=Math.abs(i-h.values(t));(r>a||r===a&&(t===h._lastChangedValue||h.values(t)===l.min))&&(r=a,s=e(this),n=t)}),o=this._start(t,n),o===!1?!1:(this._mouseSliding=!0,this._handleIndex=n,s.addClass("ui-state-active").focus(),d=s.offset(),u=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=u?{left:0,top:0}:{left:t.pageX-d.left-s.width()/2,top:t.pageY-d.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,n,i),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},a=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,a),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,a,i,r,s;return"horizontal"===this.orientation?(t=this.elementSize.width,a=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,a=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),i=a/t,i>1&&(i=1),0>i&&(i=0),"vertical"===this.orientation&&(i=1-i),r=this._valueMax()-this._valueMin(),s=this._valueMin()+i*r,this._trimAlignValue(s)},_start:function(e,t){var a={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(a.value=this.values(t),a.values=this.values()),this._trigger("start",e,a)},_slide:function(e,t,a){var i,r,s;this.options.values&&this.options.values.length?(i=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&a>i||1===t&&i>a)&&(a=i),a!==this.values(t)&&(r=this.values(),r[t]=a,s=this._trigger("slide",e,{handle:this.handles[t],value:a,values:r}),i=this.values(t?0:1),s!==!1&&this.values(t,a))):a!==this.value()&&(s=this._trigger("slide",e,{handle:this.handles[t],value:a}),s!==!1&&this.value(a))},_stop:function(e,t){var a={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(a.value=this.values(t),a.values=this.values()),this._trigger("stop",e,a)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var a={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(a.value=this.values(t),a.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,a)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,a){var i,r,s;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(a),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(i=this.options.values,r=arguments[0],s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(r[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,a){var i,r=0;switch("range"===t&&this.options.range===!0&&("min"===a?(this.options.value=this._values(0),this.options.values=null):"max"===a&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(r=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!a),this._super(t,a),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=0;r>i;i+=1)this._change(null,i);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,a,i;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(a=this.options.values.slice(),i=0;a.length>i;i+=1)a[i]=this._trimAlignValue(a[i]);return a}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,a=(e-this._valueMin())%t,i=e-a;return 2*Math.abs(a)>=t&&(i+=a>0?t:-t),parseFloat(i.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,a,i,r,s,n=this.options.range,o=this.options,d=this,u=this._animateOff?!1:o.animate,h={};this.options.values&&this.options.values.length?this.handles.each(function(i){a=100*((d.values(i)-d._valueMin())/(d._valueMax()-d._valueMin())),h["horizontal"===d.orientation?"left":"bottom"]=a+"%",e(this).stop(1,1)[u?"animate":"css"](h,o.animate),d.options.range===!0&&("horizontal"===d.orientation?(0===i&&d.range.stop(1,1)[u?"animate":"css"]({left:a+"%"},o.animate),1===i&&d.range[u?"animate":"css"]({width:a-t+"%"},{queue:!1,duration:o.animate})):(0===i&&d.range.stop(1,1)[u?"animate":"css"]({bottom:a+"%"},o.animate),1===i&&d.range[u?"animate":"css"]({height:a-t+"%"},{queue:!1,duration:o.animate}))),t=a}):(i=this.value(),r=this._valueMin(),s=this._valueMax(),a=s!==r?100*((i-r)/(s-r)):0,h["horizontal"===this.orientation?"left":"bottom"]=a+"%",this.handle.stop(1,1)[u?"animate":"css"](h,o.animate),"min"===n&&"horizontal"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({width:a+"%"},o.animate),"max"===n&&"horizontal"===this.orientation&&this.range[u?"animate":"css"]({width:100-a+"%"},{queue:!1,duration:o.animate}),"min"===n&&"vertical"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({height:a+"%"},o.animate),"max"===n&&"vertical"===this.orientation&&this.range[u?"animate":"css"]({height:100-a+"%"},{queue:!1,duration:o.animate}))},_handleEvents:{keydown:function(t){var a,i,r,s,n=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),a=this._start(t,n),a===!1))return}switch(s=this.options.step,i=r=this.options.values&&this.options.values.length?this.values(n):this.value(),t.keyCode){case e.ui.keyCode.HOME:r=this._valueMin();break;case e.ui.keyCode.END:r=this._valueMax();break;case e.ui.keyCode.PAGE_UP:r=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:r=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;r=this._trimAlignValue(i+s);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;r=this._trimAlignValue(i-s)}this._slide(t,n,r)},keyup:function(t){var a=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,a),this._change(t,a),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.spinner",{version:"1.11.0-beta.2",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},a=this.element;return e.each(["min","max","step"],function(e,i){var r=a.attr(i);void 0!==r&&r.length&&(t[i]=r)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function a(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=i,this._delay(function(){this.previous=i}))}var i;i=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),a.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,a.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var a=this.options,i=e.ui.keyCode;switch(t.keyCode){case i.UP:return this._repeat(null,1,t),!0;case i.DOWN:return this._repeat(null,-1,t),!0;case i.PAGE_UP:return this._repeat(null,a.page,t),!0;case i.PAGE_DOWN:return this._repeat(null,-a.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,a){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,a)},e),this._spin(t*this.options.step,a)},_spin:function(e,t){var a=this.value()||0;this.counter||(this.counter=1),a=this._adjustValue(a+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:a})===!1||(this._value(a),this.counter++)},_increment:function(t){var a=this.options.incremental;return a?e.isFunction(a)?a(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,a=t.indexOf(".");return-1===a?0:t.length-a-1},_adjustValue:function(e){var t,a,i=this.options;return t=null!==i.min?i.min:0,a=e-t,a=Math.round(a/i.step)*i.step,e=t+a,e=parseFloat(e.toFixed(this._precision())),null!==i.max&&e>i.max?i.max:null!==i.min&&i.min>e?i.min:e
-},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var a=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(a)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:o(function(e){this._super(e),this._value(this.element.val())}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var a;""!==e&&(a=this._parse(e),null!==a&&(t||(a=this._adjustValue(a)),e=this._format(a))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:o(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:o(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:o(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:o(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(o(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.0-beta.2",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var a,i;t=t.cloneNode(!1),a=t.href.replace(e,""),i=location.href.replace(e,"");try{a=decodeURIComponent(a)}catch(r){}try{i=decodeURIComponent(i)}catch(r){}return t.hash.length>1&&a===i}}(),_create:function(){var t=this,a=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",a.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),a.active=this._initialActive(),e.isArray(a.disabled)&&(a.disabled=e.unique(a.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(a.active):e(),this._refresh(),this.active.length&&this.load(a.active)},_initialActive:function(){var t=this.options.active,a=this.options.collapsible,i=location.hash.substring(1);return null===t&&(i&&this.tabs.each(function(a,r){return e(r).attr("aria-controls")===i?(t=a,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=a?!1:0)),!a&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var a=e(this.document[0].activeElement).closest("li"),i=this.tabs.index(a),r=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:i++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:r=!1,i--;break;case e.ui.keyCode.END:i=this.anchors.length-1;break;case e.ui.keyCode.HOME:i=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(i),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(i===this.options.active?!1:i),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,r),t.ctrlKey||(a.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",i)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,a){function i(){return t>r&&(t=0),0>t&&(t=r),t}for(var r=this.tabs.length-1;-1!==e.inArray(i(),this.options.disabled);)t=a?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,a=this.tablist.children(":has(a[href])");t.disabled=e.map(a.filter(".ui-state-disabled"),function(e){return a.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(a,i){var r,s,n,o=e(i).uniqueId().attr("id"),d=e(i).closest("li"),u=d.attr("aria-controls");t._isLocal(i)?(r=i.hash,n=r.substring(1),s=t.element.find(t._sanitizeSelector(r))):(n=d.attr("aria-controls")||e({}).uniqueId()[0].id,r="#"+n,s=t.element.find(r),s.length||(s=t._createPanel(n),s.insertAfter(t.panels[a-1]||t.tablist)),s.attr("aria-live","polite")),s.length&&(t.panels=t.panels.add(s)),u&&d.data("ui-tabs-aria-controls",u),d.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var a,i=0;a=this.tabs[i];i++)t===!0||-1!==e.inArray(i,t)?e(a).addClass("ui-state-disabled").attr("aria-disabled","true"):e(a).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var a={};t&&e.each(t.split(" "),function(e,t){a[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,a),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var a,i=this.element.parent();"fill"===t?(a=i.height(),a-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),i=t.css("position");"absolute"!==i&&"fixed"!==i&&(a-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){a-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,a-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(a=0,this.panels.each(function(){a=Math.max(a,e(this).height("").height())}).height(a))},_eventHandler:function(t){var a=this.options,i=this.active,r=e(t.currentTarget),s=r.closest("li"),n=s[0]===i[0],o=n&&a.collapsible,d=o?e():this._getPanelForTab(s),u=i.length?this._getPanelForTab(i):e(),h={oldTab:i,oldPanel:u,newTab:o?e():s,newPanel:d};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!a.collapsible||this._trigger("beforeActivate",t,h)===!1||(a.active=o?!1:this.tabs.index(s),this.active=n?e():s,this.xhr&&this.xhr.abort(),u.length||d.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),d.length&&this.load(this.tabs.index(s),t),this._toggle(t,h))},_toggle:function(t,a){function i(){s.running=!1,s._trigger("activate",t,a)}function r(){a.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),n.length&&s.options.show?s._show(n,s.options.show,i):(n.show(),i())}var s=this,n=a.newPanel,o=a.oldPanel;this.running=!0,o.length&&this.options.hide?this._hide(o,this.options.hide,function(){a.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r()}):(a.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),o.hide(),r()),o.attr("aria-hidden","true"),a.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),n.length&&o.length?a.oldTab.attr("tabIndex",-1):n.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),n.attr("aria-hidden","false"),a.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var a,i=this._findActive(t);i[0]!==this.active[0]&&(i.length||(i=this.active),a=i.find(".ui-tabs-anchor")[0],this._eventHandler({target:a,currentTarget:a,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),a=t.data("ui-tabs-aria-controls");a?t.attr("aria-controls",a).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var a=this.options.disabled;a!==!1&&(void 0===t?a=!1:(t=this._getIndex(t),a=e.isArray(a)?e.map(a,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,a){return a!==t?a:null})),this._setupDisabled(a))},disable:function(t){var a=this.options.disabled;if(a!==!0){if(void 0===t)a=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,a))return;a=e.isArray(a)?e.merge([t],a).sort():[t]}this._setupDisabled(a)}},load:function(t,a){t=this._getIndex(t);var i=this,r=this.tabs.eq(t),s=r.find(".ui-tabs-anchor"),n=this._getPanelForTab(r),o={tab:r,panel:n};this._isLocal(s[0])||(this.xhr=e.ajax(this._ajaxSettings(s,a,o)),this.xhr&&"canceled"!==this.xhr.statusText&&(r.addClass("ui-tabs-loading"),n.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){n.html(e),i._trigger("load",a,o)},1)}).complete(function(e,t){setTimeout(function(){"abort"===t&&i.panels.stop(!1,!0),r.removeClass("ui-tabs-loading"),n.removeAttr("aria-busy"),e===i.xhr&&delete i.xhr},1)})))},_ajaxSettings:function(t,a,i){var r=this;return{url:t.attr("href"),beforeSend:function(t,s){return r._trigger("beforeLoad",a,e.extend({jqXHR:t,ajaxSettings:s},i))}}},_getPanelForTab:function(t){var a=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+a))}}),e.widget("ui.tooltip",{version:"1.11.0-beta.2",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,a){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(a),t.data("ui-tooltip-id",a).attr("aria-describedby",e.trim(i.join(" ")))},_removeDescribedBy:function(t){var a=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),r=e.inArray(a,i);-1!==r&&i.splice(r,1),t.removeData("ui-tooltip-id"),i=e.trim(i.join(" ")),i?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,a){var i=this;return"disabled"===t?(this[a?"_disable":"_enable"](),this.options[t]=a,void 0):(this._super(t,a),"content"===t&&e.each(this.tooltips,function(e,t){i._updateContent(t)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(a,i){var r=e.Event("blur");r.target=r.currentTarget=i[0],t.close(r,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var a=this,i=e(t?t.target:this.element).closest(this.options.items);i.length&&!i.data("ui-tooltip-id")&&(i.attr("title")&&i.data("ui-tooltip-title",i.attr("title")),i.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&i.parents().each(function(){var t,i=e(this);i.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,a.close(t,!0)),i.attr("title")&&(i.uniqueId(),a.parents[this.id]={element:this,title:i.attr("title")},i.attr("title",""))}),this._updateContent(i,t))},_updateContent:function(e,t){var a,i=this.options.content,r=this,s=t?t.type:null;return"string"==typeof i?this._open(t,e,i):(a=i.call(e[0],function(a){e.data("ui-tooltip-open")&&r._delay(function(){t&&(t.type=s),this._open(t,e,a)})}),a&&this._open(t,e,a),void 0)},_open:function(t,a,i){function r(e){u.of=e,s.is(":hidden")||s.position(u)}var s,n,o,d,u=e.extend({},this.options.position);if(i){if(s=this._find(a),s.length)return s.find(".ui-tooltip-content").html(i),void 0;a.is("[title]")&&(t&&"mouseover"===t.type?a.attr("title",""):a.removeAttr("title")),s=this._tooltip(a),this._addDescribedBy(a,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),i.clone?(d=i.clone(),d.removeAttr("id").find("[id]").removeAttr("id")):d=i,e("<div>").html(d).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):s.position(e.extend({of:a},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){s.is(":visible")&&(r(u.of),clearInterval(o))},e.fx.interval)),this._trigger("open",t,{tooltip:s}),n={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var i=e.Event(t);i.currentTarget=a[0],this.close(i,!0)}}},a[0]!==this.element[0]&&(n.remove=function(){this._removeTooltip(s)}),t&&"mouseover"!==t.type||(n.mouseleave="close"),t&&"focusin"!==t.type||(n.focusout="close"),this._on(!0,a,n)}},close:function(t){var a=this,i=e(t?t.currentTarget:this.element),r=this._find(i);this.closing||(clearInterval(this.delayedShow),i.data("ui-tooltip-title")&&!i.attr("title")&&i.attr("title",i.data("ui-tooltip-title")),this._removeDescribedBy(i),r.stop(!0),this._hide(r,this.options.hide,function(){a._removeTooltip(e(this))}),i.removeData("ui-tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete a.parents[t]}),this.closing=!0,this._trigger("close",t,{tooltip:r}),this.closing=!1)},_tooltip:function(t){var a=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),i=a.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(a),a.appendTo(this.document[0].body),this.tooltips[i]=t,a},_find:function(t){var a=t.data("ui-tooltip-id");return a?e("#"+a):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(a,i){var r=e.Event("blur");r.target=r.currentTarget=i[0],t.close(r,!0),e("#"+a).remove(),i.data("ui-tooltip-title")&&(i.attr("title")||i.attr("title",i.data("ui-tooltip-title")),i.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}});var y="ui-effects-";e.effects={effect:{}},function(e,t){function a(e,t,a){var i=l[t.type]||{};return null==e?a||!t.def?null:t.def:(e=i.floor?~~e:parseFloat(e),isNaN(e)?t.def:i.mod?(e+i.mod)%i.mod:0>e?0:e>i.max?i.max:e)}function i(a){var i=u(),r=i._rgba=[];return a=a.toLowerCase(),p(d,function(e,s){var n,o=s.re.exec(a),d=o&&s.parse(o),u=s.space||"rgba";return d?(n=i[u](d),i[h[u].cache]=n[h[u].cache],r=i._rgba=n._rgba,!1):t}),r.length?("0,0,0,0"===r.join()&&e.extend(r,s.transparent),i):s[a]}function r(e,t,a){return a=(a+1)%1,1>6*a?e+6*(t-e)*a:1>2*a?t:2>3*a?e+6*(t-e)*(2/3-a):e}var s,n="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",o=/^([\-+])=\s*(\d+\.?\d*)/,d=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],u=e.Color=function(t,a,i,r){return new e.Color.fn.parse(t,a,i,r)},h={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},l={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},m=u.support={},c=e("<p>")[0],p=e.each;c.style.cssText="background-color:rgba(1,1,1,.5)",m.rgba=c.style.backgroundColor.indexOf("rgba")>-1,p(h,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),u.fn=e.extend(u.prototype,{parse:function(r,n,o,d){if(r===t)return this._rgba=[null,null,null,null],this;(r.jquery||r.nodeType)&&(r=e(r).css(n),n=t);var l=this,m=e.type(r),c=this._rgba=[];return n!==t&&(r=[r,n,o,d],m="array"),"string"===m?this.parse(i(r)||s._default):"array"===m?(p(h.rgba.props,function(e,t){c[t.idx]=a(r[t.idx],t)}),this):"object"===m?(r instanceof u?p(h,function(e,t){r[t.cache]&&(l[t.cache]=r[t.cache].slice())}):p(h,function(t,i){var s=i.cache;p(i.props,function(e,t){if(!l[s]&&i.to){if("alpha"===e||null==r[e])return;l[s]=i.to(l._rgba)}l[s][t.idx]=a(r[e],t,!0)}),l[s]&&0>e.inArray(null,l[s].slice(0,3))&&(l[s][3]=1,i.from&&(l._rgba=i.from(l[s])))}),this):t},is:function(e){var a=u(e),i=!0,r=this;return p(h,function(e,s){var n,o=a[s.cache];return o&&(n=r[s.cache]||s.to&&s.to(r._rgba)||[],p(s.props,function(e,a){return null!=o[a.idx]?i=o[a.idx]===n[a.idx]:t})),i}),i},_space:function(){var e=[],t=this;return p(h,function(a,i){t[i.cache]&&e.push(a)}),e.pop()},transition:function(e,t){var i=u(e),r=i._space(),s=h[r],n=0===this.alpha()?u("transparent"):this,o=n[s.cache]||s.to(n._rgba),d=o.slice();return i=i[s.cache],p(s.props,function(e,r){var s=r.idx,n=o[s],u=i[s],h=l[r.type]||{};null!==u&&(null===n?d[s]=u:(h.mod&&(u-n>h.mod/2?n+=h.mod:n-u>h.mod/2&&(n-=h.mod)),d[s]=a((u-n)*t+n,r)))}),this[r](d)},blend:function(t){if(1===this._rgba[3])return this;var a=this._rgba.slice(),i=a.pop(),r=u(t)._rgba;return u(e.map(a,function(e,t){return(1-i)*r[t]+i*e}))},toRgbaString:function(){var t="rgba(",a=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===a[3]&&(a.pop(),t="rgb("),t+a.join()+")"},toHslaString:function(){var t="hsla(",a=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===a[3]&&(a.pop(),t="hsl("),t+a.join()+")"},toHexString:function(t){var a=this._rgba.slice(),i=a.pop();return t&&a.push(~~(255*i)),"#"+e.map(a,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),u.fn.parse.prototype=u.fn,h.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,a,i=e[0]/255,r=e[1]/255,s=e[2]/255,n=e[3],o=Math.max(i,r,s),d=Math.min(i,r,s),u=o-d,h=o+d,l=.5*h;return t=d===o?0:i===o?60*(r-s)/u+360:r===o?60*(s-i)/u+120:60*(i-r)/u+240,a=0===u?0:.5>=l?u/h:u/(2-h),[Math.round(t)%360,a,l,null==n?1:n]},h.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,a=e[1],i=e[2],s=e[3],n=.5>=i?i*(1+a):i+a-i*a,o=2*i-n;return[Math.round(255*r(o,n,t+1/3)),Math.round(255*r(o,n,t)),Math.round(255*r(o,n,t-1/3)),s]},p(h,function(i,r){var s=r.props,n=r.cache,d=r.to,h=r.from;u.fn[i]=function(i){if(d&&!this[n]&&(this[n]=d(this._rgba)),i===t)return this[n].slice();var r,o=e.type(i),l="array"===o||"object"===o?i:arguments,m=this[n].slice();return p(s,function(e,t){var i=l["object"===o?e:t.idx];null==i&&(i=m[t.idx]),m[t.idx]=a(i,t)}),h?(r=u(h(m)),r[n]=m,r):u(m)},p(s,function(t,a){u.fn[t]||(u.fn[t]=function(r){var s,n=e.type(r),d="alpha"===t?this._hsla?"hsla":"rgba":i,u=this[d](),h=u[a.idx];return"undefined"===n?h:("function"===n&&(r=r.call(this,h),n=e.type(r)),null==r&&a.empty?this:("string"===n&&(s=o.exec(r),s&&(r=h+parseFloat(s[2])*("+"===s[1]?1:-1))),u[a.idx]=r,this[d](u)))})})}),u.hook=function(t){var a=t.split(" ");p(a,function(t,a){e.cssHooks[a]={set:function(t,r){var s,n,o="";if("transparent"!==r&&("string"!==e.type(r)||(s=i(r)))){if(r=u(s||r),!m.rgba&&1!==r._rgba[3]){for(n="backgroundColor"===a?t.parentNode:t;(""===o||"transparent"===o)&&n&&n.style;)try{o=e.css(n,"backgroundColor"),n=n.parentNode}catch(d){}r=r.blend(o&&"transparent"!==o?o:"_default")}r=r.toRgbaString()}try{t.style[a]=r}catch(d){}}},e.fx.step[a]=function(t){t.colorInit||(t.start=u(t.elem,a),t.end=u(t.end),t.colorInit=!0),e.cssHooks[a].set(t.elem,t.start.transition(t.end,t.pos))}})},u.hook(n),e.cssHooks.borderColor={expand:function(e){var t={};return p(["Top","Right","Bottom","Left"],function(a,i){t["border"+i+"Color"]=e}),t}},s=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function t(t){var a,i,r=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,s={};if(r&&r.length&&r[0]&&r[r[0]])for(i=r.length;i--;)a=r[i],"string"==typeof r[a]&&(s[e.camelCase(a)]=r[a]);else for(a in r)"string"==typeof r[a]&&(s[a]=r[a]);return s}function a(t,a){var i,s,n={};for(i in a)s=a[i],t[i]!==s&&(r[i]||(e.fx.step[i]||!isNaN(parseFloat(s)))&&(n[i]=s));return n}var i=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,a){e.fx.step[a]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(jQuery.style(e.elem,a,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(r,s,n,o){var d=e.speed(s,n,o);return this.queue(function(){var s,n=e(this),o=n.attr("class")||"",u=d.children?n.find("*").addBack():n;u=u.map(function(){var a=e(this);return{el:a,start:t(this)}}),s=function(){e.each(i,function(e,t){r[t]&&n[t+"Class"](r[t])})},s(),u=u.map(function(){return this.end=t(this.el[0]),this.diff=a(this.start,this.end),this}),n.attr("class",o),u=u.map(function(){var t=this,a=e.Deferred(),i=e.extend({},d,{queue:!1,complete:function(){a.resolve(t)}});return this.el.animate(this.diff,i),a.promise()}),e.when.apply(e,u.get()).done(function(){s(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),d.complete.call(n[0])})})},e.fn.extend({addClass:function(t){return function(a,i,r,s){return i?e.effects.animateClass.call(this,{add:a},i,r,s):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(a,i,r,s){return arguments.length>1?e.effects.animateClass.call(this,{remove:a},i,r,s):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(a,i,r,s,n){return"boolean"==typeof i||void 0===i?r?e.effects.animateClass.call(this,i?{add:a}:{remove:a},r,s,n):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:a},i,r,s)}}(e.fn.toggleClass),switchClass:function(t,a,i,r,s){return e.effects.animateClass.call(this,{add:a,remove:t},i,r,s)}})}(),function(){function t(t,a,i,r){return e.isPlainObject(t)&&(a=t,t=t.effect),t={effect:t},null==a&&(a={}),e.isFunction(a)&&(r=a,i=null,a={}),("number"==typeof a||e.fx.speeds[a])&&(r=i,i=a,a={}),e.isFunction(i)&&(r=i,i=null),a&&e.extend(t,a),i=i||a.duration,t.duration=e.fx.off?0:"number"==typeof i?i:i in e.fx.speeds?e.fx.speeds[i]:e.fx.speeds._default,t.complete=r||a.complete,t}function a(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.0-beta.2",save:function(e,t){for(var a=0;t.length>a;a++)null!==t[a]&&e.data(y+t[a],e[0].style[t[a]])},restore:function(e,t){var a,i;for(i=0;t.length>i;i++)null!==t[i]&&(a=e.data(y+t[i]),void 0===a&&(a=""),e.css(t[i],a))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var a,i;switch(e[0]){case"top":a=0;break;case"middle":a=.5;break;case"bottom":a=1;break;default:a=e[0]/t.height}switch(e[1]){case"left":i=0;break;case"center":i=.5;break;case"right":i=1;break;default:i=e[1]/t.width}return{x:i,y:a}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var a={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},i=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),r={width:t.width(),height:t.height()},s=document.activeElement;try{s.id}catch(n){s=document.body}return t.wrap(i),(t[0]===s||e.contains(t[0],s))&&e(s).focus(),i=t.parent(),"static"===t.css("position")?(i.css({position:"relative"}),t.css({position:"relative"})):(e.extend(a,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,i){a[i]=t.css(i),isNaN(parseInt(a[i],10))&&(a[i]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(r),i.css(a).show()},removeWrapper:function(t){var a=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===a||e.contains(t[0],a))&&e(a).focus()),t},setTransition:function(t,a,i,r){return r=r||{},e.each(a,function(e,a){var s=t.cssUnit(a);s[0]>0&&(r[a]=s[0]*i+s[1])}),r}}),e.fn.extend({effect:function(){function a(t){function a(){e.isFunction(s)&&s.call(r[0]),e.isFunction(t)&&t()}var r=e(this),s=i.complete,o=i.mode;(r.is(":hidden")?"hide"===o:"show"===o)?(r[o](),a()):n.call(r[0],i,a)}var i=t.apply(this,arguments),r=i.mode,s=i.queue,n=e.effects.effect[i.effect];return e.fx.off||!n?r?this[r](i.duration,i.complete):this.each(function(){i.complete&&i.complete.call(this)}):s===!1?this.each(a):this.queue(s||"fx",a)},show:function(e){return function(i){if(a(i))return e.apply(this,arguments);var r=t.apply(this,arguments);return r.mode="show",this.effect.call(this,r)}}(e.fn.show),hide:function(e){return function(i){if(a(i))return e.apply(this,arguments);var r=t.apply(this,arguments);return r.mode="hide",this.effect.call(this,r)}}(e.fn.hide),toggle:function(e){return function(i){if(a(i)||"boolean"==typeof i)return e.apply(this,arguments);var r=t.apply(this,arguments);return r.mode="toggle",this.effect.call(this,r)}}(e.fn.toggle),cssUnit:function(t){var a=this.css(t),i=[];return e.each(["em","px","%","pt"],function(e,t){a.indexOf(t)>0&&(i=[parseFloat(a),t])}),i}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,a){t[a]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,a=4;((t=Math.pow(2,--a))-1)/11>e;);return 1/Math.pow(4,3-a)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,a){e.easing["easeIn"+t]=a,e.easing["easeOut"+t]=function(e){return 1-a(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?a(2*e)/2:1-a(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,a){var i,r,s,n=e(this),o=/up|down|vertical/,d=/up|left|vertical|horizontal/,u=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(n,t.mode||"hide"),l=t.direction||"up",m=o.test(l),c=m?"height":"width",p=m?"top":"left",f=d.test(l),g={},y="show"===h;
-n.parent().is(".ui-effects-wrapper")?e.effects.save(n.parent(),u):e.effects.save(n,u),n.show(),i=e.effects.createWrapper(n).css({overflow:"hidden"}),r=i[c](),s=parseFloat(i.css(p))||0,g[c]=y?r:0,f||(n.css(m?"bottom":"right",0).css(m?"top":"left","auto").css({position:"absolute"}),g[p]=y?s:r+s),y&&(i.css(c,0),f||i.css(p,s+r)),i.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===h&&n.hide(),e.effects.restore(n,u),e.effects.removeWrapper(n),a()}})},e.effects.effect.bounce=function(t,a){var i,r,s,n=e(this),o=["position","top","bottom","left","right","height","width"],d=e.effects.setMode(n,t.mode||"effect"),u="hide"===d,h="show"===d,l=t.direction||"up",m=t.distance,c=t.times||5,p=2*c+(h||u?1:0),f=t.duration/p,g=t.easing,y="up"===l||"down"===l?"top":"left",x="up"===l||"left"===l,v=n.queue(),T=v.length;for((h||u)&&o.push("opacity"),e.effects.save(n,o),n.show(),e.effects.createWrapper(n),m||(m=n["top"===y?"outerHeight":"outerWidth"]()/3),h&&(s={opacity:1},s[y]=0,n.css("opacity",0).css(y,x?2*-m:2*m).animate(s,f,g)),u&&(m/=Math.pow(2,c-1)),s={},s[y]=0,i=0;c>i;i++)r={},r[y]=(x?"-=":"+=")+m,n.animate(r,f,g).animate(s,f,g),m=u?2*m:m/2;u&&(r={opacity:0},r[y]=(x?"-=":"+=")+m,n.animate(r,f,g)),n.queue(function(){u&&n.hide(),e.effects.restore(n,o),e.effects.removeWrapper(n),a()}),T>1&&v.splice.apply(v,[1,0].concat(v.splice(T,p+1))),n.dequeue()},e.effects.effect.clip=function(t,a){var i,r,s,n=e(this),o=["position","top","bottom","left","right","height","width"],d=e.effects.setMode(n,t.mode||"hide"),u="show"===d,h=t.direction||"vertical",l="vertical"===h,m=l?"height":"width",c=l?"top":"left",p={};e.effects.save(n,o),n.show(),i=e.effects.createWrapper(n).css({overflow:"hidden"}),r="IMG"===n[0].tagName?i:n,s=r[m](),u&&(r.css(m,0),r.css(c,s/2)),p[m]=u?s:0,p[c]=u?0:s/2,r.animate(p,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){u||n.hide(),e.effects.restore(n,o),e.effects.removeWrapper(n),a()}})},e.effects.effect.drop=function(t,a){var i,r=e(this),s=["position","top","bottom","left","right","opacity","height","width"],n=e.effects.setMode(r,t.mode||"hide"),o="show"===n,d=t.direction||"left",u="up"===d||"down"===d?"top":"left",h="up"===d||"left"===d?"pos":"neg",l={opacity:o?1:0};e.effects.save(r,s),r.show(),e.effects.createWrapper(r),i=t.distance||r["top"===u?"outerHeight":"outerWidth"](!0)/2,o&&r.css("opacity",0).css(u,"pos"===h?-i:i),l[u]=(o?"pos"===h?"+=":"-=":"pos"===h?"-=":"+=")+i,r.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===n&&r.hide(),e.effects.restore(r,s),e.effects.removeWrapper(r),a()}})},e.effects.effect.explode=function(t,a){function i(){v.push(this),v.length===l*m&&r()}function r(){c.css({visibility:"visible"}),e(v).remove(),f||c.hide(),a()}var s,n,o,d,u,h,l=t.pieces?Math.round(Math.sqrt(t.pieces)):3,m=l,c=e(this),p=e.effects.setMode(c,t.mode||"hide"),f="show"===p,g=c.show().css("visibility","hidden").offset(),y=Math.ceil(c.outerWidth()/m),x=Math.ceil(c.outerHeight()/l),v=[];for(s=0;l>s;s++)for(d=g.top+s*x,h=s-(l-1)/2,n=0;m>n;n++)o=g.left+n*y,u=n-(m-1)/2,c.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-n*y,top:-s*x}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:y,height:x,left:o+(f?u*y:0),top:d+(f?h*x:0),opacity:f?0:1}).animate({left:o+(f?0:u*y),top:d+(f?0:h*x),opacity:f?1:0},t.duration||500,t.easing,i)},e.effects.effect.fade=function(t,a){var i=e(this),r=e.effects.setMode(i,t.mode||"toggle");i.animate({opacity:r},{queue:!1,duration:t.duration,easing:t.easing,complete:a})},e.effects.effect.fold=function(t,a){var i,r,s=e(this),n=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(s,t.mode||"hide"),d="show"===o,u="hide"===o,h=t.size||15,l=/([0-9]+)%/.exec(h),m=!!t.horizFirst,c=d!==m,p=c?["width","height"]:["height","width"],f=t.duration/2,g={},y={};e.effects.save(s,n),s.show(),i=e.effects.createWrapper(s).css({overflow:"hidden"}),r=c?[i.width(),i.height()]:[i.height(),i.width()],l&&(h=parseInt(l[1],10)/100*r[u?0:1]),d&&i.css(m?{height:0,width:h}:{height:h,width:0}),g[p[0]]=d?r[0]:h,y[p[1]]=d?r[1]:0,i.animate(g,f,t.easing).animate(y,f,t.easing,function(){u&&s.hide(),e.effects.restore(s,n),e.effects.removeWrapper(s),a()})},e.effects.effect.highlight=function(t,a){var i=e(this),r=["backgroundImage","backgroundColor","opacity"],s=e.effects.setMode(i,t.mode||"show"),n={backgroundColor:i.css("backgroundColor")};"hide"===s&&(n.opacity=0),e.effects.save(i,r),i.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(n,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===s&&i.hide(),e.effects.restore(i,r),a()}})},e.effects.effect.size=function(t,a){var i,r,s,n=e(this),o=["position","top","bottom","left","right","width","height","overflow","opacity"],d=["position","top","bottom","left","right","overflow","opacity"],u=["width","height","overflow"],h=["fontSize"],l=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],m=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.effects.setMode(n,t.mode||"effect"),p=t.restore||"effect"!==c,f=t.scale||"both",g=t.origin||["middle","center"],y=n.css("position"),x=p?o:d,v={height:0,width:0,outerHeight:0,outerWidth:0};"show"===c&&n.show(),i={height:n.height(),width:n.width(),outerHeight:n.outerHeight(),outerWidth:n.outerWidth()},"toggle"===t.mode&&"show"===c?(n.from=t.to||v,n.to=t.from||i):(n.from=t.from||("show"===c?v:i),n.to=t.to||("hide"===c?v:i)),s={from:{y:n.from.height/i.height,x:n.from.width/i.width},to:{y:n.to.height/i.height,x:n.to.width/i.width}},("box"===f||"both"===f)&&(s.from.y!==s.to.y&&(x=x.concat(l),n.from=e.effects.setTransition(n,l,s.from.y,n.from),n.to=e.effects.setTransition(n,l,s.to.y,n.to)),s.from.x!==s.to.x&&(x=x.concat(m),n.from=e.effects.setTransition(n,m,s.from.x,n.from),n.to=e.effects.setTransition(n,m,s.to.x,n.to))),("content"===f||"both"===f)&&s.from.y!==s.to.y&&(x=x.concat(h).concat(u),n.from=e.effects.setTransition(n,h,s.from.y,n.from),n.to=e.effects.setTransition(n,h,s.to.y,n.to)),e.effects.save(n,x),n.show(),e.effects.createWrapper(n),n.css("overflow","hidden").css(n.from),g&&(r=e.effects.getBaseline(g,i),n.from.top=(i.outerHeight-n.outerHeight())*r.y,n.from.left=(i.outerWidth-n.outerWidth())*r.x,n.to.top=(i.outerHeight-n.to.outerHeight)*r.y,n.to.left=(i.outerWidth-n.to.outerWidth)*r.x),n.css(n.from),("content"===f||"both"===f)&&(l=l.concat(["marginTop","marginBottom"]).concat(h),m=m.concat(["marginLeft","marginRight"]),u=o.concat(l).concat(m),n.find("*[width]").each(function(){var a=e(this),i={height:a.height(),width:a.width(),outerHeight:a.outerHeight(),outerWidth:a.outerWidth()};p&&e.effects.save(a,u),a.from={height:i.height*s.from.y,width:i.width*s.from.x,outerHeight:i.outerHeight*s.from.y,outerWidth:i.outerWidth*s.from.x},a.to={height:i.height*s.to.y,width:i.width*s.to.x,outerHeight:i.height*s.to.y,outerWidth:i.width*s.to.x},s.from.y!==s.to.y&&(a.from=e.effects.setTransition(a,l,s.from.y,a.from),a.to=e.effects.setTransition(a,l,s.to.y,a.to)),s.from.x!==s.to.x&&(a.from=e.effects.setTransition(a,m,s.from.x,a.from),a.to=e.effects.setTransition(a,m,s.to.x,a.to)),a.css(a.from),a.animate(a.to,t.duration,t.easing,function(){p&&e.effects.restore(a,u)})})),n.animate(n.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===n.to.opacity&&n.css("opacity",n.from.opacity),"hide"===c&&n.hide(),e.effects.restore(n,x),p||("static"===y?n.css({position:"relative",top:n.to.top,left:n.to.left}):e.each(["top","left"],function(e,t){n.css(t,function(t,a){var i=parseInt(a,10),r=e?n.to.left:n.to.top;return"auto"===a?r+"px":i+r+"px"})})),e.effects.removeWrapper(n),a()}})},e.effects.effect.scale=function(t,a){var i=e(this),r=e.extend(!0,{},t),s=e.effects.setMode(i,t.mode||"effect"),n=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===s?0:100),o=t.direction||"both",d=t.origin,u={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()},h={y:"horizontal"!==o?n/100:1,x:"vertical"!==o?n/100:1};r.effect="size",r.queue=!1,r.complete=a,"effect"!==s&&(r.origin=d||["middle","center"],r.restore=!0),r.from=t.from||("show"===s?{height:0,width:0,outerHeight:0,outerWidth:0}:u),r.to={height:u.height*h.y,width:u.width*h.x,outerHeight:u.outerHeight*h.y,outerWidth:u.outerWidth*h.x},r.fade&&("show"===s&&(r.from.opacity=0,r.to.opacity=1),"hide"===s&&(r.from.opacity=1,r.to.opacity=0)),i.effect(r)},e.effects.effect.puff=function(t,a){var i=e(this),r=e.effects.setMode(i,t.mode||"hide"),s="hide"===r,n=parseInt(t.percent,10)||150,o=n/100,d={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:r,complete:a,percent:s?n:100,from:s?d:{height:d.height*o,width:d.width*o,outerHeight:d.outerHeight*o,outerWidth:d.outerWidth*o}}),i.effect(t)},e.effects.effect.pulsate=function(t,a){var i,r=e(this),s=e.effects.setMode(r,t.mode||"show"),n="show"===s,o="hide"===s,d=n||"hide"===s,u=2*(t.times||5)+(d?1:0),h=t.duration/u,l=0,m=r.queue(),c=m.length;for((n||!r.is(":visible"))&&(r.css("opacity",0).show(),l=1),i=1;u>i;i++)r.animate({opacity:l},h,t.easing),l=1-l;r.animate({opacity:l},h,t.easing),r.queue(function(){o&&r.hide(),a()}),c>1&&m.splice.apply(m,[1,0].concat(m.splice(c,u+1))),r.dequeue()},e.effects.effect.shake=function(t,a){var i,r=e(this),s=["position","top","bottom","left","right","height","width"],n=e.effects.setMode(r,t.mode||"effect"),o=t.direction||"left",d=t.distance||20,u=t.times||3,h=2*u+1,l=Math.round(t.duration/h),m="up"===o||"down"===o?"top":"left",c="up"===o||"left"===o,p={},f={},g={},y=r.queue(),x=y.length;for(e.effects.save(r,s),r.show(),e.effects.createWrapper(r),p[m]=(c?"-=":"+=")+d,f[m]=(c?"+=":"-=")+2*d,g[m]=(c?"-=":"+=")+2*d,r.animate(p,l,t.easing),i=1;u>i;i++)r.animate(f,l,t.easing).animate(g,l,t.easing);r.animate(f,l,t.easing).animate(p,l/2,t.easing).queue(function(){"hide"===n&&r.hide(),e.effects.restore(r,s),e.effects.removeWrapper(r),a()}),x>1&&y.splice.apply(y,[1,0].concat(y.splice(x,h+1))),r.dequeue()},e.effects.effect.slide=function(t,a){var i,r=e(this),s=["position","top","bottom","left","right","width","height"],n=e.effects.setMode(r,t.mode||"show"),o="show"===n,d=t.direction||"left",u="up"===d||"down"===d?"top":"left",h="up"===d||"left"===d,l={};e.effects.save(r,s),r.show(),i=t.distance||r["top"===u?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(r).css({overflow:"hidden"}),o&&r.css(u,h?isNaN(i)?"-"+i:-i:i),l[u]=(o?h?"+=":"-=":h?"-=":"+=")+i,r.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===n&&r.hide(),e.effects.restore(r,s),e.effects.removeWrapper(r),a()}})},e.effects.effect.transfer=function(t,a){var i=e(this),r=e(t.to),s="fixed"===r.css("position"),n=e("body"),o=s?n.scrollTop():0,d=s?n.scrollLeft():0,u=r.offset(),h={top:u.top-o,left:u.left-d,height:r.innerHeight(),width:r.innerWidth()},l=i.offset(),m=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:l.top-o,left:l.left-d,height:i.innerHeight(),width:i.innerWidth(),position:s?"fixed":"absolute"}).animate(h,t.duration,t.easing,function(){m.remove(),a()})}});
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery.ba-bbq.min.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery.ba-bbq.min.js
deleted file mode 100644 (file)
index bcbf248..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
- * http://benalman.com/projects/jquery-bbq-plugin/
- * 
- * Copyright (c) 2010 "Cowboy" Ben Alman
- * Dual licensed under the MIT and GPL licenses.
- * http://benalman.com/about/license/
- */
-(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this);
-/*
- * jQuery hashchange event - v1.2 - 2/11/2010
- * http://benalman.com/projects/jquery-hashchange-plugin/
- * 
- * Copyright (c) 2010 "Cowboy" Ben Alman
- * Dual licensed under the MIT and GPL licenses.
- * http://benalman.com/about/license/
- */
-(function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery.slideto.min.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery.slideto.min.js
deleted file mode 100644 (file)
index ba32cff..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(function(b){b.fn.slideto=function(a){a=b.extend({slide_duration:"slow",highlight_duration:3E3,highlight:true,highlight_color:"#FFFF99"},a);return this.each(function(){obj=b(this);b("body").animate({scrollTop:obj.offset().top},a.slide_duration,function(){a.highlight&&b.ui.version&&obj.effect("highlight",{color:a.highlight_color},a.highlight_duration)})})}})(jQuery);
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery.wiggle.min.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/jquery.wiggle.min.js
deleted file mode 100644 (file)
index 2adb0d6..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
-jQuery Wiggle
-Author: WonderGroup, Jordan Thomas
-URL: http://labs.wondergroup.com/demos/mini-ui/index.html
-License: MIT (http://en.wikipedia.org/wiki/MIT_License)
-*/
-jQuery.fn.wiggle=function(o){var d={speed:50,wiggles:3,travel:5,callback:null};var o=jQuery.extend(d,o);return this.each(function(){var cache=this;var wrap=jQuery(this).wrap('<div class="wiggle-wrap"></div>').css("position","relative");var calls=0;for(i=1;i<=o.wiggles;i++){jQuery(this).animate({left:"-="+o.travel},o.speed).animate({left:"+="+o.travel*2},o.speed*2).animate({left:"-="+o.travel},o.speed,function(){calls++;if(jQuery(cache).parent().hasClass('wiggle-wrap')){jQuery(cache).parent().replaceWith(cache);}
-if(calls==o.wiggles&&jQuery.isFunction(o.callback)){o.callback();}});}});};
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/odl/list_mounts.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/odl/list_mounts.js
deleted file mode 100644 (file)
index bfd561a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-//constructs a table of mount points via a json response
-//Loads the table into the given dom.
-var loadMountList = function( dom ) {
-    dom.empty();
-    dom.append( "<p>Loading. Please wait...</p>" );
-    $.ajax( {
-        url: "/apidoc/apis/mounts",
-        datatype: 'jsonp',
-        success: function( strData ){
-            var myData = strData;
-            var list = $( "<table></table>" );
-            for( var key in myData )
-            {
-                list.append( "<tr><td><a href=\"#\" onclick=\"loadMount(" + 
-                                        myData[key].id + ", '" + myData[key].instance + "')\">" +
-                                        myData[key].instance + "</a></td></tr>");
-            }
-            dom.empty();
-            dom.append( list );
-        }
-    } );
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/odl/swagger.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/odl/swagger.js
deleted file mode 100644 (file)
index 58584e5..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-
-//There can only be a single swagger UI in a dom tree
-//at a time - this is a limitation of the swagger API
-//This method takes a URL which is the root of the swagger
-//documentation, as well as the ID of the dom where we should
-//load the swagger UI.
-//See the swagger documentation for more information.
-var loadSwagger = function(url, dom_id) {
-    $("#" + dom_id).empty();
-    $("#" + dom_id).append("Loading " + url);
-    window.swaggerUi = new SwaggerUi({
-        url : url,
-        dom_id : dom_id,
-        supportedSubmitMethods : [ 'get', 'post', 'put', 'delete' ],
-        onComplete : function(swaggerApi, swaggerUi) {
-            if (console) {
-                console.log("Loaded SwaggerUI")
-            }
-            $('pre code').each(function(i, e) {
-                hljs.highlightBlock(e)
-            });
-        },
-        onFailure : function(data) {
-            if (console) {
-                console.log("Unable to Load SwaggerUI");
-                console.log(data);
-            }
-        },
-        docExpansion : "none"
-    });
-
-    $('#input_apiKey').change(
-            function() {
-                var key = $('#input_apiKey')[0].value;
-                console.log("key: " + key);
-                if (key && key.trim() != "") {
-                    console.log("added key " + key);
-                    window.authorizations
-                            .add("key", new ApiKeyAuthorization("api_key",
-                                    key, "query"));
-                }
-            });
-    window.swaggerUi.load();
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/shred.bundle.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/shred.bundle.js
deleted file mode 100644 (file)
index 74d0816..0000000
+++ /dev/null
@@ -1,2765 +0,0 @@
-var require = function (file, cwd) {
-    var resolved = require.resolve(file, cwd || '/');
-    var mod = require.modules[resolved];
-    if (!mod) throw new Error(
-        'Failed to resolve module ' + file + ', tried ' + resolved
-    );
-    var res = mod._cached ? mod._cached : mod();
-    return res;
-}
-
-require.paths = [];
-require.modules = {};
-require.extensions = [".js",".coffee"];
-
-require._core = {
-    'assert': true,
-    'events': true,
-    'fs': true,
-    'path': true,
-    'vm': true
-};
-
-require.resolve = (function () {
-    return function (x, cwd) {
-        if (!cwd) cwd = '/';
-        
-        if (require._core[x]) return x;
-        var path = require.modules.path();
-        var y = cwd || '.';
-        
-        if (x.match(/^(?:\.\.?\/|\/)/)) {
-            var m = loadAsFileSync(path.resolve(y, x))
-                || loadAsDirectorySync(path.resolve(y, x));
-            if (m) return m;
-        }
-        
-        var n = loadNodeModulesSync(x, y);
-        if (n) return n;
-        
-        throw new Error("Cannot find module '" + x + "'");
-        
-        function loadAsFileSync (x) {
-            if (require.modules[x]) {
-                return x;
-            }
-            
-            for (var i = 0; i < require.extensions.length; i++) {
-                var ext = require.extensions[i];
-                if (require.modules[x + ext]) return x + ext;
-            }
-        }
-        
-        function loadAsDirectorySync (x) {
-            x = x.replace(/\/+$/, '');
-            var pkgfile = x + '/package.json';
-            if (require.modules[pkgfile]) {
-                var pkg = require.modules[pkgfile]();
-                var b = pkg.browserify;
-                if (typeof b === 'object' && b.main) {
-                    var m = loadAsFileSync(path.resolve(x, b.main));
-                    if (m) return m;
-                }
-                else if (typeof b === 'string') {
-                    var m = loadAsFileSync(path.resolve(x, b));
-                    if (m) return m;
-                }
-                else if (pkg.main) {
-                    var m = loadAsFileSync(path.resolve(x, pkg.main));
-                    if (m) return m;
-                }
-            }
-            
-            return loadAsFileSync(x + '/index');
-        }
-        
-        function loadNodeModulesSync (x, start) {
-            var dirs = nodeModulesPathsSync(start);
-            for (var i = 0; i < dirs.length; i++) {
-                var dir = dirs[i];
-                var m = loadAsFileSync(dir + '/' + x);
-                if (m) return m;
-                var n = loadAsDirectorySync(dir + '/' + x);
-                if (n) return n;
-            }
-            
-            var m = loadAsFileSync(x);
-            if (m) return m;
-        }
-        
-        function nodeModulesPathsSync (start) {
-            var parts;
-            if (start === '/') parts = [ '' ];
-            else parts = path.normalize(start).split('/');
-            
-            var dirs = [];
-            for (var i = parts.length - 1; i >= 0; i--) {
-                if (parts[i] === 'node_modules') continue;
-                var dir = parts.slice(0, i + 1).join('/') + '/node_modules';
-                dirs.push(dir);
-            }
-            
-            return dirs;
-        }
-    };
-})();
-
-require.alias = function (from, to) {
-    var path = require.modules.path();
-    var res = null;
-    try {
-        res = require.resolve(from + '/package.json', '/');
-    }
-    catch (err) {
-        res = require.resolve(from, '/');
-    }
-    var basedir = path.dirname(res);
-    
-    var keys = (Object.keys || function (obj) {
-        var res = [];
-        for (var key in obj) res.push(key)
-        return res;
-    })(require.modules);
-    
-    for (var i = 0; i < keys.length; i++) {
-        var key = keys[i];
-        if (key.slice(0, basedir.length + 1) === basedir + '/') {
-            var f = key.slice(basedir.length);
-            require.modules[to + f] = require.modules[basedir + f];
-        }
-        else if (key === basedir) {
-            require.modules[to] = require.modules[basedir];
-        }
-    }
-};
-
-require.define = function (filename, fn) {
-    var dirname = require._core[filename]
-        ? ''
-        : require.modules.path().dirname(filename)
-    ;
-    
-    var require_ = function (file) {
-        return require(file, dirname)
-    };
-    require_.resolve = function (name) {
-        return require.resolve(name, dirname);
-    };
-    require_.modules = require.modules;
-    require_.define = require.define;
-    var module_ = { exports : {} };
-    
-    require.modules[filename] = function () {
-        require.modules[filename]._cached = module_.exports;
-        fn.call(
-            module_.exports,
-            require_,
-            module_,
-            module_.exports,
-            dirname,
-            filename
-        );
-        require.modules[filename]._cached = module_.exports;
-        return module_.exports;
-    };
-};
-
-if (typeof process === 'undefined') process = {};
-
-if (!process.nextTick) process.nextTick = (function () {
-    var queue = [];
-    var canPost = typeof window !== 'undefined'
-        && window.postMessage && window.addEventListener
-    ;
-    
-    if (canPost) {
-        window.addEventListener('message', function (ev) {
-            if (ev.source === window && ev.data === 'browserify-tick') {
-                ev.stopPropagation();
-                if (queue.length > 0) {
-                    var fn = queue.shift();
-                    fn();
-                }
-            }
-        }, true);
-    }
-    
-    return function (fn) {
-        if (canPost) {
-            queue.push(fn);
-            window.postMessage('browserify-tick', '*');
-        }
-        else setTimeout(fn, 0);
-    };
-})();
-
-if (!process.title) process.title = 'browser';
-
-if (!process.binding) process.binding = function (name) {
-    if (name === 'evals') return require('vm')
-    else throw new Error('No such module')
-};
-
-if (!process.cwd) process.cwd = function () { return '.' };
-
-require.define("path", function (require, module, exports, __dirname, __filename) {
-    function filter (xs, fn) {
-    var res = [];
-    for (var i = 0; i < xs.length; i++) {
-        if (fn(xs[i], i, xs)) res.push(xs[i]);
-    }
-    return res;
-}
-
-// resolves . and .. elements in a path array with directory names there
-// must be no slashes, empty elements, or device names (c:\) in the array
-// (so also no leading and trailing slashes - it does not distinguish
-// relative and absolute paths)
-function normalizeArray(parts, allowAboveRoot) {
-  // if the path tries to go above the root, `up` ends up > 0
-  var up = 0;
-  for (var i = parts.length; i >= 0; i--) {
-    var last = parts[i];
-    if (last == '.') {
-      parts.splice(i, 1);
-    } else if (last === '..') {
-      parts.splice(i, 1);
-      up++;
-    } else if (up) {
-      parts.splice(i, 1);
-      up--;
-    }
-  }
-
-  // if the path is allowed to go above the root, restore leading ..s
-  if (allowAboveRoot) {
-    for (; up--; up) {
-      parts.unshift('..');
-    }
-  }
-
-  return parts;
-}
-
-// Regex to split a filename into [*, dir, basename, ext]
-// posix version
-var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/;
-
-// path.resolve([from ...], to)
-// posix version
-exports.resolve = function() {
-var resolvedPath = '',
-    resolvedAbsolute = false;
-
-for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) {
-  var path = (i >= 0)
-      ? arguments[i]
-      : process.cwd();
-
-  // Skip empty and invalid entries
-  if (typeof path !== 'string' || !path) {
-    continue;
-  }
-
-  resolvedPath = path + '/' + resolvedPath;
-  resolvedAbsolute = path.charAt(0) === '/';
-}
-
-// At this point the path should be resolved to a full absolute path, but
-// handle relative paths to be safe (might happen when process.cwd() fails)
-
-// Normalize the path
-resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
-    return !!p;
-  }), !resolvedAbsolute).join('/');
-
-  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
-};
-
-// path.normalize(path)
-// posix version
-exports.normalize = function(path) {
-var isAbsolute = path.charAt(0) === '/',
-    trailingSlash = path.slice(-1) === '/';
-
-// Normalize the path
-path = normalizeArray(filter(path.split('/'), function(p) {
-    return !!p;
-  }), !isAbsolute).join('/');
-
-  if (!path && !isAbsolute) {
-    path = '.';
-  }
-  if (path && trailingSlash) {
-    path += '/';
-  }
-  
-  return (isAbsolute ? '/' : '') + path;
-};
-
-
-// posix version
-exports.join = function() {
-  var paths = Array.prototype.slice.call(arguments, 0);
-  return exports.normalize(filter(paths, function(p, index) {
-    return p && typeof p === 'string';
-  }).join('/'));
-};
-
-
-exports.dirname = function(path) {
-  var dir = splitPathRe.exec(path)[1] || '';
-  var isWindows = false;
-  if (!dir) {
-    // No dirname
-    return '.';
-  } else if (dir.length === 1 ||
-      (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) {
-    // It is just a slash or a drive letter with a slash
-    return dir;
-  } else {
-    // It is a full dirname, strip trailing slash
-    return dir.substring(0, dir.length - 1);
-  }
-};
-
-
-exports.basename = function(path, ext) {
-  var f = splitPathRe.exec(path)[2] || '';
-  // TODO: make this comparison case-insensitive on windows?
-  if (ext && f.substr(-1 * ext.length) === ext) {
-    f = f.substr(0, f.length - ext.length);
-  }
-  return f;
-};
-
-
-exports.extname = function(path) {
-  return splitPathRe.exec(path)[3] || '';
-};
-
-});
-
-require.define("/shred.js", function (require, module, exports, __dirname, __filename) {
-    // Shred is an HTTP client library intended to simplify the use of Node's
-// built-in HTTP library. In particular, we wanted to make it easier to interact
-// with HTTP-based APIs.
-// 
-// See the [examples](./examples.html) for more details.
-
-// Ax is a nice logging library we wrote. You can use any logger, providing it
-// has `info`, `warn`, `debug`, and `error` methods that take a string.
-var Ax = require("ax")
-  , CookieJarLib = require( "cookiejar" )
-  , CookieJar = CookieJarLib.CookieJar
-;
-
-// Shred takes some options, including a logger and request defaults.
-
-var Shred = function(options) {
-  options = (options||{});
-  this.agent = options.agent;
-  this.defaults = options.defaults||{};
-  this.log = options.logger||(new Ax({ level: "info" }));
-  this._sharedCookieJar = new CookieJar();
-  this.logCurl = options.logCurl || false;
-};
-
-// Most of the real work is done in the request and reponse classes.
-Shred.Request = require("./shred/request");
-Shred.Response = require("./shred/response");
-
-// The `request` method kicks off a new request, instantiating a new `Request`
-// object and passing along whatever default options we were given.
-
-Shred.prototype = {
-  request: function(options) {
-    options.logger = this.log;
-    options.logCurl = options.logCurl || this.logCurl;
-    options.cookieJar = ( 'cookieJar' in options ) ? options.cookieJar : this._sharedCookieJar; // let them set cookieJar = null
-    options.agent = options.agent || this.agent;
-    // fill in default options
-    for (var key in this.defaults) {
-      if (this.defaults.hasOwnProperty(key) && !options[key]) {
-        options[key] = this.defaults[key]
-      }
-    }
-    return new Shred.Request(options);
-  }
-};
-
-// Define a bunch of convenience methods so that you don't have to include
-// a `method` property in your request options.
-
-"get put post delete".split(" ").forEach(function(method) {
-  Shred.prototype[method] = function(options) {
-    options.method = method;
-    return this.request(options);
-  };
-});
-
-
-module.exports = Shred;
-
-});
-
-require.define("/node_modules/ax/package.json", function (require, module, exports, __dirname, __filename) {
-    module.exports = {"main":"./lib/ax.js"}
-});
-
-require.define("/node_modules/ax/lib/ax.js", function (require, module, exports, __dirname, __filename) {
-    var inspect = require("util").inspect
-  , fs = require("fs")
-;
-
-
-// this is a quick-and-dirty logger. there are other nicer loggers out there
-// but the ones i found were also somewhat involved. this one has a Ruby
-// logger type interface
-//
-// we can easily replace this, provide the info, debug, etc. methods are the
-// same. or, we can change Haiku to use a more standard node.js interface
-
-var format = function(level,message) {
-  var debug = (level=="debug"||level=="error");
-  if (!message) { return message.toString(); }
-  if (typeof(message) == "object") {
-    if (message instanceof Error && debug) {
-      return message.stack;
-    } else {
-      return inspect(message);
-    }
-  } else {
-    return message.toString();
-  }
-};
-
-var noOp = function(message) { return this; }
-var makeLogger = function(level,fn) {
-  return function(message) { 
-    this.stream.write(this.format(level, message)+"\n");
-    return this;
-  }
-};
-
-var Logger = function(options) {
-  var logger = this;
-  var options = options||{};
-
-  // Default options
-  options.level = options.level || "info";
-  options.timestamp = options.timestamp || true;
-  options.prefix = options.prefix || "";
-  logger.options = options;
-
-  // Allows a prefix to be added to the message.
-  //
-  //    var logger = new Ax({ module: 'Haiku' })
-  //    logger.warn('this is going to be awesome!');
-  //    //=> Haiku: this is going to be awesome!
-  //
-  if (logger.options.module){
-    logger.options.prefix = logger.options.module;
-  }
-
-  // Write to stderr or a file
-  if (logger.options.file){
-    logger.stream = fs.createWriteStream(logger.options.file, {"flags": "a"});
-  } else {
-      if(process.title === "node")
-    logger.stream = process.stderr;
-      else if(process.title === "browser")
-    logger.stream = function () {
-      // Work around weird console context issue: http://code.google.com/p/chromium/issues/detail?id=48662
-      return console[logger.options.level].apply(console, arguments);
-    };
-  }
-
-  switch(logger.options.level){
-    case 'debug':
-      ['debug', 'info', 'warn'].forEach(function (level) {
-        logger[level] = Logger.writer(level);
-      });
-    case 'info':
-      ['info', 'warn'].forEach(function (level) {
-        logger[level] = Logger.writer(level);
-      });
-    case 'warn':
-      logger.warn = Logger.writer('warn');
-  }
-}
-
-// Used to define logger methods
-Logger.writer = function(level){
-  return function(message){
-    var logger = this;
-
-    if(process.title === "node")
-  logger.stream.write(logger.format(level, message) + '\n');
-    else if(process.title === "browser")
-  logger.stream(logger.format(level, message) + '\n');
-
-  };
-}
-
-
-Logger.prototype = {
-  info: function(){},
-  debug: function(){},
-  warn: function(){},
-  error: Logger.writer('error'),
-  format: function(level, message){
-    if (! message) return '';
-
-    var logger = this
-      , prefix = logger.options.prefix
-      , timestamp = logger.options.timestamp ? " " + (new Date().toISOString()) : ""
-    ;
-
-    return (prefix + timestamp + ": " + message);
-  }
-};
-
-module.exports = Logger;
-
-});
-
-require.define("util", function (require, module, exports, __dirname, __filename) {
-    // todo
-
-});
-
-require.define("fs", function (require, module, exports, __dirname, __filename) {
-    // nothing to see here... no file methods for the browser
-
-});
-
-require.define("/node_modules/cookiejar/package.json", function (require, module, exports, __dirname, __filename) {
-    module.exports = {"main":"cookiejar.js"}
-});
-
-require.define("/node_modules/cookiejar/cookiejar.js", function (require, module, exports, __dirname, __filename) {
-    exports.CookieAccessInfo=CookieAccessInfo=function CookieAccessInfo(domain,path,secure,script) {
-    if(this instanceof CookieAccessInfo) {
-      this.domain=domain||undefined;
-      this.path=path||"/";
-      this.secure=!!secure;
-      this.script=!!script;
-      return this;
-    }
-    else {
-        return new CookieAccessInfo(domain,path,secure,script)    
-    }
-}
-
-exports.Cookie=Cookie=function Cookie(cookiestr) {
-  if(cookiestr instanceof Cookie) {
-    return cookiestr;
-  }
-    else {
-        if(this instanceof Cookie) {
-          this.name = null;
-          this.value = null;
-          this.expiration_date = Infinity;
-          this.path = "/";
-          this.domain = null;
-          this.secure = false; //how to define?
-          this.noscript = false; //httponly
-          if(cookiestr) {
-            this.parse(cookiestr)
-          }
-          return this;
-        }
-        return new Cookie(cookiestr)
-    }
-}
-
-Cookie.prototype.toString = function toString() {
-  var str=[this.name+"="+this.value];
-  if(this.expiration_date !== Infinity) {
-    str.push("expires="+(new Date(this.expiration_date)).toGMTString());
-  }
-  if(this.domain) {
-    str.push("domain="+this.domain);
-  }
-  if(this.path) {
-    str.push("path="+this.path);
-  }
-  if(this.secure) {
-    str.push("secure");
-  }
-  if(this.noscript) {
-    str.push("httponly");
-  }
-  return str.join("; ");
-}
-
-Cookie.prototype.toValueString = function toValueString() {
-  return this.name+"="+this.value;
-}
-
-var cookie_str_splitter=/[:](?=\s*[a-zA-Z0-9_\-]+\s*[=])/g
-Cookie.prototype.parse = function parse(str) {
-  if(this instanceof Cookie) {
-      var parts=str.split(";")
-      , pair=parts[0].match(/([^=]+)=((?:.|\n)*)/)
-      , key=pair[1]
-      , value=pair[2];
-      this.name = key;
-      this.value = value;
-    
-      for(var i=1;i<parts.length;i++) {
-        pair=parts[i].match(/([^=]+)(?:=((?:.|\n)*))?/)
-        , key=pair[1].trim().toLowerCase()
-        , value=pair[2];
-        switch(key) {
-          case "httponly":
-            this.noscript = true;
-          break;
-          case "expires":
-            this.expiration_date = value
-              ? Number(Date.parse(value))
-              : Infinity;
-          break;
-          case "path":
-            this.path = value
-              ? value.trim()
-              : "";
-          break;
-          case "domain":
-            this.domain = value
-              ? value.trim()
-              : "";
-          break;
-          case "secure":
-            this.secure = true;
-          break
-        }
-      }
-    
-      return this;
-  }
-    return new Cookie().parse(str)
-}
-
-Cookie.prototype.matches = function matches(access_info) {
-  if(this.noscript && access_info.script
-  || this.secure && !access_info.secure
-  || !this.collidesWith(access_info)) {
-    return false
-  }
-  return true;
-}
-
-Cookie.prototype.collidesWith = function collidesWith(access_info) {
-  if((this.path && !access_info.path) || (this.domain && !access_info.domain)) {
-    return false
-  }
-  if(this.path && access_info.path.indexOf(this.path) !== 0) {
-    return false;
-  }
-  if (this.domain===access_info.domain) {
-    return true;
-  }
-  else if(this.domain && this.domain.charAt(0)===".")
-  {
-    var wildcard=access_info.domain.indexOf(this.domain.slice(1))
-    if(wildcard===-1 || wildcard!==access_info.domain.length-this.domain.length+1) {
-      return false;
-    }
-  }
-  else if(this.domain){
-    return false
-  }
-  return true;
-}
-
-exports.CookieJar=CookieJar=function CookieJar() {
-  if(this instanceof CookieJar) {
-      var cookies = {} //name: [Cookie]
-    
-      this.setCookie = function setCookie(cookie) {
-        cookie = Cookie(cookie);
-        //Delete the cookie if the set is past the current time
-        var remove = cookie.expiration_date <= Date.now();
-        if(cookie.name in cookies) {
-          var cookies_list = cookies[cookie.name];
-          for(var i=0;i<cookies_list.length;i++) {
-            var collidable_cookie = cookies_list[i];
-            if(collidable_cookie.collidesWith(cookie)) {
-              if(remove) {
-                cookies_list.splice(i,1);
-                if(cookies_list.length===0) {
-                  delete cookies[cookie.name]
-                }
-                return false;
-              }
-              else {
-                return cookies_list[i]=cookie;
-              }
-            }
-          }
-          if(remove) {
-            return false;
-          }
-          cookies_list.push(cookie);
-          return cookie;
-        }
-        else if(remove){
-          return false;
-        }
-        else {
-          return cookies[cookie.name]=[cookie];
-        }
-      }
-      //returns a cookie
-      this.getCookie = function getCookie(cookie_name,access_info) {
-        var cookies_list = cookies[cookie_name];
-        for(var i=0;i<cookies_list.length;i++) {
-          var cookie = cookies_list[i];
-          if(cookie.expiration_date <= Date.now()) {
-            if(cookies_list.length===0) {
-              delete cookies[cookie.name]
-            }
-            continue;
-          }
-          if(cookie.matches(access_info)) {
-            return cookie;
-          }
-        }
-      }
-      //returns a list of cookies
-      this.getCookies = function getCookies(access_info) {
-        var matches=[];
-        for(var cookie_name in cookies) {
-          var cookie=this.getCookie(cookie_name,access_info);
-          if (cookie) {
-            matches.push(cookie);
-          }
-        }
-        matches.toString=function toString(){return matches.join(":");}
-            matches.toValueString=function() {return matches.map(function(c){return c.toValueString();}).join(';');}
-        return matches;
-      }
-    
-      return this;
-  }
-    return new CookieJar()
-}
-
-
-//returns list of cookies that were set correctly
-CookieJar.prototype.setCookies = function setCookies(cookies) {
-  cookies=Array.isArray(cookies)
-    ?cookies
-    :cookies.split(cookie_str_splitter);
-  var successful=[]
-  for(var i=0;i<cookies.length;i++) {
-    var cookie = Cookie(cookies[i]);
-    if(this.setCookie(cookie)) {
-      successful.push(cookie);
-    }
-  }
-  return successful;
-}
-
-});
-
-require.define("/shred/request.js", function (require, module, exports, __dirname, __filename) {
-    // The request object encapsulates a request, creating a Node.js HTTP request and
-// then handling the response.
-
-var HTTP = require("http")
-  , HTTPS = require("https")
-  , parseUri = require("./parseUri")
-  , Emitter = require('events').EventEmitter
-  , sprintf = require("sprintf").sprintf
-  , Response = require("./response")
-  , HeaderMixins = require("./mixins/headers")
-  , Content = require("./content")
-;
-
-var STATUS_CODES = HTTP.STATUS_CODES || {
-    100 : 'Continue',
-    101 : 'Switching Protocols',
-    102 : 'Processing', // RFC 2518, obsoleted by RFC 4918
-    200 : 'OK',
-    201 : 'Created',
-    202 : 'Accepted',
-    203 : 'Non-Authoritative Information',
-    204 : 'No Content',
-    205 : 'Reset Content',
-    206 : 'Partial Content',
-    207 : 'Multi-Status', // RFC 4918
-    300 : 'Multiple Choices',
-    301 : 'Moved Permanently',
-    302 : 'Moved Temporarily',
-    303 : 'See Other',
-    304 : 'Not Modified',
-    305 : 'Use Proxy',
-    307 : 'Temporary Redirect',
-    400 : 'Bad Request',
-    401 : 'Unauthorized',
-    402 : 'Payment Required',
-    403 : 'Forbidden',
-    404 : 'Not Found',
-    405 : 'Method Not Allowed',
-    406 : 'Not Acceptable',
-    407 : 'Proxy Authentication Required',
-    408 : 'Request Time-out',
-    409 : 'Conflict',
-    410 : 'Gone',
-    411 : 'Length Required',
-    412 : 'Precondition Failed',
-    413 : 'Request Entity Too Large',
-    414 : 'Request-URI Too Large',
-    415 : 'Unsupported Media Type',
-    416 : 'Requested Range Not Satisfiable',
-    417 : 'Expectation Failed',
-    418 : 'I\'m a teapot', // RFC 2324
-    422 : 'Unprocessable Entity', // RFC 4918
-    423 : 'Locked', // RFC 4918
-    424 : 'Failed Dependency', // RFC 4918
-    425 : 'Unordered Collection', // RFC 4918
-    426 : 'Upgrade Required', // RFC 2817
-    500 : 'Internal Server Error',
-    501 : 'Not Implemented',
-    502 : 'Bad Gateway',
-    503 : 'Service Unavailable',
-    504 : 'Gateway Time-out',
-    505 : 'HTTP Version not supported',
-    506 : 'Variant Also Negotiates', // RFC 2295
-    507 : 'Insufficient Storage', // RFC 4918
-    509 : 'Bandwidth Limit Exceeded',
-    510 : 'Not Extended' // RFC 2774
-};
-
-// The Shred object itself constructs the `Request` object. You should rarely
-// need to do this directly.
-
-var Request = function(options) {
-  this.log = options.logger;
-  this.cookieJar = options.cookieJar;
-  this.encoding = options.encoding;
-  this.logCurl = options.logCurl;
-  processOptions(this,options||{});
-  createRequest(this);
-};
-
-// A `Request` has a number of properties, many of which help with details like
-// URL parsing or defaulting the port for the request.
-
-Object.defineProperties(Request.prototype, {
-
-// - **url**. You can set the `url` property with a valid URL string and all the
-//   URL-related properties (host, port, etc.) will be automatically set on the
-//   request object.
-
-  url: {
-    get: function() {
-      if (!this.scheme) { return null; }
-      return sprintf("%s://%s:%s%s",
-          this.scheme, this.host, this.port,
-          (this.proxy ? "/" : this.path) +
-          (this.query ? ("?" + this.query) : ""));
-    },
-    set: function(_url) {
-      _url = parseUri(_url);
-      this.scheme = _url.protocol;
-      this.host = _url.host;
-      this.port = _url.port;
-      this.path = _url.path;
-      this.query = _url.query;
-      return this;
-    },
-    enumerable: true
-  },
-
-// - **headers**. Returns a hash representing the request headers. You can't set
-//   this directly, only get it. You can add or modify headers by using the
-//   `setHeader` or `setHeaders` method. This ensures that the headers are
-//   normalized - that is, you don't accidentally send `Content-Type` and
-//   `content-type` headers. Keep in mind that if you modify the returned hash,
-//   it will *not* modify the request headers.
-
-  headers: {
-    get: function() {
-      return this.getHeaders();
-    },
-    enumerable: true
-  },
-
-// - **port**. Unless you set the `port` explicitly or include it in the URL, it
-//   will default based on the scheme.
-
-  port: {
-    get: function() {
-      if (!this._port) {
-        switch(this.scheme) {
-          case "https": return this._port = 443;
-          case "http":
-          default: return this._port = 80;
-        }
-      }
-      return this._port;
-    },
-    set: function(value) { this._port = value; return this; },
-    enumerable: true
-  },
-
-// - **method**. The request method - `get`, `put`, `post`, etc. that will be
-//   used to make the request. Defaults to `get`.
-
-  method: {
-    get: function() {
-      return this._method = (this._method||"GET");
-    },
-    set: function(value) {
-      this._method = value; return this;
-    },
-    enumerable: true
-  },
-
-// - **query**. Can be set either with a query string or a hash (object). Get
-//   will always return a properly escaped query string or null if there is no
-//   query component for the request.
-
-  query: {
-    get: function() {return this._query;},
-    set: function(value) {
-      var stringify = function (hash) {
-        var query = "";
-        for (var key in hash) {
-          query += encodeURIComponent(key) + '=' + encodeURIComponent(hash[key]) + '&';
-        }
-        // Remove the last '&'
-        query = query.slice(0, -1);
-        return query;
-      }
-
-      if (value) {
-        if (typeof value === 'object') {
-          value = stringify(value);
-        }
-        this._query = value;
-      } else {
-        this._query = "";
-      }
-      return this;
-    },
-    enumerable: true
-  },
-
-// - **parameters**. This will return the query parameters in the form of a hash
-//   (object).
-
-  parameters: {
-    get: function() { return QueryString.parse(this._query||""); },
-    enumerable: true
-  },
-
-// - **content**. (Aliased as `body`.) Set this to add a content entity to the
-//   request. Attempts to use the `content-type` header to determine what to do
-//   with the content value. Get this to get back a [`Content`
-//   object](./content.html).
-
-  body: {
-    get: function() { return this._body; },
-    set: function(value) {
-      this._body = new Content({
-        data: value,
-        type: this.getHeader("Content-Type")
-      });
-      this.setHeader("Content-Type",this.content.type);
-      this.setHeader("Content-Length",this.content.length);
-      return this;
-    },
-    enumerable: true
-  },
-
-// - **timeout**. Used to determine how long to wait for a response. Does not
-//   distinguish between connect timeouts versus request timeouts. Set either in
-//   milliseconds or with an object with temporal attributes (hours, minutes,
-//   seconds) and convert it into milliseconds. Get will always return
-//   milliseconds.
-
-  timeout: {
-    get: function() { return this._timeout; }, // in milliseconds
-    set: function(timeout) {
-      var request = this
-        , milliseconds = 0;
-      ;
-      if (!timeout) return this;
-      if (typeof timeout==="number") { milliseconds = timeout; }
-      else {
-        milliseconds = (timeout.milliseconds||0) +
-          (1000 * ((timeout.seconds||0) +
-              (60 * ((timeout.minutes||0) +
-                (60 * (timeout.hours||0))))));
-      }
-      this._timeout = milliseconds;
-      return this;
-    },
-    enumerable: true
-  }
-});
-
-// Alias `body` property to `content`. Since the [content object](./content.html)
-// has a `body` attribute, it's preferable to use `content` since you can then
-// access the raw content data using `content.body`.
-
-Object.defineProperty(Request.prototype,"content",
-    Object.getOwnPropertyDescriptor(Request.prototype, "body"));
-
-// The `Request` object can be pretty overwhelming to view using the built-in
-// Node.js inspect method. We want to make it a bit more manageable. This
-// probably goes [too far in the other
-// direction](https://github.com/spire-io/shred/issues/2).
-
-Request.prototype.inspect = function () {
-  var request = this;
-  var headers = this.format_headers();
-  var summary = ["<Shred Request> ", request.method.toUpperCase(),
-      request.url].join(" ")
-  return [ summary, "- Headers:", headers].join("\n");
-};
-
-Request.prototype.format_headers = function () {
-  var array = []
-  var headers = this._headers
-  for (var key in headers) {
-    if (headers.hasOwnProperty(key)) {
-      var value = headers[key]
-      array.push("\t" + key + ": " + value);
-    }
-  }
-  return array.join("\n");
-};
-
-// Allow chainable 'on's:  shred.get({ ... }).on( ... ).  You can pass in a
-// single function, a pair (event, function), or a hash:
-// { event: function, event: function }
-Request.prototype.on = function (eventOrHash, listener) {
-  var emitter = this.emitter;
-  // Pass in a single argument as a function then make it the default response handler
-  if (arguments.length === 1 && typeof(eventOrHash) === 'function') {
-    emitter.on('response', eventOrHash);
-  } else if (arguments.length === 1 && typeof(eventOrHash) === 'object') {
-    for (var key in eventOrHash) {
-      if (eventOrHash.hasOwnProperty(key)) {
-        emitter.on(key, eventOrHash[key]);
-      }
-    }
-  } else {
-    emitter.on(eventOrHash, listener);
-  }
-  return this;
-};
-
-// Add in the header methods. Again, these ensure we don't get the same header
-// multiple times with different case conventions.
-HeaderMixins.gettersAndSetters(Request);
-
-// `processOptions` is called from the constructor to handle all the work
-// associated with making sure we do our best to ensure we have a valid request.
-
-var processOptions = function(request,options) {
-
-  request.log.debug("Processing request options ..");
-
-  // We'll use `request.emitter` to manage the `on` event handlers.
-  request.emitter = (new Emitter);
-
-  request.agent = options.agent;
-
-  // Set up the handlers ...
-  if (options.on) {
-    for (var key in options.on) {
-      if (options.on.hasOwnProperty(key)) {
-        request.emitter.on(key, options.on[key]);
-      }
-    }
-  }
-
-  // Make sure we were give a URL or a host
-  if (!options.url && !options.host) {
-    request.emitter.emit("request_error",
-        new Error("No url or url options (host, port, etc.)"));
-    return;
-  }
-
-  // Allow for the [use of a proxy](http://www.jmarshall.com/easy/http/#proxies).
-
-  if (options.url) {
-    if (options.proxy) {
-      request.url = options.proxy;
-      request.path = options.url;
-    } else {
-      request.url = options.url;
-    }
-  }
-
-  // Set the remaining options.
-  request.query = options.query||options.parameters||request.query ;
-  request.method = options.method;
-  request.setHeader("user-agent",options.agent||"Shred");
-  request.setHeaders(options.headers);
-
-  if (request.cookieJar) {
-    var cookies = request.cookieJar.getCookies( CookieAccessInfo( request.host, request.path ) );
-    if (cookies.length) {
-      var cookieString = request.getHeader('cookie')||'';
-      for (var cookieIndex = 0; cookieIndex < cookies.length; ++cookieIndex) {
-          if ( cookieString.length && cookieString[ cookieString.length - 1 ] != ';' )
-          {
-              cookieString += ';';
-          }
-          cookieString += cookies[ cookieIndex ].name + '=' + cookies[ cookieIndex ].value + ';';
-      }
-      request.setHeader("cookie", cookieString);
-    }
-  }
-  
-  // The content entity can be set either using the `body` or `content` attributes.
-  if (options.body||options.content) {
-    request.content = options.body||options.content;
-  }
-  request.timeout = options.timeout;
-
-};
-
-// `createRequest` is also called by the constructor, after `processOptions`.
-// This actually makes the request and processes the response, so `createRequest`
-// is a bit of a misnomer.
-
-var createRequest = function(request) {
-  var timeout ;
-
-  request.log.debug("Creating request ..");
-  request.log.debug(request);
-
-  var reqParams = {
-    host: request.host,
-    port: request.port,
-    method: request.method,
-    path: request.path + (request.query ? '?'+request.query : ""),
-    headers: request.getHeaders(),
-    // Node's HTTP/S modules will ignore this, but we are using the
-    // browserify-http module in the browser for both HTTP and HTTPS, and this
-    // is how you differentiate the two.
-    scheme: request.scheme,
-    // Use a provided agent.  'Undefined' is the default, which uses a global
-    // agent.
-    agent: request.agent
-  };
-
-  if (request.logCurl) {
-    logCurl(request);
-  }
-
-  var http = request.scheme == "http" ? HTTP : HTTPS;
-
-  // Set up the real request using the selected library. The request won't be
-  // sent until we call `.end()`.
-  request._raw = http.request(reqParams, function(response) {
-    request.log.debug("Received response ..");
-
-    // We haven't timed out and we have a response, so make sure we clear the
-    // timeout so it doesn't fire while we're processing the response.
-    clearTimeout(timeout);
-
-    // Construct a Shred `Response` object from the response. This will stream
-    // the response, thus the need for the callback. We can access the response
-    // entity safely once we're in the callback.
-    response = new Response(response, request, function(response) {
-
-      // Set up some event magic. The precedence is given first to
-      // status-specific handlers, then to responses for a given event, and then
-      // finally to the more general `response` handler. In the last case, we
-      // need to first make sure we're not dealing with a a redirect.
-      var emit = function(event) {
-        var emitter = request.emitter;
-        var textStatus = STATUS_CODES[response.status] ? STATUS_CODES[response.status].toLowerCase() : null;
-        if (emitter.listeners(response.status).length > 0 || emitter.listeners(textStatus).length > 0) {
-          emitter.emit(response.status, response);
-          emitter.emit(textStatus, response);
-        } else {
-          if (emitter.listeners(event).length>0) {
-            emitter.emit(event, response);
-          } else if (!response.isRedirect) {
-            emitter.emit("response", response);
-            //console.warn("Request has no event listener for status code " + response.status);
-          }
-        }
-      };
-
-      // Next, check for a redirect. We simply repeat the request with the URL
-      // given in the `Location` header. We fire a `redirect` event.
-      if (response.isRedirect) {
-        request.log.debug("Redirecting to "
-            + response.getHeader("Location"));
-        request.url = response.getHeader("Location");
-        emit("redirect");
-        createRequest(request);
-
-      // Okay, it's not a redirect. Is it an error of some kind?
-      } else if (response.isError) {
-        emit("error");
-      } else {
-      // It looks like we're good shape. Trigger the `success` event.
-        emit("success");
-      }
-    });
-  });
-
-  // We're still setting up the request. Next, we're going to handle error cases
-  // where we have no response. We don't emit an error event because that event
-  // takes a response. We don't response handlers to have to check for a null
-  // value. However, we [should introduce a different event
-  // type](https://github.com/spire-io/shred/issues/3) for this type of error.
-  request._raw.on("error", function(error) {
-    request.emitter.emit("request_error", error);
-  });
-
-  request._raw.on("socket", function(socket) {
-    request.emitter.emit("socket", socket);
-  });
-
-  // TCP timeouts should also trigger the "response_error" event.
-  request._raw.on('socket', function () {
-    request._raw.socket.on('timeout', function () {
-      // This should trigger the "error" event on the raw request, which will
-      // trigger the "response_error" on the shred request.
-      request._raw.abort();
-    });
-  });
-
-
-  // We're almost there. Next, we need to write the request entity to the
-  // underlying request object.
-  if (request.content) {
-    request.log.debug("Streaming body: '" +
-        request.content.data.slice(0,59) + "' ... ");
-    request._raw.write(request.content.data);
-  }
-
-  // Finally, we need to set up the timeout. We do this last so that we don't
-  // start the clock ticking until the last possible moment.
-  if (request.timeout) {
-    timeout = setTimeout(function() {
-      request.log.debug("Timeout fired, aborting request ...");
-      request._raw.abort();
-      request.emitter.emit("timeout", request);
-    },request.timeout);
-  }
-
-  // The `.end()` method will cause the request to fire. Technically, it might
-  // have already sent the headers and body.
-  request.log.debug("Sending request ...");
-  request._raw.end();
-};
-
-// Logs the curl command for the request.
-var logCurl = function (req) {
-  var headers = req.getHeaders();
-  var headerString = "";
-
-  for (var key in headers) {
-    headerString += '-H "' + key + ": " + headers[key] + '" ';
-  }
-
-  var bodyString = ""
-
-  if (req.content) {
-    bodyString += "-d '" + req.content.body + "' ";
-  }
-
-  var query = req.query ? '?' + req.query : "";
-
-  console.log("curl " +
-    "-X " + req.method.toUpperCase() + " " +
-    req.scheme + "://" + req.host + ":" + req.port + req.path + query + " " +
-    headerString +
-    bodyString
-  );
-};
-
-
-module.exports = Request;
-
-});
-
-require.define("http", function (require, module, exports, __dirname, __filename) {
-    // todo
-
-});
-
-require.define("https", function (require, module, exports, __dirname, __filename) {
-    // todo
-
-});
-
-require.define("/shred/parseUri.js", function (require, module, exports, __dirname, __filename) {
-    // parseUri 1.2.2
-// (c) Steven Levithan <stevenlevithan.com>
-// MIT License
-
-function parseUri (str) {
-  var o   = parseUri.options,
-    m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
-    uri = {},
-    i   = 14;
-
-  while (i--) uri[o.key[i]] = m[i] || "";
-
-  uri[o.q.name] = {};
-  uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
-    if ($1) uri[o.q.name][$1] = $2;
-  });
-
-  return uri;
-};
-
-parseUri.options = {
-  strictMode: false,
-  key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
-  q:   {
-    name:   "queryKey",
-    parser: /(?:^|&)([^&=]*)=?([^&]*)/g
-  },
-  parser: {
-    strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
-    loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
-  }
-};
-
-module.exports = parseUri;
-
-});
-
-require.define("events", function (require, module, exports, __dirname, __filename) {
-    if (!process.EventEmitter) process.EventEmitter = function () {};
-
-var EventEmitter = exports.EventEmitter = process.EventEmitter;
-var isArray = typeof Array.isArray === 'function'
-    ? Array.isArray
-    : function (xs) {
-        return Object.toString.call(xs) === '[object Array]'
-    }
-;
-
-// By default EventEmitters will print a warning if more than
-// 10 listeners are added to it. This is a useful default which
-// helps finding memory leaks.
-//
-// Obviously not all Emitters should be limited to 10. This function allows
-// that to be increased. Set to zero for unlimited.
-var defaultMaxListeners = 10;
-EventEmitter.prototype.setMaxListeners = function(n) {
-  if (!this._events) this._events = {};
-  this._events.maxListeners = n;
-};
-
-
-EventEmitter.prototype.emit = function(type) {
-  // If there is no 'error' event listener then throw.
-  if (type === 'error') {
-    if (!this._events || !this._events.error ||
-        (isArray(this._events.error) && !this._events.error.length))
-    {
-      if (arguments[1] instanceof Error) {
-        throw arguments[1]; // Unhandled 'error' event
-      } else {
-        throw new Error("Uncaught, unspecified 'error' event.");
-      }
-      return false;
-    }
-  }
-
-  if (!this._events) return false;
-  var handler = this._events[type];
-  if (!handler) return false;
-
-  if (typeof handler == 'function') {
-    switch (arguments.length) {
-      // fast cases
-      case 1:
-        handler.call(this);
-        break;
-      case 2:
-        handler.call(this, arguments[1]);
-        break;
-      case 3:
-        handler.call(this, arguments[1], arguments[2]);
-        break;
-      // slower
-      default:
-        var args = Array.prototype.slice.call(arguments, 1);
-        handler.apply(this, args);
-    }
-    return true;
-
-  } else if (isArray(handler)) {
-    var args = Array.prototype.slice.call(arguments, 1);
-
-    var listeners = handler.slice();
-    for (var i = 0, l = listeners.length; i < l; i++) {
-      listeners[i].apply(this, args);
-    }
-    return true;
-
-  } else {
-    return false;
-  }
-};
-
-// EventEmitter is defined in src/node_events.cc
-// EventEmitter.prototype.emit() is also defined there.
-EventEmitter.prototype.addListener = function(type, listener) {
-  if ('function' !== typeof listener) {
-    throw new Error('addListener only takes instances of Function');
-  }
-
-  if (!this._events) this._events = {};
-
-  // To avoid recursion in the case that type == "newListeners"! Before
-  // adding it to the listeners, first emit "newListeners".
-  this.emit('newListener', type, listener);
-
-  if (!this._events[type]) {
-    // Optimize the case of one listener. Don't need the extra array object.
-    this._events[type] = listener;
-  } else if (isArray(this._events[type])) {
-
-    // Check for listener leak
-    if (!this._events[type].warned) {
-      var m;
-      if (this._events.maxListeners !== undefined) {
-        m = this._events.maxListeners;
-      } else {
-        m = defaultMaxListeners;
-      }
-
-      if (m && m > 0 && this._events[type].length > m) {
-        this._events[type].warned = true;
-        console.error('(node) warning: possible EventEmitter memory ' +
-                      'leak detected. %d listeners added. ' +
-                      'Use emitter.setMaxListeners() to increase limit.',
-                      this._events[type].length);
-        console.trace();
-      }
-    }
-
-    // If we've already got an array, just append.
-    this._events[type].push(listener);
-  } else {
-    // Adding the second element, need to change to array.
-    this._events[type] = [this._events[type], listener];
-  }
-
-  return this;
-};
-
-EventEmitter.prototype.on = EventEmitter.prototype.addListener;
-
-EventEmitter.prototype.once = function(type, listener) {
-  var self = this;
-  self.on(type, function g() {
-    self.removeListener(type, g);
-    listener.apply(this, arguments);
-  });
-
-  return this;
-};
-
-EventEmitter.prototype.removeListener = function(type, listener) {
-  if ('function' !== typeof listener) {
-    throw new Error('removeListener only takes instances of Function');
-  }
-
-  // does not use listeners(), so no side effect of creating _events[type]
-  if (!this._events || !this._events[type]) return this;
-
-  var list = this._events[type];
-
-  if (isArray(list)) {
-    var i = list.indexOf(listener);
-    if (i < 0) return this;
-    list.splice(i, 1);
-    if (list.length == 0)
-      delete this._events[type];
-  } else if (this._events[type] === listener) {
-    delete this._events[type];
-  }
-
-  return this;
-};
-
-EventEmitter.prototype.removeAllListeners = function(type) {
-  // does not use listeners(), so no side effect of creating _events[type]
-  if (type && this._events && this._events[type]) this._events[type] = null;
-  return this;
-};
-
-EventEmitter.prototype.listeners = function(type) {
-  if (!this._events) this._events = {};
-  if (!this._events[type]) this._events[type] = [];
-  if (!isArray(this._events[type])) {
-    this._events[type] = [this._events[type]];
-  }
-  return this._events[type];
-};
-
-});
-
-require.define("/node_modules/sprintf/package.json", function (require, module, exports, __dirname, __filename) {
-    module.exports = {"main":"./lib/sprintf"}
-});
-
-require.define("/node_modules/sprintf/lib/sprintf.js", function (require, module, exports, __dirname, __filename) {
-    /**
-sprintf() for JavaScript 0.7-beta1
-http://www.diveintojavascript.com/projects/javascript-sprintf
-
-Copyright (c) Alexandru Marasteanu <alexaholic [at) gmail (dot] com>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-    * Neither the name of sprintf() for JavaScript nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL Alexandru Marasteanu BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-Changelog:
-2010.11.07 - 0.7-beta1-node
-  - converted it to a node.js compatible module
-
-2010.09.06 - 0.7-beta1
-  - features: vsprintf, support for named placeholders
-  - enhancements: format cache, reduced global namespace pollution
-
-2010.05.22 - 0.6:
- - reverted to 0.4 and fixed the bug regarding the sign of the number 0
- Note:
- Thanks to Raphael Pigulla <raph (at] n3rd [dot) org> (http://www.n3rd.org/)
- who warned me about a bug in 0.5, I discovered that the last update was
- a regress. I appologize for that.
-
-2010.05.09 - 0.5:
- - bug fix: 0 is now preceeded with a + sign
- - bug fix: the sign was not at the right position on padded results (Kamal Abdali)
- - switched from GPL to BSD license
-
-2007.10.21 - 0.4:
- - unit test and patch (David Baird)
-
-2007.09.17 - 0.3:
- - bug fix: no longer throws exception on empty paramenters (Hans Pufal)
-
-2007.09.11 - 0.2:
- - feature: added argument swapping
-
-2007.04.03 - 0.1:
- - initial release
-**/
-
-var sprintf = (function() {
-  function get_type(variable) {
-    return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
-  }
-  function str_repeat(input, multiplier) {
-    for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */}
-    return output.join('');
-  }
-
-  var str_format = function() {
-    if (!str_format.cache.hasOwnProperty(arguments[0])) {
-      str_format.cache[arguments[0]] = str_format.parse(arguments[0]);
-    }
-    return str_format.format.call(null, str_format.cache[arguments[0]], arguments);
-  };
-
-  str_format.format = function(parse_tree, argv) {
-    var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length;
-    for (i = 0; i < tree_length; i++) {
-      node_type = get_type(parse_tree[i]);
-      if (node_type === 'string') {
-        output.push(parse_tree[i]);
-      }
-      else if (node_type === 'array') {
-        match = parse_tree[i]; // convenience purposes only
-        if (match[2]) { // keyword argument
-          arg = argv[cursor];
-          for (k = 0; k < match[2].length; k++) {
-            if (!arg.hasOwnProperty(match[2][k])) {
-              throw(sprintf('[sprintf] property "%s" does not exist', match[2][k]));
-            }
-            arg = arg[match[2][k]];
-          }
-        }
-        else if (match[1]) { // positional argument (explicit)
-          arg = argv[match[1]];
-        }
-        else { // positional argument (implicit)
-          arg = argv[cursor++];
-        }
-
-        if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) {
-          throw(sprintf('[sprintf] expecting number but found %s', get_type(arg)));
-        }
-        switch (match[8]) {
-          case 'b': arg = arg.toString(2); break;
-          case 'c': arg = String.fromCharCode(arg); break;
-          case 'd': arg = parseInt(arg, 10); break;
-          case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break;
-          case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break;
-          case 'o': arg = arg.toString(8); break;
-          case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break;
-          case 'u': arg = Math.abs(arg); break;
-          case 'x': arg = arg.toString(16); break;
-          case 'X': arg = arg.toString(16).toUpperCase(); break;
-        }
-        arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg);
-        pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' ';
-        pad_length = match[6] - String(arg).length;
-        pad = match[6] ? str_repeat(pad_character, pad_length) : '';
-        output.push(match[5] ? arg + pad : pad + arg);
-      }
-    }
-    return output.join('');
-  };
-
-  str_format.cache = {};
-
-  str_format.parse = function(fmt) {
-    var _fmt = fmt, match = [], parse_tree = [], arg_names = 0;
-    while (_fmt) {
-      if ((match = /^[^\x25]+/.exec(_fmt)) !== null) {
-        parse_tree.push(match[0]);
-      }
-      else if ((match = /^\x25{2}/.exec(_fmt)) !== null) {
-        parse_tree.push('%');
-      }
-      else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) {
-        if (match[2]) {
-          arg_names |= 1;
-          var field_list = [], replacement_field = match[2], field_match = [];
-          if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
-            field_list.push(field_match[1]);
-            while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
-              if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
-                field_list.push(field_match[1]);
-              }
-              else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) {
-                field_list.push(field_match[1]);
-              }
-              else {
-                throw('[sprintf] huh?');
-              }
-            }
-          }
-          else {
-            throw('[sprintf] huh?');
-          }
-          match[2] = field_list;
-        }
-        else {
-          arg_names |= 2;
-        }
-        if (arg_names === 3) {
-          throw('[sprintf] mixing positional and named placeholders is not (yet) supported');
-        }
-        parse_tree.push(match);
-      }
-      else {
-        throw('[sprintf] huh?');
-      }
-      _fmt = _fmt.substring(match[0].length);
-    }
-    return parse_tree;
-  };
-
-  return str_format;
-})();
-
-var vsprintf = function(fmt, argv) {
-  argv.unshift(fmt);
-  return sprintf.apply(null, argv);
-};
-
-exports.sprintf = sprintf;
-exports.vsprintf = vsprintf;
-});
-
-require.define("/shred/response.js", function (require, module, exports, __dirname, __filename) {
-    // The `Response object` encapsulates a Node.js HTTP response.
-
-var Content = require("./content")
-  , HeaderMixins = require("./mixins/headers")
-  , CookieJarLib = require( "cookiejar" )
-  , Cookie = CookieJarLib.Cookie
-;
-
-// Browser doesn't have zlib.
-var zlib = null;
-try {
-  zlib = require('zlib');
-} catch (e) {
-  console.warn("no zlib library");
-}
-
-// Iconv doesn't work in browser
-var Iconv = null;
-try {
-  Iconv = require('iconv-lite');
-} catch (e) {
-  console.warn("no iconv library");
-}
-
-// Construct a `Response` object. You should never have to do this directly. The
-// `Request` object handles this, getting the raw response object and passing it
-// in here, along with the request. The callback allows us to stream the response
-// and then use the callback to let the request know when it's ready.
-var Response = function(raw, request, callback) { 
-  var response = this;
-  this._raw = raw;
-
-  // The `._setHeaders` method is "private"; you can't otherwise set headers on
-  // the response.
-  this._setHeaders.call(this,raw.headers);
-  
-  // store any cookies
-  if (request.cookieJar && this.getHeader('set-cookie')) {
-    var cookieStrings = this.getHeader('set-cookie');
-    var cookieObjs = []
-      , cookie;
-
-    for (var i = 0; i < cookieStrings.length; i++) {
-      var cookieString = cookieStrings[i];
-      if (!cookieString) {
-        continue;
-      }
-
-      if (!cookieString.match(/domain\=/i)) {
-        cookieString += '; domain=' + request.host;
-      }
-
-      if (!cookieString.match(/path\=/i)) {
-        cookieString += '; path=' + request.path;
-      }
-
-      try {
-        cookie = new Cookie(cookieString);
-        if (cookie) {
-          cookieObjs.push(cookie);
-        }
-      } catch (e) {
-        console.warn("Tried to set bad cookie: " + cookieString);
-      }
-    }
-
-    request.cookieJar.setCookies(cookieObjs);
-  }
-
-  this.request = request;
-  this.client = request.client;
-  this.log = this.request.log;
-
-  // Stream the response content entity and fire the callback when we're done.
-  // Store the incoming data in a array of Buffers which we concatinate into one
-  // buffer at the end.  We need to use buffers instead of strings here in order
-  // to preserve binary data.
-  var chunkBuffers = [];
-  var dataLength = 0;
-  raw.on("data", function(chunk) {
-    chunkBuffers.push(chunk);
-    dataLength += chunk.length;
-  });
-  raw.on("end", function() {
-    var body;
-    if (typeof Buffer === 'undefined') {
-      // Just concatinate into a string
-      body = chunkBuffers.join('');
-    } else {
-      // Initialize new buffer and add the chunks one-at-a-time.
-      body = new Buffer(dataLength);
-      for (var i = 0, pos = 0; i < chunkBuffers.length; i++) {
-        chunkBuffers[i].copy(body, pos);
-        pos += chunkBuffers[i].length;
-      }
-    }
-
-    var setBodyAndFinish = function (body) {
-      response._body = new Content({ 
-        body: body,
-        type: response.getHeader("Content-Type")
-      });
-      callback(response);
-    }
-
-    if (zlib && response.getHeader("Content-Encoding") === 'gzip'){
-      zlib.gunzip(body, function (err, gunzippedBody) {
-        if (Iconv && response.request.encoding){
-          body = Iconv.fromEncoding(gunzippedBody,response.request.encoding);
-        } else {
-          body = gunzippedBody.toString();
-        }
-        setBodyAndFinish(body);
-      })
-    }
-    else{
-       if (response.request.encoding){
-            body = Iconv.fromEncoding(body,response.request.encoding);
-        }        
-      setBodyAndFinish(body);
-    }
-  });
-};
-
-// The `Response` object can be pretty overwhelming to view using the built-in
-// Node.js inspect method. We want to make it a bit more manageable. This
-// probably goes [too far in the other
-// direction](https://github.com/spire-io/shred/issues/2).
-
-Response.prototype = {
-  inspect: function() {
-    var response = this;
-    var headers = this.format_headers();
-    var summary = ["<Shred Response> ", response.status].join(" ")
-    return [ summary, "- Headers:", headers].join("\n");
-  },
-  format_headers: function () {
-    var array = []
-    var headers = this._headers
-    for (var key in headers) {
-      if (headers.hasOwnProperty(key)) {
-        var value = headers[key]
-        array.push("\t" + key + ": " + value);
-      }
-    }
-    return array.join("\n");
-  }
-};
-
-// `Response` object properties, all of which are read-only:
-Object.defineProperties(Response.prototype, {
-  
-// - **status**. The HTTP status code for the response. 
-  status: {
-    get: function() { return this._raw.statusCode; },
-    enumerable: true
-  },
-
-// - **content**. The HTTP content entity, if any. Provided as a [content
-//   object](./content.html), which will attempt to convert the entity based upon
-//   the `content-type` header. The converted value is available as
-//   `content.data`. The original raw content entity is available as
-//   `content.body`.
-  body: {
-    get: function() { return this._body; }
-  },
-  content: {
-    get: function() { return this.body; },
-    enumerable: true
-  },
-
-// - **isRedirect**. Is the response a redirect? These are responses with 3xx
-//   status and a `Location` header.
-  isRedirect: {
-    get: function() {
-      return (this.status>299
-          &&this.status<400
-          &&this.getHeader("Location"));
-    },
-    enumerable: true
-  },
-
-// - **isError**. Is the response an error? These are responses with status of
-//   400 or greater.
-  isError: {
-    get: function() {
-      return (this.status === 0 || this.status > 399)
-    },
-    enumerable: true
-  }
-});
-
-// Add in the [getters for accessing the normalized headers](./headers.js).
-HeaderMixins.getters(Response);
-HeaderMixins.privateSetters(Response);
-
-// Work around Mozilla bug #608735 [https://bugzil.la/608735], which causes
-// getAllResponseHeaders() to return {} if the response is a CORS request.
-// xhr.getHeader still works correctly.
-var getHeader = Response.prototype.getHeader;
-Response.prototype.getHeader = function (name) {
-  return (getHeader.call(this,name) ||
-    (typeof this._raw.getHeader === 'function' && this._raw.getHeader(name)));
-};
-
-module.exports = Response;
-
-});
-
-require.define("/shred/content.js", function (require, module, exports, __dirname, __filename) {
-    
-// The purpose of the `Content` object is to abstract away the data conversions
-// to and from raw content entities as strings. For example, you want to be able
-// to pass in a Javascript object and have it be automatically converted into a
-// JSON string if the `content-type` is set to a JSON-based media type.
-// Conversely, you want to be able to transparently get back a Javascript object
-// in the response if the `content-type` is a JSON-based media-type.
-
-// One limitation of the current implementation is that it [assumes the `charset` is UTF-8](https://github.com/spire-io/shred/issues/5).
-
-// The `Content` constructor takes an options object, which *must* have either a
-// `body` or `data` property and *may* have a `type` property indicating the
-// media type. If there is no `type` attribute, a default will be inferred.
-var Content = function(options) {
-  this.body = options.body;
-  this.data = options.data;
-  this.type = options.type;
-};
-
-Content.prototype = {
-  // Treat `toString()` as asking for the `content.body`. That is, the raw content entity.
-  //
-  //     toString: function() { return this.body; }
-  //
-  // Commented out, but I've forgotten why. :/
-};
-
-
-// `Content` objects have the following attributes:
-Object.defineProperties(Content.prototype,{
-  
-// - **type**. Typically accessed as `content.type`, reflects the `content-type`
-//   header associated with the request or response. If not passed as an options
-//   to the constructor or set explicitly, it will infer the type the `data`
-//   attribute, if possible, and, failing that, will default to `text/plain`.
-  type: {
-    get: function() {
-      if (this._type) {
-        return this._type;
-      } else {
-        if (this._data) {
-          switch(typeof this._data) {
-            case "string": return "text/plain";
-            case "object": return "application/json";
-          }
-        }
-      }
-      return "text/plain";
-    },
-    set: function(value) {
-      this._type = value;
-      return this;
-    },
-    enumerable: true
-  },
-
-// - **data**. Typically accessed as `content.data`, reflects the content entity
-//   converted into Javascript data. This can be a string, if the `type` is, say,
-//   `text/plain`, but can also be a Javascript object. The conversion applied is
-//   based on the `processor` attribute. The `data` attribute can also be set
-//   directly, in which case the conversion will be done the other way, to infer
-//   the `body` attribute.
-  data: {
-    get: function() {
-      if (this._body) {
-        return this.processor.parser(this._body);
-      } else {
-        return this._data;
-      }
-    },
-    set: function(data) {
-      if (this._body&&data) Errors.setDataWithBody(this);
-      this._data = data;
-      return this;
-    },
-    enumerable: true
-  },
-
-// - **body**. Typically accessed as `content.body`, reflects the content entity
-//   as a UTF-8 string. It is the mirror of the `data` attribute. If you set the
-//   `data` attribute, the `body` attribute will be inferred and vice-versa. If
-//   you attempt to set both, an exception is raised.
-  body: {
-    get: function() {
-      if (this._data) {
-        return this.processor.stringify(this._data);
-      } else {
-        return this.processor.stringify(this._body);
-      }
-    },
-    set: function(body) {
-      if (this._data&&body) Errors.setBodyWithData(this);
-      this._body = body;
-      return this;
-    },
-    enumerable: true
-  },
-
-// - **processor**. The functions that will be used to convert to/from `data` and
-//   `body` attributes. You can add processors. The two that are built-in are for
-//   `text/plain`, which is basically an identity transformation and
-//   `application/json` and other JSON-based media types (including custom media
-//   types with `+json`). You can add your own processors. See below.
-  processor: {
-    get: function() {
-      var processor = Content.processors[this.type];
-      if (processor) {
-        return processor;
-      } else {
-        // Return the first processor that matches any part of the
-        // content type. ex: application/vnd.foobar.baz+json will match json.
-        var main = this.type.split(";")[0];
-        var parts = main.split(/\+|\//);
-        for (var i=0, l=parts.length; i < l; i++) {
-          processor = Content.processors[parts[i]]
-        }
-        return processor || {parser:identity,stringify:toString};
-      }
-    },
-    enumerable: true
-  },
-
-// - **length**. Typically accessed as `content.length`, returns the length in
-//   bytes of the raw content entity.
-  length: {
-    get: function() {
-      if (typeof Buffer !== 'undefined') {
-        return Buffer.byteLength(this.body);
-      }
-      return this.body.length;
-    }
-  }
-});
-
-Content.processors = {};
-
-// The `registerProcessor` function allows you to add your own processors to
-// convert content entities. Each processor consists of a Javascript object with
-// two properties:
-// - **parser**. The function used to parse a raw content entity and convert it
-//   into a Javascript data type.
-// - **stringify**. The function used to convert a Javascript data type into a
-//   raw content entity.
-Content.registerProcessor = function(types,processor) {
-  
-// You can pass an array of types that will trigger this processor, or just one.
-// We determine the array via duck-typing here.
-  if (types.forEach) {
-    types.forEach(function(type) {
-      Content.processors[type] = processor;
-    });
-  } else {
-    // If you didn't pass an array, we just use what you pass in.
-    Content.processors[types] = processor;
-  }
-};
-
-// Register the identity processor, which is used for text-based media types.
-var identity = function(x) { return x; }
-  , toString = function(x) { return x.toString(); }
-Content.registerProcessor(
-  ["text/html","text/plain","text"],
-  { parser: identity, stringify: toString });
-
-// Register the JSON processor, which is used for JSON-based media types.
-Content.registerProcessor(
-  ["application/json; charset=utf-8","application/json","json"],
-  {
-    parser: function(string) {
-      return JSON.parse(string);
-    },
-    stringify: function(data) {
-      return JSON.stringify(data); }});
-
-// Error functions are defined separately here in an attempt to make the code
-// easier to read.
-var Errors = {
-  setDataWithBody: function(object) {
-    throw new Error("Attempt to set data attribute of a content object " +
-        "when the body attributes was already set.");
-  },
-  setBodyWithData: function(object) {
-    throw new Error("Attempt to set body attribute of a content object " +
-        "when the data attributes was already set.");
-  }
-}
-module.exports = Content;
-
-});
-
-require.define("/shred/mixins/headers.js", function (require, module, exports, __dirname, __filename) {
-    // The header mixins allow you to add HTTP header support to any object. This
-// might seem pointless: why not simply use a hash? The main reason is that, per
-// the [HTTP spec](http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2),
-// headers are case-insensitive. So, for example, `content-type` is the same as
-// `CONTENT-TYPE` which is the same as `Content-Type`. Since there is no way to
-// overload the index operator in Javascript, using a hash to represent the
-// headers means it's possible to have two conflicting values for a single
-// header.
-// 
-// The solution to this is to provide explicit methods to set or get headers.
-// This also has the benefit of allowing us to introduce additional variations,
-// including snake case, which we automatically convert to what Matthew King has
-// dubbed "corset case" - the hyphen-separated names with initial caps:
-// `Content-Type`. We use corset-case just in case we're dealing with servers
-// that haven't properly implemented the spec.
-
-// Convert headers to corset-case. **Example:** `CONTENT-TYPE` will be converted
-// to `Content-Type`.
-
-var corsetCase = function(string) {
-  return string.toLowerCase()
-      //.replace("_","-")
-      .replace(/(^|-)(\w)/g, 
-          function(s) { return s.toUpperCase(); });
-};
-
-// We suspect that `initializeHeaders` was once more complicated ...
-var initializeHeaders = function(object) {
-  return {};
-};
-
-// Access the `_headers` property using lazy initialization. **Warning:** If you
-// mix this into an object that is using the `_headers` property already, you're
-// going to have trouble.
-var $H = function(object) {
-  return object._headers||(object._headers=initializeHeaders(object));
-};
-
-// Hide the implementations as private functions, separate from how we expose them.
-
-// The "real" `getHeader` function: get the header after normalizing the name.
-var getHeader = function(object,name) {
-  return $H(object)[corsetCase(name)];
-};
-
-// The "real" `getHeader` function: get one or more headers, or all of them
-// if you don't ask for any specifics. 
-var getHeaders = function(object,names) {
-  var keys = (names && names.length>0) ? names : Object.keys($H(object));
-  var hash = keys.reduce(function(hash,key) {
-    hash[key] = getHeader(object,key);
-    return hash;
-  },{});
-  // Freeze the resulting hash so you don't mistakenly think you're modifying
-  // the real headers.
-  Object.freeze(hash);
-  return hash;
-};
-
-// The "real" `setHeader` function: set a header, after normalizing the name.
-var setHeader = function(object,name,value) {
-  $H(object)[corsetCase(name)] = value;
-  return object;
-};
-
-// The "real" `setHeaders` function: set multiple headers based on a hash.
-var setHeaders = function(object,hash) {
-  for( var key in hash ) { setHeader(object,key,hash[key]); };
-  return this;
-};
-
-// Here's where we actually bind the functionality to an object. These mixins work by
-// exposing mixin functions. Each function mixes in a specific batch of features.
-module.exports = {
-  
-  // Add getters.
-  getters: function(constructor) {
-    constructor.prototype.getHeader = function(name) { return getHeader(this,name); };
-    constructor.prototype.getHeaders = function() { return getHeaders(this,arguments); };
-  },
-  // Add setters but as "private" methods.
-  privateSetters: function(constructor) {
-    constructor.prototype._setHeader = function(key,value) { return setHeader(this,key,value); };
-    constructor.prototype._setHeaders = function(hash) { return setHeaders(this,hash); };
-  },
-  // Add setters.
-  setters: function(constructor) {
-    constructor.prototype.setHeader = function(key,value) { return setHeader(this,key,value); };
-    constructor.prototype.setHeaders = function(hash) { return setHeaders(this,hash); };
-  },
-  // Add both getters and setters.
-  gettersAndSetters: function(constructor) {
-    constructor.prototype.getHeader = function(name) { return getHeader(this,name); };
-    constructor.prototype.getHeaders = function() { return getHeaders(this,arguments); };
-    constructor.prototype.setHeader = function(key,value) { return setHeader(this,key,value); };
-    constructor.prototype.setHeaders = function(hash) { return setHeaders(this,hash); };
-  },
-};
-
-});
-
-require.define("/node_modules/iconv-lite/package.json", function (require, module, exports, __dirname, __filename) {
-    module.exports = {}
-});
-
-require.define("/node_modules/iconv-lite/index.js", function (require, module, exports, __dirname, __filename) {
-    // Module exports
-var iconv = module.exports = {
-    toEncoding: function(str, encoding) {
-        return iconv.getCodec(encoding).toEncoding(str);
-    },
-    fromEncoding: function(buf, encoding) {
-        return iconv.getCodec(encoding).fromEncoding(buf);
-    },
-    
-    defaultCharUnicode: '�',
-    defaultCharSingleByte: '?',
-    
-    // Get correct codec for given encoding.
-    getCodec: function(encoding) {
-        var enc = encoding || "utf8";
-        var codecOptions = undefined;
-        while (1) {
-            if (getType(enc) === "String")
-                enc = enc.replace(/[- ]/g, "").toLowerCase();
-            var codec = iconv.encodings[enc];
-            var type = getType(codec);
-            if (type === "String") {
-                // Link to other encoding.
-                codecOptions = {originalEncoding: enc};
-                enc = codec;
-            }
-            else if (type === "Object" && codec.type != undefined) {
-                // Options for other encoding.
-                codecOptions = codec;
-                enc = codec.type;
-            } 
-            else if (type === "Function")
-                // Codec itself.
-                return codec(codecOptions);
-            else
-                throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')");
-        }
-    },
-    
-    // Define basic encodings
-    encodings: {
-        internal: function(options) {
-            return {
-                toEncoding: function(str) {
-                    return new Buffer(ensureString(str), options.originalEncoding);
-                },
-                fromEncoding: function(buf) {
-                    return ensureBuffer(buf).toString(options.originalEncoding);
-                }
-            };
-        },
-        utf8: "internal",
-        ucs2: "internal",
-        binary: "internal",
-        ascii: "internal",
-        base64: "internal",
-        
-        // Codepage single-byte encodings.
-        singlebyte: function(options) {
-            // Prepare chars if needed
-            if (!options.chars || (options.chars.length !== 128 && options.chars.length !== 256))
-                throw new Error("Encoding '"+options.type+"' has incorrect 'chars' (must be of len 128 or 256)");
-            
-            if (options.chars.length === 128)
-                options.chars = asciiString + options.chars;
-            
-            if (!options.charsBuf) {
-                options.charsBuf = new Buffer(options.chars, 'ucs2');
-            }
-            
-            if (!options.revCharsBuf) {
-                options.revCharsBuf = new Buffer(65536);
-                var defChar = iconv.defaultCharSingleByte.charCodeAt(0);
-                for (var i = 0; i < options.revCharsBuf.length; i++)
-                    options.revCharsBuf[i] = defChar;
-                for (var i = 0; i < options.chars.length; i++)
-                    options.revCharsBuf[options.chars.charCodeAt(i)] = i;
-            }
-            
-            return {
-                toEncoding: function(str) {
-                    str = ensureString(str);
-                    
-                    var buf = new Buffer(str.length);
-                    var revCharsBuf = options.revCharsBuf;
-                    for (var i = 0; i < str.length; i++)
-                        buf[i] = revCharsBuf[str.charCodeAt(i)];
-                    
-                    return buf;
-                },
-                fromEncoding: function(buf) {
-                    buf = ensureBuffer(buf);
-                    
-                    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.
-                    var charsBuf = options.charsBuf;
-                    var newBuf = new Buffer(buf.length*2);
-                    var idx1 = 0, idx2 = 0;
-                    for (var i = 0, _len = buf.length; i < _len; i++) {
-                        idx1 = buf[i]*2; idx2 = i*2;
-                        newBuf[idx2] = charsBuf[idx1];
-                        newBuf[idx2+1] = charsBuf[idx1+1];
-                    }
-                    return newBuf.toString('ucs2');
-                }
-            };
-        },
-
-        // Codepage double-byte encodings.
-        table: function(options) {
-            var table = options.table, key, revCharsTable = options.revCharsTable;
-            if (!table) {
-                throw new Error("Encoding '" + options.type +"' has incorect 'table' option");
-            }
-            if(!revCharsTable) {
-                revCharsTable = options.revCharsTable = {};
-                for (key in table) {
-                    revCharsTable[table[key]] = parseInt(key);
-                }
-            }
-            
-            return {
-                toEncoding: function(str) {
-                    str = ensureString(str);
-                    var strLen = str.length;
-                    var bufLen = strLen;
-                    for (var i = 0; i < strLen; i++)
-                        if (str.charCodeAt(i) >> 7)
-                            bufLen++;
-
-                    var newBuf = new Buffer(bufLen), gbkcode, unicode, 
-                        defaultChar = revCharsTable[iconv.defaultCharUnicode.charCodeAt(0)];
-
-                    for (var i = 0, j = 0; i < strLen; i++) {
-                        unicode = str.charCodeAt(i);
-                        if (unicode >> 7) {
-                            gbkcode = revCharsTable[unicode] || defaultChar;
-                            newBuf[j++] = gbkcode >> 8; //high byte;
-                            newBuf[j++] = gbkcode & 0xFF; //low byte
-                        } else {//ascii
-                            newBuf[j++] = unicode;
-                        }
-                    }
-                    return newBuf;
-                },
-                fromEncoding: function(buf) {
-                    buf = ensureBuffer(buf);
-                    var bufLen = buf.length, strLen = 0;
-                    for (var i = 0; i < bufLen; i++) {
-                        strLen++;
-                        if (buf[i] & 0x80) //the high bit is 1, so this byte is gbkcode's high byte.skip next byte
-                            i++;
-                    }
-                    var newBuf = new Buffer(strLen*2), unicode, gbkcode,
-                        defaultChar = iconv.defaultCharUnicode.charCodeAt(0);
-                    
-                    for (var i = 0, j = 0; i < bufLen; i++, j+=2) {
-                        gbkcode = buf[i];
-                        if (gbkcode & 0x80) {
-                            gbkcode = (gbkcode << 8) + buf[++i];
-                            unicode = table[gbkcode] || defaultChar;
-                        } else {
-                            unicode = gbkcode;
-                        }
-                        newBuf[j] = unicode & 0xFF; //low byte
-                        newBuf[j+1] = unicode >> 8; //high byte
-                    }
-                    return newBuf.toString('ucs2');
-                }
-            }
-        }
-    }
-};
-
-// Add aliases to convert functions
-iconv.encode = iconv.toEncoding;
-iconv.decode = iconv.fromEncoding;
-
-// Load other encodings from files in /encodings dir.
-var encodingsDir = __dirname+"/encodings/",
-    fs = require('fs');
-fs.readdirSync(encodingsDir).forEach(function(file) {
-    if(fs.statSync(encodingsDir + file).isDirectory()) return;
-    var encodings = require(encodingsDir + file)
-    for (var key in encodings)
-        iconv.encodings[key] = encodings[key]
-});
-
-// Utilities
-var asciiString = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f'+
-              ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f';
-
-var ensureBuffer = function(buf) {
-    buf = buf || new Buffer(0);
-    return (buf instanceof Buffer) ? buf : new Buffer(buf.toString(), "utf8");
-}
-
-var ensureString = function(str) {
-    str = str || "";
-    return (str instanceof String) ? str : str.toString((str instanceof Buffer) ? 'utf8' : undefined);
-}
-
-var getType = function(obj) {
-    return Object.prototype.toString.call(obj).slice(8, -1);
-}
-
-
-});
-
-require.define("/node_modules/http-browserify/package.json", function (require, module, exports, __dirname, __filename) {
-    module.exports = {"main":"index.js","browserify":"browser.js"}
-});
-
-require.define("/node_modules/http-browserify/browser.js", function (require, module, exports, __dirname, __filename) {
-    var http = module.exports;
-var EventEmitter = require('events').EventEmitter;
-var Request = require('./lib/request');
-
-http.request = function (params, cb) {
-    if (!params) params = {};
-    if (!params.host) params.host = window.location.host.split(':')[0];
-    if (!params.port) params.port = window.location.port;
-    
-    var req = new Request(new xhrHttp, params);
-    if (cb) req.on('response', cb);
-    return req;
-};
-
-http.get = function (params, cb) {
-    params.method = 'GET';
-    var req = http.request(params, cb);
-    req.end();
-    return req;
-};
-
-var xhrHttp = (function () {
-    if (typeof window === 'undefined') {
-        throw new Error('no window object present');
-    }
-    else if (window.XMLHttpRequest) {
-        return window.XMLHttpRequest;
-    }
-    else if (window.ActiveXObject) {
-        var axs = [
-            'Msxml2.XMLHTTP.6.0',
-            'Msxml2.XMLHTTP.3.0',
-            'Microsoft.XMLHTTP'
-        ];
-        for (var i = 0; i < axs.length; i++) {
-            try {
-                var ax = new(window.ActiveXObject)(axs[i]);
-                return function () {
-                    if (ax) {
-                        var ax_ = ax;
-                        ax = null;
-                        return ax_;
-                    }
-                    else {
-                        return new(window.ActiveXObject)(axs[i]);
-                    }
-                };
-            }
-            catch (e) {}
-        }
-        throw new Error('ajax not supported in this browser')
-    }
-    else {
-        throw new Error('ajax not supported in this browser');
-    }
-})();
-
-http.STATUS_CODES = {
-    100 : 'Continue',
-    101 : 'Switching Protocols',
-    102 : 'Processing', // RFC 2518, obsoleted by RFC 4918
-    200 : 'OK',
-    201 : 'Created',
-    202 : 'Accepted',
-    203 : 'Non-Authoritative Information',
-    204 : 'No Content',
-    205 : 'Reset Content',
-    206 : 'Partial Content',
-    207 : 'Multi-Status', // RFC 4918
-    300 : 'Multiple Choices',
-    301 : 'Moved Permanently',
-    302 : 'Moved Temporarily',
-    303 : 'See Other',
-    304 : 'Not Modified',
-    305 : 'Use Proxy',
-    307 : 'Temporary Redirect',
-    400 : 'Bad Request',
-    401 : 'Unauthorized',
-    402 : 'Payment Required',
-    403 : 'Forbidden',
-    404 : 'Not Found',
-    405 : 'Method Not Allowed',
-    406 : 'Not Acceptable',
-    407 : 'Proxy Authentication Required',
-    408 : 'Request Time-out',
-    409 : 'Conflict',
-    410 : 'Gone',
-    411 : 'Length Required',
-    412 : 'Precondition Failed',
-    413 : 'Request Entity Too Large',
-    414 : 'Request-URI Too Large',
-    415 : 'Unsupported Media Type',
-    416 : 'Requested Range Not Satisfiable',
-    417 : 'Expectation Failed',
-    418 : 'I\'m a teapot', // RFC 2324
-    422 : 'Unprocessable Entity', // RFC 4918
-    423 : 'Locked', // RFC 4918
-    424 : 'Failed Dependency', // RFC 4918
-    425 : 'Unordered Collection', // RFC 4918
-    426 : 'Upgrade Required', // RFC 2817
-    500 : 'Internal Server Error',
-    501 : 'Not Implemented',
-    502 : 'Bad Gateway',
-    503 : 'Service Unavailable',
-    504 : 'Gateway Time-out',
-    505 : 'HTTP Version not supported',
-    506 : 'Variant Also Negotiates', // RFC 2295
-    507 : 'Insufficient Storage', // RFC 4918
-    509 : 'Bandwidth Limit Exceeded',
-    510 : 'Not Extended' // RFC 2774
-};
-
-});
-
-require.define("/node_modules/http-browserify/lib/request.js", function (require, module, exports, __dirname, __filename) {
-    var EventEmitter = require('events').EventEmitter;
-var Response = require('./response');
-var isSafeHeader = require('./isSafeHeader');
-
-var Request = module.exports = function (xhr, params) {
-    var self = this;
-    self.xhr = xhr;
-    self.body = '';
-    
-    var uri = params.host + ':' + params.port + (params.path || '/');
-    
-    xhr.open(
-        params.method || 'GET',
-        (params.scheme || 'http') + '://' + uri,
-        true
-    );
-    
-    if (params.headers) {
-        Object.keys(params.headers).forEach(function (key) {
-            if (!isSafeHeader(key)) return;
-            var value = params.headers[key];
-            if (Array.isArray(value)) {
-                value.forEach(function (v) {
-                    xhr.setRequestHeader(key, v);
-                });
-            }
-            else xhr.setRequestHeader(key, value)
-        });
-    }
-    
-    var res = new Response(xhr);
-    res.on('ready', function () {
-        self.emit('response', res);
-    });
-    
-    xhr.onreadystatechange = function () {
-        res.handle(xhr);
-    };
-};
-
-Request.prototype = new EventEmitter;
-
-Request.prototype.setHeader = function (key, value) {
-    if ((Array.isArray && Array.isArray(value))
-    || value instanceof Array) {
-        for (var i = 0; i < value.length; i++) {
-            this.xhr.setRequestHeader(key, value[i]);
-        }
-    }
-    else {
-        this.xhr.setRequestHeader(key, value);
-    }
-};
-
-Request.prototype.write = function (s) {
-    this.body += s;
-};
-
-Request.prototype.end = function (s) {
-    if (s !== undefined) this.write(s);
-    this.xhr.send(this.body);
-};
-
-});
-
-require.define("/node_modules/http-browserify/lib/response.js", function (require, module, exports, __dirname, __filename) {
-    var EventEmitter = require('events').EventEmitter;
-var isSafeHeader = require('./isSafeHeader');
-
-var Response = module.exports = function (xhr) {
-    this.xhr = xhr;
-    this.offset = 0;
-};
-
-Response.prototype = new EventEmitter;
-
-var capable = {
-    streaming : true,
-    status2 : true
-};
-
-function parseHeaders (xhr) {
-    var lines = xhr.getAllResponseHeaders().split(/\r?\n/);
-    var headers = {};
-    for (var i = 0; i < lines.length; i++) {
-        var line = lines[i];
-        if (line === '') continue;
-        
-        var m = line.match(/^([^:]+):\s*(.*)/);
-        if (m) {
-            var key = m[1].toLowerCase(), value = m[2];
-            
-            if (headers[key] !== undefined) {
-                if ((Array.isArray && Array.isArray(headers[key]))
-                || headers[key] instanceof Array) {
-                    headers[key].push(value);
-                }
-                else {
-                    headers[key] = [ headers[key], value ];
-                }
-            }
-            else {
-                headers[key] = value;
-            }
-        }
-        else {
-            headers[line] = true;
-        }
-    }
-    return headers;
-}
-
-Response.prototype.getHeader = function (key) {
-    var header = this.headers ? this.headers[key.toLowerCase()] : null;
-    if (header) return header;
-
-    // Work around Mozilla bug #608735 [https://bugzil.la/608735], which causes
-    // getAllResponseHeaders() to return {} if the response is a CORS request.
-    // xhr.getHeader still works correctly.
-    if (isSafeHeader(key)) {
-      return this.xhr.getResponseHeader(key);
-    }
-    return null;
-};
-
-Response.prototype.handle = function () {
-    var xhr = this.xhr;
-    if (xhr.readyState === 2 && capable.status2) {
-        try {
-            this.statusCode = xhr.status;
-            this.headers = parseHeaders(xhr);
-        }
-        catch (err) {
-            capable.status2 = false;
-        }
-        
-        if (capable.status2) {
-            this.emit('ready');
-        }
-    }
-    else if (capable.streaming && xhr.readyState === 3) {
-        try {
-            if (!this.statusCode) {
-                this.statusCode = xhr.status;
-                this.headers = parseHeaders(xhr);
-                this.emit('ready');
-            }
-        }
-        catch (err) {}
-        
-        try {
-            this.write();
-        }
-        catch (err) {
-            capable.streaming = false;
-        }
-    }
-    else if (xhr.readyState === 4) {
-        if (!this.statusCode) {
-            this.statusCode = xhr.status;
-            this.emit('ready');
-        }
-        this.write();
-        
-        if (xhr.error) {
-            this.emit('error', xhr.responseText);
-        }
-        else this.emit('end');
-    }
-};
-
-Response.prototype.write = function () {
-    var xhr = this.xhr;
-    if (xhr.responseText.length > this.offset) {
-        this.emit('data', xhr.responseText.slice(this.offset));
-        this.offset = xhr.responseText.length;
-    }
-};
-
-});
-
-require.define("/node_modules/http-browserify/lib/isSafeHeader.js", function (require, module, exports, __dirname, __filename) {
-    // Taken from http://dxr.mozilla.org/mozilla/mozilla-central/content/base/src/nsXMLHttpRequest.cpp.html
-var unsafeHeaders = [
-    "accept-charset",
-    "accept-encoding",
-    "access-control-request-headers",
-    "access-control-request-method",
-    "connection",
-    "content-length",
-    "cookie",
-    "cookie2",
-    "content-transfer-encoding",
-    "date",
-    "expect",
-    "host",
-    "keep-alive",
-    "origin",
-    "referer",
-    "set-cookie",
-    "te",
-    "trailer",
-    "transfer-encoding",
-    "upgrade",
-    "user-agent",
-    "via"
-];
-
-module.exports = function (headerName) {
-    if (!headerName) return false;
-    return (unsafeHeaders.indexOf(headerName.toLowerCase()) === -1)
-};
-
-});
-
-require.alias("http-browserify", "/node_modules/http");
-
-require.alias("http-browserify", "/node_modules/https");
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/shred/content.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/shred/content.js
deleted file mode 100644 (file)
index b8051fe..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-
-// The purpose of the `Content` object is to abstract away the data conversions
-// to and from raw content entities as strings. For example, you want to be able
-// to pass in a Javascript object and have it be automatically converted into a
-// JSON string if the `content-type` is set to a JSON-based media type.
-// Conversely, you want to be able to transparently get back a Javascript object
-// in the response if the `content-type` is a JSON-based media-type.
-
-// One limitation of the current implementation is that it [assumes the `charset` is UTF-8](https://github.com/spire-io/shred/issues/5).
-
-// The `Content` constructor takes an options object, which *must* have either a
-// `body` or `data` property and *may* have a `type` property indicating the
-// media type. If there is no `type` attribute, a default will be inferred.
-var Content = function(options) {
-  this.body = options.body;
-  this.data = options.data;
-  this.type = options.type;
-};
-
-Content.prototype = {
-  // Treat `toString()` as asking for the `content.body`. That is, the raw content entity.
-  //
-  //     toString: function() { return this.body; }
-  //
-  // Commented out, but I've forgotten why. :/
-};
-
-
-// `Content` objects have the following attributes:
-Object.defineProperties(Content.prototype,{
-  
-// - **type**. Typically accessed as `content.type`, reflects the `content-type`
-//   header associated with the request or response. If not passed as an options
-//   to the constructor or set explicitly, it will infer the type the `data`
-//   attribute, if possible, and, failing that, will default to `text/plain`.
-  type: {
-    get: function() {
-      if (this._type) {
-        return this._type;
-      } else {
-        if (this._data) {
-          switch(typeof this._data) {
-            case "string": return "text/plain";
-            case "object": return "application/json";
-          }
-        }
-      }
-      return "text/plain";
-    },
-    set: function(value) {
-      this._type = value;
-      return this;
-    },
-    enumerable: true
-  },
-
-// - **data**. Typically accessed as `content.data`, reflects the content entity
-//   converted into Javascript data. This can be a string, if the `type` is, say,
-//   `text/plain`, but can also be a Javascript object. The conversion applied is
-//   based on the `processor` attribute. The `data` attribute can also be set
-//   directly, in which case the conversion will be done the other way, to infer
-//   the `body` attribute.
-  data: {
-    get: function() {
-      if (this._body) {
-        return this.processor.parser(this._body);
-      } else {
-        return this._data;
-      }
-    },
-    set: function(data) {
-      if (this._body&&data) Errors.setDataWithBody(this);
-      this._data = data;
-      return this;
-    },
-    enumerable: true
-  },
-
-// - **body**. Typically accessed as `content.body`, reflects the content entity
-//   as a UTF-8 string. It is the mirror of the `data` attribute. If you set the
-//   `data` attribute, the `body` attribute will be inferred and vice-versa. If
-//   you attempt to set both, an exception is raised.
-  body: {
-    get: function() {
-      if (this._data) {
-        return this.processor.stringify(this._data);
-      } else {
-        return this._body.toString();
-      }
-    },
-    set: function(body) {
-      if (this._data&&body) Errors.setBodyWithData(this);
-      this._body = body;
-      return this;
-    },
-    enumerable: true
-  },
-
-// - **processor**. The functions that will be used to convert to/from `data` and
-//   `body` attributes. You can add processors. The two that are built-in are for
-//   `text/plain`, which is basically an identity transformation and
-//   `application/json` and other JSON-based media types (including custom media
-//   types with `+json`). You can add your own processors. See below.
-  processor: {
-    get: function() {
-      var processor = Content.processors[this.type];
-      if (processor) {
-        return processor;
-      } else {
-        // Return the first processor that matches any part of the
-        // content type. ex: application/vnd.foobar.baz+json will match json.
-        var main = this.type.split(";")[0];
-        var parts = main.split(/\+|\//);
-        for (var i=0, l=parts.length; i < l; i++) {
-          processor = Content.processors[parts[i]]
-        }
-        return processor || {parser:identity,stringify:toString};
-      }
-    },
-    enumerable: true
-  },
-
-// - **length**. Typically accessed as `content.length`, returns the length in
-//   bytes of the raw content entity.
-  length: {
-    get: function() {
-      if (typeof Buffer !== 'undefined') {
-        return Buffer.byteLength(this.body);
-      }
-      return this.body.length;
-    }
-  }
-});
-
-Content.processors = {};
-
-// The `registerProcessor` function allows you to add your own processors to
-// convert content entities. Each processor consists of a Javascript object with
-// two properties:
-// - **parser**. The function used to parse a raw content entity and convert it
-//   into a Javascript data type.
-// - **stringify**. The function used to convert a Javascript data type into a
-//   raw content entity.
-Content.registerProcessor = function(types,processor) {
-  
-// You can pass an array of types that will trigger this processor, or just one.
-// We determine the array via duck-typing here.
-  if (types.forEach) {
-    types.forEach(function(type) {
-      Content.processors[type] = processor;
-    });
-  } else {
-    // If you didn't pass an array, we just use what you pass in.
-    Content.processors[types] = processor;
-  }
-};
-
-// Register the identity processor, which is used for text-based media types.
-var identity = function(x) { return x; }
-  , toString = function(x) { return x.toString(); }
-Content.registerProcessor(
-  ["text/html","text/plain","text"],
-  { parser: identity, stringify: toString });
-
-// Register the JSON processor, which is used for JSON-based media types.
-Content.registerProcessor(
-  ["application/json; charset=utf-8","application/json","json"],
-  {
-    parser: function(string) {
-      return JSON.parse(string);
-    },
-    stringify: function(data) {
-      return JSON.stringify(data); }});
-
-var qs = require('querystring');
-// Register the post processor, which is used for JSON-based media types.
-Content.registerProcessor(
-  ["application/x-www-form-urlencoded"],
-  { parser : qs.parse, stringify : qs.stringify });
-
-// Error functions are defined separately here in an attempt to make the code
-// easier to read.
-var Errors = {
-  setDataWithBody: function(object) {
-    throw new Error("Attempt to set data attribute of a content object " +
-        "when the body attributes was already set.");
-  },
-  setBodyWithData: function(object) {
-    throw new Error("Attempt to set body attribute of a content object " +
-        "when the data attributes was already set.");
-  }
-}
-module.exports = Content;
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/swagger.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/swagger.js
deleted file mode 100644 (file)
index e45e62f..0000000
+++ /dev/null
@@ -1,1244 +0,0 @@
-// Generated by CoffeeScript 1.6.3
-(function() {
-  var ApiKeyAuthorization, PasswordAuthorization, SwaggerApi, SwaggerAuthorizations, SwaggerHttp, SwaggerModel, SwaggerModelProperty, SwaggerOperation, SwaggerRequest, SwaggerResource,
-    __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
-
-  SwaggerApi = (function() {
-    SwaggerApi.prototype.url = "http://api.wordnik.com/v4/resources.json";
-
-    SwaggerApi.prototype.debug = false;
-
-    SwaggerApi.prototype.basePath = null;
-
-    SwaggerApi.prototype.authorizations = null;
-
-    SwaggerApi.prototype.authorizationScheme = null;
-
-    SwaggerApi.prototype.info = null;
-
-    function SwaggerApi(url, options) {
-      if (options == null) {
-        options = {};
-      }
-      if (url) {
-        if (url.url) {
-          options = url;
-        } else {
-          this.url = url;
-        }
-      } else {
-        options = url;
-      }
-      if (options.url != null) {
-        this.url = options.url;
-      }
-      if (options.success != null) {
-        this.success = options.success;
-      }
-      this.failure = options.failure != null ? options.failure : function() {};
-      this.progress = options.progress != null ? options.progress : function() {};
-      if (options.success != null) {
-        this.build();
-      }
-    }
-
-    SwaggerApi.prototype.build = function() {
-      var e, obj,
-        _this = this;
-      this.progress('fetching resource list: ' + this.url);
-      obj = {
-        url: this.url,
-        method: "get",
-        headers: {},
-        on: {
-          error: function(response) {
-            if (_this.url.substring(0, 4) !== 'http') {
-              return _this.fail('Please specify the protocol for ' + _this.url);
-            } else if (response.status === 0) {
-              return _this.fail('Can\'t read from server.  It may not have the appropriate access-control-origin settings.');
-            } else if (response.status === 404) {
-              return _this.fail('Can\'t read swagger JSON from ' + _this.url);
-            } else {
-              return _this.fail(response.status + ' : ' + response.statusText + ' ' + _this.url);
-            }
-          },
-          response: function(rawResponse) {
-            var response;
-            response = JSON.parse(rawResponse.content.data);
-            _this.swaggerVersion = response.swaggerVersion;
-            if (_this.swaggerVersion === "1.2") {
-              return _this.buildFromSpec(response);
-            } else {
-              return _this.buildFrom1_1Spec(response);
-            }
-          }
-        }
-      };
-      e = {};
-      if (typeof window !== 'undefined') {
-        e = window;
-      } else {
-        e = exports;
-      }
-      e.authorizations.apply(obj);
-      new SwaggerHttp().execute(obj);
-      return this;
-    };
-
-    SwaggerApi.prototype.buildFromSpec = function(response) {
-      var api, isApi, newName, operation, res, resource, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;
-      if (response.apiVersion != null) {
-        this.apiVersion = response.apiVersion;
-      }
-      this.apis = {};
-      this.apisArray = [];
-      this.produces = response.produces;
-      this.authSchemes = response.authorizations;
-      if (response.info != null) {
-        this.info = response.info;
-      }
-      isApi = false;
-      _ref = response.apis;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        api = _ref[_i];
-        if (api.operations) {
-          _ref1 = api.operations;
-          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-            operation = _ref1[_j];
-            isApi = true;
-          }
-        }
-      }
-      if (response.basePath) {
-        this.basePath = response.basePath;
-      } else if (this.url.indexOf('?') > 0) {
-        this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
-      } else {
-        this.basePath = this.url;
-      }
-      if (isApi) {
-        newName = response.resourcePath.replace(/\//g, '');
-        this.resourcePath = response.resourcePath;
-        res = new SwaggerResource(response, this);
-        this.apis[newName] = res;
-        this.apisArray.push(res);
-      } else {
-        _ref2 = response.apis;
-        for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
-          resource = _ref2[_k];
-          res = new SwaggerResource(resource, this);
-          this.apis[res.name] = res;
-          this.apisArray.push(res);
-        }
-      }
-      if (this.success) {
-        this.success();
-      }
-      return this;
-    };
-
-    SwaggerApi.prototype.buildFrom1_1Spec = function(response) {
-      var api, isApi, newName, operation, res, resource, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;
-      console.log("This API is using a deprecated version of Swagger!  Please see http://github.com/wordnik/swagger-core/wiki for more info");
-      if (response.apiVersion != null) {
-        this.apiVersion = response.apiVersion;
-      }
-      this.apis = {};
-      this.apisArray = [];
-      this.produces = response.produces;
-      if (response.info != null) {
-        this.info = response.info;
-      }
-      isApi = false;
-      _ref = response.apis;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        api = _ref[_i];
-        if (api.operations) {
-          _ref1 = api.operations;
-          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-            operation = _ref1[_j];
-            isApi = true;
-          }
-        }
-      }
-      if (response.basePath) {
-        this.basePath = response.basePath;
-      } else if (this.url.indexOf('?') > 0) {
-        this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
-      } else {
-        this.basePath = this.url;
-      }
-      if (isApi) {
-        newName = response.resourcePath.replace(/\//g, '');
-        this.resourcePath = response.resourcePath;
-        res = new SwaggerResource(response, this);
-        this.apis[newName] = res;
-        this.apisArray.push(res);
-      } else {
-        _ref2 = response.apis;
-        for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
-          resource = _ref2[_k];
-          res = new SwaggerResource(resource, this);
-          this.apis[res.name] = res;
-          this.apisArray.push(res);
-        }
-      }
-      if (this.success) {
-        this.success();
-      }
-      return this;
-    };
-
-    SwaggerApi.prototype.selfReflect = function() {
-      var resource, resource_name, _ref;
-      if (this.apis == null) {
-        return false;
-      }
-      _ref = this.apis;
-      for (resource_name in _ref) {
-        resource = _ref[resource_name];
-        if (resource.ready == null) {
-          return false;
-        }
-      }
-      this.setConsolidatedModels();
-      this.ready = true;
-      if (this.success != null) {
-        return this.success();
-      }
-    };
-
-    SwaggerApi.prototype.fail = function(message) {
-      this.failure(message);
-      throw message;
-    };
-
-    SwaggerApi.prototype.setConsolidatedModels = function() {
-      var model, modelName, resource, resource_name, _i, _len, _ref, _ref1, _results;
-      this.modelsArray = [];
-      this.models = {};
-      _ref = this.apis;
-      for (resource_name in _ref) {
-        resource = _ref[resource_name];
-        for (modelName in resource.models) {
-          if (this.models[modelName] == null) {
-            this.models[modelName] = resource.models[modelName];
-            this.modelsArray.push(resource.models[modelName]);
-          }
-        }
-      }
-      _ref1 = this.modelsArray;
-      _results = [];
-      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-        model = _ref1[_i];
-        _results.push(model.setReferencedModels(this.models));
-      }
-      return _results;
-    };
-
-    SwaggerApi.prototype.help = function() {
-      var operation, operation_name, parameter, resource, resource_name, _i, _len, _ref, _ref1, _ref2;
-      _ref = this.apis;
-      for (resource_name in _ref) {
-        resource = _ref[resource_name];
-        console.log(resource_name);
-        _ref1 = resource.operations;
-        for (operation_name in _ref1) {
-          operation = _ref1[operation_name];
-          console.log("  " + operation.nickname);
-          _ref2 = operation.parameters;
-          for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-            parameter = _ref2[_i];
-            console.log("    " + parameter.name + (parameter.required ? ' (required)' : '') + " - " + parameter.description);
-          }
-        }
-      }
-      return this;
-    };
-
-    return SwaggerApi;
-
-  })();
-
-  SwaggerResource = (function() {
-    SwaggerResource.prototype.api = null;
-
-    SwaggerResource.prototype.produces = null;
-
-    SwaggerResource.prototype.consumes = null;
-
-    function SwaggerResource(resourceObj, api) {
-      var consumes, e, obj, parts, produces,
-        _this = this;
-      this.api = api;
-      this.api = this.api;
-      produces = [];
-      consumes = [];
-      this.path = this.api.resourcePath != null ? this.api.resourcePath : resourceObj.path;
-      this.description = resourceObj.description;
-      parts = this.path.split("/");
-      this.name = parts[parts.length - 1].replace('.{format}', '');
-      this.basePath = this.api.basePath;
-      this.operations = {};
-      this.operationsArray = [];
-      this.modelsArray = [];
-      this.models = {};
-      if ((resourceObj.apis != null) && (this.api.resourcePath != null)) {
-        this.addApiDeclaration(resourceObj);
-      } else {
-        if (this.path == null) {
-          this.api.fail("SwaggerResources must have a path.");
-        }
-        if (this.path.substring(0, 4) === 'http') {
-          this.url = this.path.replace('{format}', 'json');
-        } else {
-          this.url = this.api.basePath + this.path.replace('{format}', 'json');
-        }
-        this.api.progress('fetching resource ' + this.name + ': ' + this.url);
-        obj = {
-          url: this.url,
-          method: "get",
-          headers: {},
-          on: {
-            error: function(response) {
-              return _this.api.fail("Unable to read api '" + _this.name + "' from path " + _this.url + " (server returned " + response.statusText + ")");
-            },
-            response: function(rawResponse) {
-              var response;
-              response = JSON.parse(rawResponse.content.data);
-              return _this.addApiDeclaration(response);
-            }
-          }
-        };
-        e = {};
-        if (typeof window !== 'undefined') {
-          e = window;
-        } else {
-          e = exports;
-        }
-        e.authorizations.apply(obj);
-        new SwaggerHttp().execute(obj);
-      }
-    }
-
-    SwaggerResource.prototype.addApiDeclaration = function(response) {
-      var endpoint, _i, _len, _ref;
-      if (response.produces != null) {
-        this.produces = response.produces;
-      }
-      if (response.consumes != null) {
-        this.consumes = response.consumes;
-      }
-      if ((response.basePath != null) && response.basePath.replace(/\s/g, '').length > 0) {
-        this.basePath = response.basePath;
-      }
-      this.addModels(response.models);
-      if (response.apis) {
-        _ref = response.apis;
-        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-          endpoint = _ref[_i];
-          this.addOperations(endpoint.path, endpoint.operations, response.consumes, response.produces);
-        }
-      }
-      this.api[this.name] = this;
-      this.ready = true;
-      return this.api.selfReflect();
-    };
-
-    SwaggerResource.prototype.addModels = function(models) {
-      var model, modelName, swaggerModel, _i, _len, _ref, _results;
-      if (models != null) {
-        for (modelName in models) {
-          if (this.models[modelName] == null) {
-            swaggerModel = new SwaggerModel(modelName, models[modelName]);
-            this.modelsArray.push(swaggerModel);
-            this.models[modelName] = swaggerModel;
-          }
-        }
-        _ref = this.modelsArray;
-        _results = [];
-        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-          model = _ref[_i];
-          _results.push(model.setReferencedModels(this.models));
-        }
-        return _results;
-      }
-    };
-
-    SwaggerResource.prototype.addOperations = function(resource_path, ops, consumes, produces) {
-      var method, o, op, r, ref, responseMessages, type, _i, _j, _len, _len1, _results;
-      if (ops) {
-        _results = [];
-        for (_i = 0, _len = ops.length; _i < _len; _i++) {
-          o = ops[_i];
-          consumes = this.consumes;
-          produces = this.produces;
-          if (o.consumes != null) {
-            consumes = o.consumes;
-          } else {
-            consumes = this.consumes;
-          }
-          if (o.produces != null) {
-            produces = o.produces;
-          } else {
-            produces = this.produces;
-          }
-          type = o.type || o.responseClass;
-          if (type === "array") {
-            ref = null;
-            if (o.items) {
-              ref = o.items["type"] || o.items["$ref"];
-            }
-            type = "array[" + ref + "]";
-          }
-          responseMessages = o.responseMessages;
-          method = o.method;
-          if (o.httpMethod) {
-            method = o.httpMethod;
-          }
-          if (o.supportedContentTypes) {
-            consumes = o.supportedContentTypes;
-          }
-          if (o.errorResponses) {
-            responseMessages = o.errorResponses;
-            for (_j = 0, _len1 = responseMessages.length; _j < _len1; _j++) {
-              r = responseMessages[_j];
-              r.message = r.reason;
-              r.reason = null;
-            }
-          }
-          o.nickname = this.sanitize(o.nickname);
-          op = new SwaggerOperation(o.nickname, resource_path, method, o.parameters, o.summary, o.notes, type, responseMessages, this, consumes, produces);
-          this.operations[op.nickname] = op;
-          _results.push(this.operationsArray.push(op));
-        }
-        return _results;
-      }
-    };
-
-    SwaggerResource.prototype.sanitize = function(nickname) {
-      var op;
-      op = nickname.replace(/[\s!@#$%^&*()_+=\[{\]};:<>|./?,\\'""-]/g, '_');
-      op = op.replace(/((_){2,})/g, '_');
-      op = op.replace(/^(_)*/g, '');
-      op = op.replace(/([_])*$/g, '');
-      return op;
-    };
-
-    SwaggerResource.prototype.help = function() {
-      var msg, operation, operation_name, parameter, _i, _len, _ref, _ref1, _results;
-      _ref = this.operations;
-      _results = [];
-      for (operation_name in _ref) {
-        operation = _ref[operation_name];
-        msg = "  " + operation.nickname;
-        _ref1 = operation.parameters;
-        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-          parameter = _ref1[_i];
-          msg.concat("    " + parameter.name + (parameter.required ? ' (required)' : '') + " - " + parameter.description);
-        }
-        _results.push(msg);
-      }
-      return _results;
-    };
-
-    return SwaggerResource;
-
-  })();
-
-  SwaggerModel = (function() {
-    function SwaggerModel(modelName, obj) {
-      var prop, propertyName, value;
-      this.name = obj.id != null ? obj.id : modelName;
-      this.properties = [];
-      for (propertyName in obj.properties) {
-        if (obj.required != null) {
-          for (value in obj.required) {
-            if (propertyName === obj.required[value]) {
-              obj.properties[propertyName].required = true;
-            }
-          }
-        }
-        prop = new SwaggerModelProperty(propertyName, obj.properties[propertyName]);
-        this.properties.push(prop);
-      }
-    }
-
-    SwaggerModel.prototype.setReferencedModels = function(allModels) {
-      var prop, type, _i, _len, _ref, _results;
-      _ref = this.properties;
-      _results = [];
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        prop = _ref[_i];
-        type = prop.type || prop.dataType;
-        if (allModels[type] != null) {
-          _results.push(prop.refModel = allModels[type]);
-        } else if ((prop.refDataType != null) && (allModels[prop.refDataType] != null)) {
-          _results.push(prop.refModel = allModels[prop.refDataType]);
-        } else {
-          _results.push(void 0);
-        }
-      }
-      return _results;
-    };
-
-    SwaggerModel.prototype.getMockSignature = function(modelsToIgnore) {
-      var classClose, classOpen, prop, propertiesStr, returnVal, strong, strongClose, stronger, _i, _j, _len, _len1, _ref, _ref1;
-      propertiesStr = [];
-      _ref = this.properties;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        prop = _ref[_i];
-        propertiesStr.push(prop.toString());
-      }
-      strong = '<span class="strong">';
-      stronger = '<span class="stronger">';
-      strongClose = '</span>';
-      classOpen = strong + this.name + ' {' + strongClose;
-      classClose = strong + '}' + strongClose;
-      returnVal = classOpen + '<div>' + propertiesStr.join(',</div><div>') + '</div>' + classClose;
-      if (!modelsToIgnore) {
-        modelsToIgnore = [];
-      }
-      modelsToIgnore.push(this);
-      _ref1 = this.properties;
-      for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-        prop = _ref1[_j];
-        if ((prop.refModel != null) && (modelsToIgnore.indexOf(prop.refModel)) === -1) {
-          returnVal = returnVal + ('<br>' + prop.refModel.getMockSignature(modelsToIgnore));
-        }
-      }
-      return returnVal;
-    };
-
-    SwaggerModel.prototype.createJSONSample = function(modelsToIgnore) {
-      var prop, result, _i, _len, _ref;
-      result = {};
-      modelsToIgnore = modelsToIgnore || [];
-      modelsToIgnore.push(this.name);
-      _ref = this.properties;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        prop = _ref[_i];
-        result[prop.name] = prop.getSampleValue(modelsToIgnore);
-      }
-      modelsToIgnore.pop(this.name);
-      return result;
-    };
-
-    return SwaggerModel;
-
-  })();
-
-  SwaggerModelProperty = (function() {
-    function SwaggerModelProperty(name, obj) {
-      this.name = name;
-      this.dataType = obj.type || obj.dataType || obj["$ref"];
-      this.isCollection = this.dataType && (this.dataType.toLowerCase() === 'array' || this.dataType.toLowerCase() === 'list' || this.dataType.toLowerCase() === 'set');
-      this.descr = obj.description;
-      this.required = obj.required;
-      if (obj.items != null) {
-        if (obj.items.type != null) {
-          this.refDataType = obj.items.type;
-        }
-        if (obj.items.$ref != null) {
-          this.refDataType = obj.items.$ref;
-        }
-      }
-      this.dataTypeWithRef = this.refDataType != null ? this.dataType + '[' + this.refDataType + ']' : this.dataType;
-      if (obj.allowableValues != null) {
-        this.valueType = obj.allowableValues.valueType;
-        this.values = obj.allowableValues.values;
-        if (this.values != null) {
-          this.valuesString = "'" + this.values.join("' or '") + "'";
-        }
-      }
-      if (obj["enum"] != null) {
-        this.valueType = "string";
-        this.values = obj["enum"];
-        if (this.values != null) {
-          this.valueString = "'" + this.values.join("' or '") + "'";
-        }
-      }
-    }
-
-    SwaggerModelProperty.prototype.getSampleValue = function(modelsToIgnore) {
-      var result;
-      if ((this.refModel != null) && (modelsToIgnore.indexOf(this.refModel.name) === -1)) {
-        result = this.refModel.createJSONSample(modelsToIgnore);
-      } else {
-        if (this.isCollection) {
-          result = this.refDataType;
-        } else {
-          result = this.dataType;
-        }
-      }
-      if (this.isCollection) {
-        return [result];
-      } else {
-        return result;
-      }
-    };
-
-    SwaggerModelProperty.prototype.toString = function() {
-      var req, str;
-      req = this.required ? 'propReq' : 'propOpt';
-      str = '<span class="propName ' + req + '">' + this.name + '</span> (<span class="propType">' + this.dataTypeWithRef + '</span>';
-      if (!this.required) {
-        str += ', <span class="propOptKey">optional</span>';
-      }
-      str += ')';
-      if (this.values != null) {
-        str += " = <span class='propVals'>['" + this.values.join("' or '") + "']</span>";
-      }
-      if (this.descr != null) {
-        str += ': <span class="propDesc">' + this.descr + '</span>';
-      }
-      return str;
-    };
-
-    return SwaggerModelProperty;
-
-  })();
-
-  SwaggerOperation = (function() {
-    function SwaggerOperation(nickname, path, method, parameters, summary, notes, type, responseMessages, resource, consumes, produces) {
-      var parameter, v, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3,
-        _this = this;
-      this.nickname = nickname;
-      this.path = path;
-      this.method = method;
-      this.parameters = parameters != null ? parameters : [];
-      this.summary = summary;
-      this.notes = notes;
-      this.type = type;
-      this.responseMessages = responseMessages;
-      this.resource = resource;
-      this.consumes = consumes;
-      this.produces = produces;
-      this["do"] = __bind(this["do"], this);
-      if (this.nickname == null) {
-        this.resource.api.fail("SwaggerOperations must have a nickname.");
-      }
-      if (this.path == null) {
-        this.resource.api.fail("SwaggerOperation " + nickname + " is missing path.");
-      }
-      if (this.method == null) {
-        this.resource.api.fail("SwaggerOperation " + nickname + " is missing method.");
-      }
-      this.path = this.path.replace('{format}', 'json');
-      this.method = this.method.toLowerCase();
-      this.isGetMethod = this.method === "get";
-      this.resourceName = this.resource.name;
-      if (((_ref = this.type) != null ? _ref.toLowerCase() : void 0) === 'void') {
-        this.type = void 0;
-      }
-      if (this.type != null) {
-        this.responseClassSignature = this.getSignature(this.type, this.resource.models);
-        this.responseSampleJSON = this.getSampleJSON(this.type, this.resource.models);
-      }
-      this.responseMessages = this.responseMessages || [];
-      _ref1 = this.parameters;
-      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-        parameter = _ref1[_i];
-        parameter.name = parameter.name || parameter.type || parameter.dataType;
-        type = parameter.type || parameter.dataType;
-        if (type.toLowerCase() === 'boolean') {
-          parameter.allowableValues = {};
-          parameter.allowableValues.values = ["true", "false"];
-        }
-        parameter.signature = this.getSignature(type, this.resource.models);
-        parameter.sampleJSON = this.getSampleJSON(type, this.resource.models);
-        if (parameter["enum"] != null) {
-          parameter.isList = true;
-          parameter.allowableValues = {};
-          parameter.allowableValues.descriptiveValues = [];
-          _ref2 = parameter["enum"];
-          for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
-            v = _ref2[_j];
-            if ((parameter.defaultValue != null) && parameter.defaultValue === v) {
-              parameter.allowableValues.descriptiveValues.push({
-                value: v,
-                isDefault: true
-              });
-            } else {
-              parameter.allowableValues.descriptiveValues.push({
-                value: v,
-                isDefault: false
-              });
-            }
-          }
-        }
-        if (parameter.allowableValues != null) {
-          if (parameter.allowableValues.valueType === "RANGE") {
-            parameter.isRange = true;
-          } else {
-            parameter.isList = true;
-          }
-          if (parameter.allowableValues.values != null) {
-            parameter.allowableValues.descriptiveValues = [];
-            _ref3 = parameter.allowableValues.values;
-            for (_k = 0, _len2 = _ref3.length; _k < _len2; _k++) {
-              v = _ref3[_k];
-              if ((parameter.defaultValue != null) && parameter.defaultValue === v) {
-                parameter.allowableValues.descriptiveValues.push({
-                  value: v,
-                  isDefault: true
-                });
-              } else {
-                parameter.allowableValues.descriptiveValues.push({
-                  value: v,
-                  isDefault: false
-                });
-              }
-            }
-          }
-        }
-      }
-      this.resource[this.nickname] = function(args, callback, error) {
-        return _this["do"](args, callback, error);
-      };
-      this.resource[this.nickname].help = function() {
-        return _this.help();
-      };
-    }
-
-    SwaggerOperation.prototype.isListType = function(type) {
-      if (type.indexOf('[') >= 0) {
-        return type.substring(type.indexOf('[') + 1, type.indexOf(']'));
-      } else {
-        return void 0;
-      }
-    };
-
-    SwaggerOperation.prototype.getSignature = function(type, models) {
-      var isPrimitive, listType;
-      listType = this.isListType(type);
-      isPrimitive = ((listType != null) && models[listType]) || (models[type] != null) ? false : true;
-      if (isPrimitive) {
-        return type;
-      } else {
-        if (listType != null) {
-          return models[listType].getMockSignature();
-        } else {
-          return models[type].getMockSignature();
-        }
-      }
-    };
-
-    SwaggerOperation.prototype.getSampleJSON = function(type, models) {
-      var isPrimitive, listType, val;
-      listType = this.isListType(type);
-      isPrimitive = ((listType != null) && models[listType]) || (models[type] != null) ? false : true;
-      val = isPrimitive ? void 0 : (listType != null ? models[listType].createJSONSample() : models[type].createJSONSample());
-      if (val) {
-        val = listType ? [val] : val;
-        return JSON.stringify(val, null, 2);
-      }
-    };
-
-    SwaggerOperation.prototype["do"] = function(args, opts, callback, error) {
-      var key, param, params, possibleParams, req, requestContentType, responseContentType, value, _i, _len, _ref;
-      if (args == null) {
-        args = {};
-      }
-      if (opts == null) {
-        opts = {};
-      }
-      requestContentType = null;
-      responseContentType = null;
-      if ((typeof args) === "function") {
-        error = opts;
-        callback = args;
-        args = {};
-      }
-      if ((typeof opts) === "function") {
-        error = callback;
-        callback = opts;
-      }
-      if (error == null) {
-        error = function(xhr, textStatus, error) {
-          return console.log(xhr, textStatus, error);
-        };
-      }
-      if (callback == null) {
-        callback = function(data) {
-          var content;
-          content = null;
-          if (data.content != null) {
-            content = data.content.data;
-          } else {
-            content = "no data";
-          }
-          return console.log("default callback: " + content);
-        };
-      }
-      params = {};
-      params.headers = [];
-      if (args.headers != null) {
-        params.headers = args.headers;
-        delete args.headers;
-      }
-      _ref = this.parameters;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        param = _ref[_i];
-        if (param.paramType === "header") {
-          if (args[param.name]) {
-            params.headers[param.name] = args[param.name];
-          }
-        }
-      }
-      if (args.body != null) {
-        params.body = args.body;
-        delete args.body;
-      }
-      possibleParams = (function() {
-        var _j, _len1, _ref1, _results;
-        _ref1 = this.parameters;
-        _results = [];
-        for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-          param = _ref1[_j];
-          if (param.paramType === "form" || param.paramType.toLowerCase() === "file") {
-            _results.push(param);
-          }
-        }
-        return _results;
-      }).call(this);
-      if (possibleParams) {
-        for (key in possibleParams) {
-          value = possibleParams[key];
-          if (args[value.name]) {
-            params[value.name] = args[value.name];
-          }
-        }
-      }
-      req = new SwaggerRequest(this.method, this.urlify(args), params, opts, callback, error, this);
-      if (opts.mock != null) {
-        return req;
-      } else {
-        return true;
-      }
-    };
-
-    SwaggerOperation.prototype.pathJson = function() {
-      return this.path.replace("{format}", "json");
-    };
-
-    SwaggerOperation.prototype.pathXml = function() {
-      return this.path.replace("{format}", "xml");
-    };
-
-    SwaggerOperation.prototype.urlify = function(args) {
-      var param, queryParams, reg, url, _i, _j, _len, _len1, _ref, _ref1;
-      url = this.resource.basePath + this.pathJson();
-      _ref = this.parameters;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        param = _ref[_i];
-        if (param.paramType === 'path') {
-          if (args[param.name]) {
-            reg = new RegExp('\{' + param.name + '[^\}]*\}', 'gi');
-            url = url.replace(reg, encodeURIComponent(args[param.name]));
-            delete args[param.name];
-          } else {
-            throw "" + param.name + " is a required path param.";
-          }
-        }
-      }
-      queryParams = "";
-      _ref1 = this.parameters;
-      for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-        param = _ref1[_j];
-        if (param.paramType === 'query') {
-          if (args[param.name]) {
-            if (queryParams !== "") {
-              queryParams += "&";
-            }
-            queryParams += encodeURIComponent(param.name) + '=' + encodeURIComponent(args[param.name]);
-          }
-        }
-      }
-      if ((queryParams != null) && queryParams.length > 0) {
-        url += "?" + queryParams;
-      }
-      return url;
-    };
-
-    SwaggerOperation.prototype.supportHeaderParams = function() {
-      return this.resource.api.supportHeaderParams;
-    };
-
-    SwaggerOperation.prototype.supportedSubmitMethods = function() {
-      return this.resource.api.supportedSubmitMethods;
-    };
-
-    SwaggerOperation.prototype.getQueryParams = function(args) {
-      return this.getMatchingParams(['query'], args);
-    };
-
-    SwaggerOperation.prototype.getHeaderParams = function(args) {
-      return this.getMatchingParams(['header'], args);
-    };
-
-    SwaggerOperation.prototype.getMatchingParams = function(paramTypes, args) {
-      var matchingParams, name, param, value, _i, _len, _ref, _ref1;
-      matchingParams = {};
-      _ref = this.parameters;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        param = _ref[_i];
-        if (args && args[param.name]) {
-          matchingParams[param.name] = args[param.name];
-        }
-      }
-      _ref1 = this.resource.api.headers;
-      for (name in _ref1) {
-        value = _ref1[name];
-        matchingParams[name] = value;
-      }
-      return matchingParams;
-    };
-
-    SwaggerOperation.prototype.help = function() {
-      var msg, parameter, _i, _len, _ref;
-      msg = "";
-      _ref = this.parameters;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        parameter = _ref[_i];
-        if (msg !== "") {
-          msg += "\n";
-        }
-        msg += "* " + parameter.name + (parameter.required ? ' (required)' : '') + " - " + parameter.description;
-      }
-      return msg;
-    };
-
-    return SwaggerOperation;
-
-  })();
-
-  SwaggerRequest = (function() {
-    function SwaggerRequest(type, url, params, opts, successCallback, errorCallback, operation, execution) {
-      var body, e, fields, headers, key, myHeaders, name, obj, param, parent, possibleParams, requestContentType, responseContentType, urlEncoded, value, values,
-        _this = this;
-      this.type = type;
-      this.url = url;
-      this.params = params;
-      this.opts = opts;
-      this.successCallback = successCallback;
-      this.errorCallback = errorCallback;
-      this.operation = operation;
-      this.execution = execution;
-      if (this.type == null) {
-        throw "SwaggerRequest type is required (get/post/put/delete).";
-      }
-      if (this.url == null) {
-        throw "SwaggerRequest url is required.";
-      }
-      if (this.successCallback == null) {
-        throw "SwaggerRequest successCallback is required.";
-      }
-      if (this.errorCallback == null) {
-        throw "SwaggerRequest error callback is required.";
-      }
-      if (this.operation == null) {
-        throw "SwaggerRequest operation is required.";
-      }
-      this.type = this.type.toUpperCase();
-      headers = params.headers;
-      myHeaders = {};
-      body = params.body;
-      parent = params["parent"];
-      requestContentType = "application/json";
-      if (body && (this.type === "POST" || this.type === "PUT" || this.type === "PATCH")) {
-        if (this.opts.requestContentType) {
-          requestContentType = this.opts.requestContentType;
-        }
-      } else {
-        if (((function() {
-          var _i, _len, _ref, _results;
-          _ref = this.operation.parameters;
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            param = _ref[_i];
-            if (param.paramType === "form") {
-              _results.push(param);
-            }
-          }
-          return _results;
-        }).call(this)).length > 0) {
-          type = param.type || param.dataType;
-          if (((function() {
-            var _i, _len, _ref, _results;
-            _ref = this.operation.parameters;
-            _results = [];
-            for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-              param = _ref[_i];
-              if (type.toLowerCase() === "file") {
-                _results.push(param);
-              }
-            }
-            return _results;
-          }).call(this)).length > 0) {
-            requestContentType = "multipart/form-data";
-          } else {
-            requestContentType = "application/x-www-form-urlencoded";
-          }
-        } else if (this.type !== "DELETE") {
-          requestContentType = null;
-        }
-      }
-      if (requestContentType && this.operation.consumes) {
-        if (this.operation.consumes.indexOf(requestContentType) === -1) {
-          console.log("server doesn't consume " + requestContentType + ", try " + JSON.stringify(this.operation.consumes));
-          if (this.requestContentType === null) {
-            requestContentType = this.operation.consumes[0];
-          }
-        }
-      }
-      responseContentType = null;
-      if (this.type === "POST" || this.type === "GET" || this.type === "PATCH") {
-        if (this.opts.responseContentType) {
-          responseContentType = this.opts.responseContentType;
-        } else {
-          responseContentType = "application/json";
-        }
-      } else {
-        responseContentType = null;
-      }
-      if (responseContentType && this.operation.produces) {
-        if (this.operation.produces.indexOf(responseContentType) === -1) {
-          console.log("server can't produce " + responseContentType);
-        }
-      }
-      if (requestContentType && requestContentType.indexOf("application/x-www-form-urlencoded") === 0) {
-        fields = {};
-        possibleParams = (function() {
-          var _i, _len, _ref, _results;
-          _ref = this.operation.parameters;
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            param = _ref[_i];
-            if (param.paramType === "form") {
-              _results.push(param);
-            }
-          }
-          return _results;
-        }).call(this);
-        values = {};
-        for (key in possibleParams) {
-          value = possibleParams[key];
-          if (this.params[value.name]) {
-            values[value.name] = this.params[value.name];
-          }
-        }
-        urlEncoded = "";
-        for (key in values) {
-          value = values[key];
-          if (urlEncoded !== "") {
-            urlEncoded += "&";
-          }
-          urlEncoded += encodeURIComponent(key) + '=' + encodeURIComponent(value);
-        }
-        body = urlEncoded;
-      }
-      for (name in headers) {
-        myHeaders[name] = headers[name];
-      }
-      if (requestContentType) {
-        myHeaders["Content-Type"] = requestContentType;
-      }
-      if (responseContentType) {
-        myHeaders["Accept"] = responseContentType;
-      }
-      if (!((headers != null) && (headers.mock != null))) {
-        obj = {
-          url: this.url,
-          method: this.type,
-          headers: myHeaders,
-          body: body,
-          on: {
-            error: function(response) {
-              return _this.errorCallback(response, _this.opts.parent);
-            },
-            redirect: function(response) {
-              return _this.successCallback(response, _this.opts.parent);
-            },
-            307: function(response) {
-              return _this.successCallback(response, _this.opts.parent);
-            },
-            response: function(response) {
-              return _this.successCallback(response, _this.opts.parent);
-            }
-          }
-        };
-        e = {};
-        if (typeof window !== 'undefined') {
-          e = window;
-        } else {
-          e = exports;
-        }
-        e.authorizations.apply(obj);
-        if (opts.mock == null) {
-          new SwaggerHttp().execute(obj);
-        } else {
-          console.log(obj);
-          return obj;
-        }
-      }
-    }
-
-    SwaggerRequest.prototype.asCurl = function() {
-      var header_args, k, v;
-      header_args = (function() {
-        var _ref, _results;
-        _ref = this.headers;
-        _results = [];
-        for (k in _ref) {
-          v = _ref[k];
-          _results.push("--header \"" + k + ": " + v + "\"");
-        }
-        return _results;
-      }).call(this);
-      return "curl " + (header_args.join(" ")) + " " + this.url;
-    };
-
-    return SwaggerRequest;
-
-  })();
-
-  SwaggerHttp = (function() {
-    SwaggerHttp.prototype.Shred = null;
-
-    SwaggerHttp.prototype.shred = null;
-
-    SwaggerHttp.prototype.content = null;
-
-    function SwaggerHttp() {
-      var identity, toString,
-        _this = this;
-      if (typeof window !== 'undefined') {
-        this.Shred = require("./shred");
-      } else {
-        this.Shred = require("shred");
-      }
-      this.shred = new this.Shred();
-      identity = function(x) {
-        return x;
-      };
-      toString = function(x) {
-        return x.toString();
-      };
-      if (typeof window !== 'undefined') {
-        this.content = require("./shred/content");
-        this.content.registerProcessor(["application/json; charset=utf-8", "application/json", "json"], {
-          parser: identity,
-          stringify: toString
-        });
-      } else {
-        this.Shred.registerProcessor(["application/json; charset=utf-8", "application/json", "json"], {
-          parser: identity,
-          stringify: toString
-        });
-      }
-    }
-
-    SwaggerHttp.prototype.execute = function(obj) {
-      return this.shred.request(obj);
-    };
-
-    return SwaggerHttp;
-
-  })();
-
-  SwaggerAuthorizations = (function() {
-    SwaggerAuthorizations.prototype.authz = null;
-
-    function SwaggerAuthorizations() {
-      this.authz = {};
-    }
-
-    SwaggerAuthorizations.prototype.add = function(name, auth) {
-      this.authz[name] = auth;
-      return auth;
-    };
-
-    SwaggerAuthorizations.prototype.apply = function(obj) {
-      var key, value, _ref, _results;
-      _ref = this.authz;
-      _results = [];
-      for (key in _ref) {
-        value = _ref[key];
-        _results.push(value.apply(obj));
-      }
-      return _results;
-    };
-
-    return SwaggerAuthorizations;
-
-  })();
-
-  ApiKeyAuthorization = (function() {
-    ApiKeyAuthorization.prototype.type = null;
-
-    ApiKeyAuthorization.prototype.name = null;
-
-    ApiKeyAuthorization.prototype.value = null;
-
-    function ApiKeyAuthorization(name, value, type) {
-      this.name = name;
-      this.value = value;
-      this.type = type;
-    }
-
-    ApiKeyAuthorization.prototype.apply = function(obj) {
-      if (this.type === "query") {
-        if (obj.url.indexOf('?') > 0) {
-          obj.url = obj.url + "&" + this.name + "=" + this.value;
-        } else {
-          obj.url = obj.url + "?" + this.name + "=" + this.value;
-        }
-        return true;
-      } else if (this.type === "header") {
-        return obj.headers[this.name] = this.value;
-      }
-    };
-
-    return ApiKeyAuthorization;
-
-  })();
-
-  PasswordAuthorization = (function() {
-    PasswordAuthorization.prototype.name = null;
-
-    PasswordAuthorization.prototype.username = null;
-
-    PasswordAuthorization.prototype.password = null;
-
-    function PasswordAuthorization(name, username, password) {
-      this.name = name;
-      this.username = username;
-      this.password = password;
-    }
-
-    PasswordAuthorization.prototype.apply = function(obj) {
-      return obj.headers["Authorization"] = "Basic " + btoa(this.username + ":" + this.password);
-    };
-
-    return PasswordAuthorization;
-
-  })();
-
-  this.SwaggerApi = SwaggerApi;
-
-  this.SwaggerResource = SwaggerResource;
-
-  this.SwaggerOperation = SwaggerOperation;
-
-  this.SwaggerRequest = SwaggerRequest;
-
-  this.SwaggerModelProperty = SwaggerModelProperty;
-
-  this.ApiKeyAuthorization = ApiKeyAuthorization;
-
-  this.PasswordAuthorization = PasswordAuthorization;
-
-  this.authorizations = new SwaggerAuthorizations();
-
-}).call(this);
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/underscore-min.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/lib/underscore-min.js
deleted file mode 100644 (file)
index 5a0cb3b..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-// Underscore.js 1.3.3
-// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the MIT license.
-// Portions of Underscore are inspired or borrowed from Prototype,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore
-(function(){function r(a,c,d){if(a===c)return 0!==a||1/a==1/c;if(null==a||null==c)return a===c;a._chain&&(a=a._wrapped);c._chain&&(c=c._wrapped);if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return!1;switch(e){case "[object String]":return a==""+c;case "[object Number]":return a!=+a?c!=+c:0==a?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
-c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if("object"!=typeof a||"object"!=typeof c)return!1;for(var f=d.length;f--;)if(d[f]==a)return!0;d.push(a);var f=0,g=!0;if("[object Array]"==e){if(f=a.length,g=f==c.length)for(;f--&&(g=f in a==f in c&&r(a[f],c[f],d)););}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return!1;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&r(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,h)&&!f--)break;
-g=!f}}d.pop();return g}var s=this,I=s._,o={},k=Array.prototype,p=Object.prototype,i=k.slice,J=k.unshift,l=p.toString,K=p.hasOwnProperty,y=k.forEach,z=k.map,A=k.reduce,B=k.reduceRight,C=k.filter,D=k.every,E=k.some,q=k.indexOf,F=k.lastIndexOf,p=Array.isArray,L=Object.keys,t=Function.prototype.bind,b=function(a){return new m(a)};"undefined"!==typeof exports?("undefined"!==typeof module&&module.exports&&(exports=module.exports=b),exports._=b):s._=b;b.VERSION="1.3.3";var j=b.each=b.forEach=function(a,
-c,d){if(a!=null)if(y&&a.forEach===y)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===o)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===o)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(z&&a.map===z)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(A&&
-a.reduce===A){e&&(c=b.bind(c,e));return f?a.reduce(c,d):a.reduce(c)}j(a,function(a,b,i){if(f)d=c.call(e,d,a,b,i);else{d=a;f=true}});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(B&&a.reduceRight===B){e&&(c=b.bind(c,e));return f?a.reduceRight(c,d):a.reduceRight(c)}var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=function(a,
-c,b){var e;G(a,function(a,g,h){if(c.call(b,a,g,h)){e=a;return true}});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(C&&a.filter===C)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(D&&a.every===D)return a.every(c,b);j(a,function(a,g,h){if(!(e=e&&c.call(b,
-a,g,h)))return o});return!!e};var G=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(E&&a.some===E)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return o});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;if(q&&a.indexOf===q)return a.indexOf(c)!=-1;return b=G(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
-function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a)&&a[0]===+a[0])return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a)&&a[0]===+a[0])return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&
-(e={value:a,computed:b})});return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){d=Math.floor(Math.random()*(f+1));b[f]=b[d];b[d]=a});return b};b.sortBy=function(a,c,d){var e=b.isFunction(c)?c:function(a){return a[c]};return b.pluck(b.map(a,function(a,b,c){return{value:a,criteria:e.call(d,a,b,c)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c===void 0?1:d===void 0?-1:c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};
-j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:b.isArray(a)||b.isArguments(a)?i.call(a):a.toArray&&b.isFunction(a.toArray)?a.toArray():b.values(a)};b.size=function(a){return b.isArray(a)?a.length:b.keys(a).length};b.first=b.head=b.take=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,
-0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,
-e=[];a.length<3&&(c=true);b.reduce(d,function(d,g,h){if(c?b.last(d)!==g||!d.length:!b.include(d,g)){d.push(g);e.push(a[h])}return d},[]);return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1),true);return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=
-i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,d){if(a==null)return-1;var e;if(d){d=b.sortedIndex(a,c);return a[d]===c?d:-1}if(q&&a.indexOf===q)return a.indexOf(c);d=0;for(e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(F&&a.lastIndexOf===F)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){if(arguments.length<=
-1){b=a||0;a=0}for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;){g[f++]=a;a=a+d}return g};var H=function(){};b.bind=function(a,c){var d,e;if(a.bind===t&&t)return t.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));H.prototype=a.prototype;var b=new H,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=
-i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(null,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i,j=b.debounce(function(){h=
-g=false},c);return function(){d=this;e=arguments;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);j()},c));g?h=true:i=a.apply(d,e);j();g=true;return i}};b.debounce=function(a,b,d){var e;return function(){var f=this,g=arguments;d&&!e&&a.apply(f,g);clearTimeout(e);e=setTimeout(function(){e=null;d||a.apply(f,g)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));
-return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=L||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&
-c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.pick=function(a){var c={};j(b.flatten(i.call(arguments,1)),function(b){b in a&&(c[b]=a[b])});return c};b.defaults=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return r(a,b,[])};b.isEmpty=
-function(a){if(a==null)return true;if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=p||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};b.isArguments=function(a){return l.call(a)=="[object Arguments]"};b.isArguments(arguments)||(b.isArguments=function(a){return!(!a||!b.has(a,"callee"))});b.isFunction=function(a){return l.call(a)=="[object Function]"};
-b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isFinite=function(a){return b.isNumber(a)&&isFinite(a)};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,
-b){return K.call(a,b)};b.noConflict=function(){s._=I;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.result=function(a,c){if(a==null)return null;var d=a[c];return b.isFunction(d)?d.call(a):d};b.mixin=function(a){j(b.functions(a),function(c){M(c,b[c]=a[c])})};var N=0;b.uniqueId=
-function(a){var b=N++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var u=/.^/,n={"\\":"\\","'":"'",r:"\r",n:"\n",t:"\t",u2028:"\u2028",u2029:"\u2029"},v;for(v in n)n[n[v]]=v;var O=/\\|'|\r|\n|\t|\u2028|\u2029/g,P=/\\(\\|'|r|n|t|u2028|u2029)/g,w=function(a){return a.replace(P,function(a,b){return n[b]})};b.template=function(a,c,d){d=b.defaults(d||{},b.templateSettings);a="__p+='"+a.replace(O,function(a){return"\\"+n[a]}).replace(d.escape||
-u,function(a,b){return"'+\n_.escape("+w(b)+")+\n'"}).replace(d.interpolate||u,function(a,b){return"'+\n("+w(b)+")+\n'"}).replace(d.evaluate||u,function(a,b){return"';\n"+w(b)+"\n;__p+='"})+"';\n";d.variable||(a="with(obj||{}){\n"+a+"}\n");var a="var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};\n"+a+"return __p;\n",e=new Function(d.variable||"obj","_",a);if(c)return e(c,b);c=function(a){return e.call(this,a,b)};c.source="function("+(d.variable||"obj")+"){\n"+a+"}";return c};
-b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var x=function(a,c){return c?b(a).chain():a},M=function(a,c){m.prototype[a]=function(){var a=i.call(arguments);J.call(a,this._wrapped);return x(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return x(d,
-this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return x(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/fonts.css b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/fonts.css
deleted file mode 100644 (file)
index 4825d09..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/* latin */
-@font-face {
-    font-family: 'Droid Sans';
-    font-style: normal;
-    font-weight: 400;
-    src: local('Droid Sans'), local('DroidSans'), url(http://fonts.gstatic.com/s/droidsans/v6/s-BiyweUPV0v-yRb-cjciAsYbbCjybiHxArTLjt7FRU.woff2) format('woff2');
-    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
-}
-/* latin */
-@font-face {
-    font-family: 'Droid Sans';
-    font-style: normal;
-    font-weight: 700;
-    src: local('Droid Sans Bold'), local('DroidSans-Bold'), url(http://fonts.gstatic.com/s/droidsans/v6/EFpQQyG9GqCrobXxL-KRMX9tREKe1lLHLCwOC24WjMs.woff2) format('woff2');
-    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/index.html b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/index.html
deleted file mode 100644 (file)
index 6a7f6aa..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <title>RestConf Documentation</title>
-    <link href='fonts.css'
-          rel='stylesheet' type='text/css' />   <!--original location: //fonts.googleapis.com/css?family=Droid+Sans:400,700 -->
-    <link href='../css/highlight.default.css' media='screen' rel='stylesheet'
-          type='text/css' />
-    <link href='../css/screen.css' media='screen' rel='stylesheet'
-          type='text/css' />
-    <link rel="stylesheet" type="text/css" href="opendaylight.css">
-    <link rel="stylesheet" type="text/css"
-          href="../css/ui-lightness/jquery-ui-1.10.4.custom.min.css">
-    <script type="text/javascript" src="../lib/shred.bundle.js"></script>
-    <script src='../lib/jquery-1.8.0.min.js' type='text/javascript'></script>
-    <script src='../lib/jquery-ui-1.11.0.min.js' type="text/javascript"></script>
-    <script src='../lib/jquery.slideto.min.js' type='text/javascript'></script>
-    <script src='../lib/jquery.wiggle.min.js' type='text/javascript'></script>
-    <script src='../lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
-    <script src='../lib/handlebars-1.0.0.js' type='text/javascript'></script>
-    <script src='../lib/underscore-min.js' type='text/javascript'></script>
-    <script src='../lib/backbone-min.js' type='text/javascript'></script>
-    <script src='swagger.js' type='text/javascript'></script>
-    <script src='swagger-ui.js' type='text/javascript'></script>
-    <script src='../lib/odl/list_mounts.js' type='text/javascript'></script>
-    <script src='../lib/highlight.7.3.pack.js' type='text/javascript'></script>
-    <script src='../lib/odl/swagger.js' type='text/javascript'></script>
-    <script src='resources.js' type='text/javascript'></script>
-
-    <script type="text/javascript">
-
-        //reloads the swagger UI documentation for the specified mount.
-        var loadMount = function(mountIndex, mountPath) {
-            $("#message").empty();
-            $("#message").append( "<p>Loading...</p>" );
-            loadSwagger("/apidoc/apis/mounts/" + mountIndex,
-                    "swagger-ui-container");
-            $("#message").empty();
-            $("#message").append( "<h2><b>Showing mount points for " + mountPath + "</b></h2>");
-        }
-
-        //clears the swagger UI and adds text prompting use to select a mount point.
-        var selectAMount = function(string) {
-            $("#swagger-ui-container").empty();
-            $("#message").empty();
-            $("#message").append("<p>Select a mount point.</p>");
-        }
-
-        //loads the root swagger documenation (which comes from RestConf)
-        var loadRootSwagger = function() {
-            $("#message").empty();
-            loadSwagger("/apidoc/apis", "swagger-ui-container");
-        }
-
-        //main method to initialize the mount list / swagger docs / tabs on page load
-        $(function() {
-            $("#tabs").tabs();
-
-            loadMountList($("#mountlist"));
-
-            loadRootSwagger();
-        });
-    </script>
-</head>
-
-<body>
-<div>
-    <!-- style="background-color: #FCA000;" -->
-    <div class="swagger-ui-wrap ui-tabs">
-        <table>
-            <tr>
-                <td><img src="../images/logo_small.png" /></td>
-                <td><h1 width="100%">OpenDaylight RestConf API
-                    Documentation</h1></td>
-            </tr>
-        </table>
-    </div>
-</div>
-
-<div class="navbar-inner">
-    <div class="brand"></div>
-</div>
-
-<!--  defines the div shells which represent the jquery tabs -->
-<div id="tabs" class="swagger-ui-wrap">
-    <ul>
-        <li><a href="#Controller" onclick="loadRootSwagger()">Controller
-            Resources</a></li>
-    </ul>
-
-    <div id="Controller">
-        <div>
-            <h3>Below are the list of APIs supported by the Controller.</h3>
-        </div>
-    </div>
-</div>
-
-<div class="swagger-ui-wrap"><hr/></div>
-
-<!-- messages -->
-<div id="message" class="swagger-ui-wrap"></div>
-
-<!-- the swagger is always loaded in this div -->
-<div id="swagger-ui-container" class="swagger-ui-wrap"></div>
-
-<div id="message-bar" class="swagger-ui-wrap">&nbsp;</div>
-</body>
-
-</html>
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/opendaylight.css b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/opendaylight.css
deleted file mode 100644 (file)
index 7579388..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-.fuelux [class^="icon-"],
-.fuelux [class*=" icon-"] {
-    display: inline-block;
-    width: 14px;
-    height: 14px;
-    margin-top: 1px;
-    *margin-right: .3em;
-    line-height: 14px;
-    vertical-align: text-top;
-    background-position: 14px 14px;
-    background-repeat: no-repeat;
-}
-
-.fuelux .icon-white,
-.fuelux .nav-pills > .active > a > [class^="icon-"],
-.fuelux .nav-pills > .active > a > [class*=" icon-"],
-.fuelux .nav-list > .active > a > [class^="icon-"],
-.fuelux .nav-list > .active > a > [class*=" icon-"],
-.fuelux .navbar-inverse .nav > .active > a > [class^="icon-"],
-.fuelux .navbar-inverse .nav > .active > a > [class*=" icon-"],
-.fuelux .dropdown-menu > li > a:hover > [class^="icon-"],
-.fuelux .dropdown-menu > li > a:focus > [class^="icon-"],
-.fuelux .dropdown-menu > li > a:hover > [class*=" icon-"],
-.fuelux .dropdown-menu > li > a:focus > [class*=" icon-"],
-.fuelux .dropdown-menu > .active > a > [class^="icon-"],
-.fuelux .dropdown-menu > .active > a > [class*=" icon-"],
-.fuelux .dropdown-submenu:hover > a > [class^="icon-"],
-.fuelux .dropdown-submenu:focus > a > [class^="icon-"],
-.fuelux .dropdown-submenu:hover > a > [class*=" icon-"],
-.fuelux .dropdown-submenu:focus > a > [class*=" icon-"] {
-}
-
-.fuelux .icon-search {
-    background:url('../img/search.png') 0 0 no-repeat;
-    height: 16px;
-    line-height: 16px;
-    width: 16px;
-}
-.fuelux .icon-remove {
-    background:url('../img/searchremove.png') 0 0 no-repeat;
-    height: 16px;
-    line-height: 16px;
-    width: 16px;
-}
-
-.fuelux .icon-chevron-up {
-    background:url('../img/sort_up.png') 0 0 no-repeat;
-    height: 16px;
-    line-height: 16px;
-    width: 16px;
-}
-
-.fuelux .icon-chevron-down {
-    background:url('../img/sort_down.png') 0 0 no-repeat;
-    height: 16px;
-    line-height: 16px;
-    width: 16px;
-}
-
-.fuelux .icon-chevron-left {
-    background:url('../img/nextpageleft.png') 0 0 no-repeat;
-    height: 16px;
-    line-height: 16px;
-    width: 16px;
-}
-
-.fuelux .icon-chevron-right {
-    background:url('../img/nextpageright.png') 0 0 no-repeat;
-    height: 16px;
-    line-height: 16px;
-    width: 16px;
-}
-
-.fuelux .icon-chevron-right {
-    background:url('../img/nextpageright.png') 0 0 no-repeat;
-    height: 16px;
-    line-height: 16px;
-    width: 16px;
-}
-
-.tip {
-    background-color: white;
-    border: 1px solid #CCCCCC;
-    box-shadow: 2px 2px 8px #555555;
-    color: #111111;
-    font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;
-    font-size: 14px;
-    opacity: 0.9;
-    padding: 7px;
-    width: 260px;
-    border-radius: 8px;
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/swagger-ui.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/swagger-ui.js
deleted file mode 100644 (file)
index aabab7c..0000000
+++ /dev/null
@@ -1,2114 +0,0 @@
-$(function() {
-
-  // Helper function for vertically aligning DOM elements
-  // http://www.seodenver.com/simple-vertical-align-plugin-for-jquery/
-  $.fn.vAlign = function() {
-    return this.each(function(i){
-      var ah = $(this).height();
-      var ph = $(this).parent().height();
-      var mh = (ph - ah) / 2;
-      $(this).css('margin-top', mh);
-    });
-  };
-
-  $.fn.stretchFormtasticInputWidthToParent = function() {
-    return this.each(function(i){
-      var p_width = $(this).closest("form").innerWidth();
-      var p_padding = parseInt($(this).closest("form").css('padding-left') ,10) + parseInt($(this).closest("form").css('padding-right'), 10);
-      var this_padding = parseInt($(this).css('padding-left'), 10) + parseInt($(this).css('padding-right'), 10);
-      $(this).css('width', p_width - p_padding - this_padding);
-    });
-  };
-
-  $('form.formtastic li.string input, form.formtastic textarea').stretchFormtasticInputWidthToParent();
-
-  // Vertically center these paragraphs
-  // Parent may need a min-height for this to work..
-  $('ul.downplayed li div.content p').vAlign();
-
-  // When a sandbox form is submitted..
-  $("form.sandbox").submit(function(){
-
-    var error_free = true;
-
-    // Cycle through the forms required inputs
-    $(this).find("input.required").each(function() {
-
-      // Remove any existing error styles from the input
-      $(this).removeClass('error');
-
-      // Tack the error style on if the input is empty..
-      if ($(this).val() == '') {
-        $(this).addClass('error');
-        $(this).wiggle();
-        error_free = false;
-      }
-
-    });
-
-    return error_free;
-  });
-
-});
-
-function clippyCopiedCallback(a) {
-  $('#api_key_copied').fadeIn().delay(1000).fadeOut();
-
-  // var b = $("#clippy_tooltip_" + a);
-  // b.length != 0 && (b.attr("title", "copied!").trigger("tipsy.reload"), setTimeout(function() {
-  //   b.attr("title", "copy to clipboard")
-  // },
-  // 500))
-}
-
-// Logging function that accounts for browsers that don't have window.console
-function log() {
-  if (window.console) console.log.apply(console,arguments);
-}
-// Handle browsers that do console incorrectly (IE9 and below, see http://stackoverflow.com/a/5539378/7913)
-if (Function.prototype.bind && console && typeof console.log == "object") {
-  [
-    "log","info","warn","error","assert","dir","clear","profile","profileEnd"
-  ].forEach(function (method) {
-      console[method] = this.bind(console[method], console);
-    }, Function.prototype.call);
-}
-
-var Docs = {
-
-  shebang: function() {
-
-    // If shebang has an operation nickname in it..
-    // e.g. /docs/#!/words/get_search
-    var fragments = $.param.fragment().split('/');
-    fragments.shift(); // get rid of the bang
-
-    switch (fragments.length) {
-      case 1:
-        // Expand all operations for the resource and scroll to it
-//                             log('shebang resource:' + fragments[0]);
-        var dom_id = 'resource_' + fragments[0];
-
-        Docs.expandEndpointListForResource(fragments[0]);
-        $("#"+dom_id).slideto({highlight: false});
-        break;
-      case 2:
-        // Refer to the endpoint DOM element, e.g. #words_get_search
-//                             log('shebang endpoint: ' + fragments.join('_'));
-
-        // Expand Resource
-        Docs.expandEndpointListForResource(fragments[0]);
-        $("#"+dom_id).slideto({highlight: false});
-
-        // Expand operation
-        var li_dom_id = fragments.join('_');
-        var li_content_dom_id = li_dom_id + "_content";
-
-//                log("li_dom_id " + li_dom_id);
-//                log("li_content_dom_id " + li_content_dom_id);
-
-        Docs.expandOperation($('#'+li_content_dom_id));
-        $('#'+li_dom_id).slideto({highlight: false});
-        break;
-    }
-
-  },
-
-  toggleEndpointListForResource: function(resource) {
-    var elem = $('li#resource_' + Docs.escapeResourceName(resource) + ' ul.endpoints');
-    if (elem.is(':visible')) {
-      Docs.collapseEndpointListForResource(resource);
-    } else {
-      Docs.expandEndpointListForResource(resource);
-    }
-  },
-
-  // Expand resource
-  expandEndpointListForResource: function(resource) {
-    var resource = Docs.escapeResourceName(resource);
-    if (resource == '') {
-      $('.resource ul.endpoints').slideDown();
-      return;
-    }
-
-    $('li#resource_' + resource).addClass('active');
-
-    var elem = $('li#resource_' + resource + ' ul.endpoints');
-    elem.slideDown();
-  },
-
-  // Collapse resource and mark as explicitly closed
-  collapseEndpointListForResource: function(resource) {
-    var resource = Docs.escapeResourceName(resource);
-    $('li#resource_' + resource).removeClass('active');
-
-    var elem = $('li#resource_' + resource + ' ul.endpoints');
-    elem.slideUp();
-  },
-
-  expandOperationsForResource: function(resource) {
-    // Make sure the resource container is open..
-    Docs.expandEndpointListForResource(resource);
-
-    if (resource == '') {
-      $('.resource ul.endpoints li.operation div.content').slideDown();
-      return;
-    }
-
-    $('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() {
-      Docs.expandOperation($(this));
-    });
-  },
-
-  collapseOperationsForResource: function(resource) {
-    // Make sure the resource container is open..
-    Docs.expandEndpointListForResource(resource);
-
-    $('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() {
-      Docs.collapseOperation($(this));
-    });
-  },
-
-  escapeResourceName: function(resource) {
-    return resource.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]\^`{|}~]/g, "\\$&");
-  },
-
-  expandOperation: function(elem) {
-    elem.slideDown();
-  },
-
-  collapseOperation: function(elem) {
-    elem.slideUp();
-  }
-
-};
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['content_type'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, functionType="function", self=this;
-
-    function program1(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n  ";
-      stack1 = helpers.each.call(depth0, depth0.produces, {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n";
-      return buffer;
-    }
-    function program2(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n    <option value=\"";
-      stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\">";
-      stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "</option>\n   ";
-      return buffer;
-    }
-
-    function program4(depth0,data) {
-
-
-      return "\n  <option value=\"application/json\">application/json</option>\n";
-    }
-
-    buffer += "<label for=\"contentType\"></label>\n<select name=\"contentType\">\n";
-    stack1 = helpers['if'].call(depth0, depth0.produces, {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n</select>\n";
-    return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['main'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
-
-    function program1(depth0,data) {
-
-      var buffer = "", stack1, stack2;
-      buffer += "\n    <div class=\"info_title\">"
-        + escapeExpression(((stack1 = ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
-        + "</div>\n    <div class=\"info_description\">";
-      stack2 = ((stack1 = ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.description)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1);
-      if(stack2 || stack2 === 0) { buffer += stack2; }
-      buffer += "</div>\n    ";
-      stack2 = helpers['if'].call(depth0, ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.termsOfServiceUrl), {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
-      if(stack2 || stack2 === 0) { buffer += stack2; }
-      buffer += "\n    ";
-      stack2 = helpers['if'].call(depth0, ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.contact), {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});
-      if(stack2 || stack2 === 0) { buffer += stack2; }
-      buffer += "\n    ";
-      stack2 = helpers['if'].call(depth0, ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.license), {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});
-      if(stack2 || stack2 === 0) { buffer += stack2; }
-      buffer += "\n  ";
-      return buffer;
-    }
-    function program2(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "<div class=\"info_tos\"><a href=\""
-        + escapeExpression(((stack1 = ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.termsOfServiceUrl)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
-        + "\">Terms of service</a></div>";
-      return buffer;
-    }
-
-    function program4(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "<div class='info_contact'><a href=\"mailto:"
-        + escapeExpression(((stack1 = ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.contact)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
-        + "\">Contact the developer</a></div>";
-      return buffer;
-    }
-
-    function program6(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "<div class='info_license'><a href='"
-        + escapeExpression(((stack1 = ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.licenseUrl)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
-        + "'>"
-        + escapeExpression(((stack1 = ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.license)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
-        + "</a></div>";
-      return buffer;
-    }
-
-    function program8(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n        , <span style=\"font-variant: small-caps\">api version</span>: ";
-      if (stack1 = helpers.apiVersion) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.apiVersion; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "\n        ";
-      return buffer;
-    }
-
-    buffer += "<div class='info' id='api_info'>\n  ";
-    stack1 = helpers['if'].call(depth0, depth0.info, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n</div>\n<div class='container' id='resources_container'>\n    <ul id='resources'>\n    </ul>\n\n    <div class=\"footer\">\n        <br>\n        <br>\n        <h4 style=\"color: #999\">[ <span style=\"font-variant: small-caps\">base url</span>: ";
-    if (stack1 = helpers.basePath) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.basePath; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "\n        ";
-    stack1 = helpers['if'].call(depth0, depth0.apiVersion, {hash:{},inverse:self.noop,fn:self.program(8, program8, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "]</h4>\n    </div>\n</div>\n";
-    return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['operation'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
-
-    function program1(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n        <h4>Implementation Notes</h4>\n        <p>";
-      if (stack1 = helpers.notes) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.notes; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "</p>\n        ";
-      return buffer;
-    }
-
-    function program3(depth0,data) {
-
-
-      return "\n          <h4>Response Class</h4>\n          <p><span class=\"model-signature\" /></p>\n          <br/>\n          <div class=\"response-content-type\" />\n        ";
-    }
-
-    function program5(depth0,data) {
-
-
-      return "\n          <h4>Parameters</h4>\n          <table class='fullwidth'>\n          <thead>\n            <tr>\n            <th style=\"width: 100px; max-width: 100px\">Parameter</th>\n            <th style=\"width: 310px; max-width: 310px\">Value</th>\n            <th style=\"width: 200px; max-width: 200px\">Description</th>\n            <th style=\"width: 100px; max-width: 100px\">Parameter Type</th>\n            <th style=\"width: 220px; max-width: 230px\">Data Type</th>\n            </tr>\n          </thead>\n          <tbody class=\"operation-params\">\n\n          </tbody>\n          </table>\n          ";
-    }
-
-    function program7(depth0,data) {
-
-
-      return "\n          <div style='margin:0;padding:0;display:inline'></div>\n          <h4>Error Status Codes</h4>\n          <table class='fullwidth'>\n            <thead>\n            <tr>\n              <th>HTTP Status Code</th>\n              <th>Reason</th>\n            </tr>\n            </thead>\n            <tbody class=\"operation-status\">\n            \n            </tbody>\n          </table>\n          ";
-    }
-
-    function program9(depth0,data) {
-
-
-      return "\n          ";
-    }
-
-    function program11(depth0,data) {
-
-
-      return "\n          <div class='sandbox_header'>\n            <a href='#' class='response_hider' style='display:none'>Hide Response</a>\n            <img alt='Throbber' class='response_throbber' src='../images/throbber.gif' style='display:none' />\n          </div>\n          ";
-    }
-
-    buffer += "\n  <ul class='operations' >\n    <li class='";
-    if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + " operation' id='";
-    if (stack1 = helpers.resourceName) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.resourceName; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_";
-    if (stack1 = helpers.nickname) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.nickname; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_";
-    if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_";
-    if (stack1 = helpers.number) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.number; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "'>\n      <div class='heading'>\n        <h3>\n          <span class='http_method'>\n          <a href='#!/";
-    if (stack1 = helpers.resourceName) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.resourceName; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "/";
-    if (stack1 = helpers.nickname) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.nickname; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_";
-    if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_";
-    if (stack1 = helpers.number) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.number; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "' class=\"toggleOperation\">";
-    if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "</a>\n          </span>\n          <span class='path'>\n          <a href='#!/";
-    if (stack1 = helpers.resourceName) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.resourceName; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "/";
-    if (stack1 = helpers.nickname) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.nickname; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_";
-    if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_";
-    if (stack1 = helpers.number) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.number; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "' class=\"toggleOperation\">";
-    if (stack1 = helpers.path) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.path; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "</a>\n          </span>\n        </h3>\n        <ul class='options'>\n          <li>\n          <a href='#!/";
-    if (stack1 = helpers.resourceName) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.resourceName; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "/";
-    if (stack1 = helpers.nickname) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.nickname; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_";
-    if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_";
-    if (stack1 = helpers.number) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.number; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "' class=\"toggleOperation\">";
-    if (stack1 = helpers.summary) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.summary; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "</a>\n          </li>\n        </ul>\n      </div>\n      <div class='content' id='";
-    if (stack1 = helpers.resourceName) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.resourceName; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_";
-    if (stack1 = helpers.nickname) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.nickname; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_";
-    if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_";
-    if (stack1 = helpers.number) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.number; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_content' style='display:none'>\n        ";
-    stack1 = helpers['if'].call(depth0, depth0.notes, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n        ";
-    stack1 = helpers['if'].call(depth0, depth0.type, {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n        <form accept-charset='UTF-8' class='sandbox'>\n          <div style='margin:0;padding:0;display:inline'></div>\n          ";
-    stack1 = helpers['if'].call(depth0, depth0.parameters, {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n          ";
-    stack1 = helpers['if'].call(depth0, depth0.responseMessages, {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n          ";
-    stack1 = helpers['if'].call(depth0, depth0.isReadOnly, {hash:{},inverse:self.program(11, program11, data),fn:self.program(9, program9, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n        </form>\n        <div class='response' style='display:none'>\n          <h4>Request URL</h4>\n          <div class='block request_url'></div>\n          <h4>Response Body</h4>\n          <div class='block response_body'></div>\n          <h4>Response Code</h4>\n          <div class='block response_code'></div>\n          <h4>Response Headers</h4>\n          <div class='block response_headers'></div>\n        </div>\n      </div>\n    </li>\n  </ul>\n";
-    return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['param'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
-
-    function program1(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n            ";
-      stack1 = helpers['if'].call(depth0, depth0.isFile, {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n    ";
-      return buffer;
-    }
-    function program2(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                    <input type=\"file\" name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'/>\n                       <div class=\"parameter-content-type\" />\n              ";
-      return buffer;
-    }
-
-    function program4(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                    ";
-      stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n            ";
-      return buffer;
-    }
-    function program5(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                            <textarea class='body-textarea' name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'>";
-      if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "</textarea>\n                       ";
-      return buffer;
-    }
-
-    function program7(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                            <textarea class='body-textarea' name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'></textarea>\n                             <br />\n                                <div class=\"parameter-content-type\" />\n                      ";
-      return buffer;
-    }
-
-    function program9(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n            ";
-      stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(12, program12, data),fn:self.program(10, program10, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n    ";
-      return buffer;
-    }
-    function program10(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                    <input class='parameter' minlength='0' name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "' placeholder='' type='text' value='";
-      if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'/>\n               ";
-      return buffer;
-    }
-
-    function program12(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                    <input class='parameter' minlength='0' name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "' placeholder='' type='text' value=''/>\n           ";
-      return buffer;
-    }
-
-    buffer += "<td class='code'>";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "</td>\n<td>\n\n       ";
-    stack1 = helpers['if'].call(depth0, depth0.isBody, {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n\n</td>\n<td>";
-    if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "</td>\n<td>";
-    if (stack1 = helpers.paramType) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.paramType; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "</td>\n<td>\n   <span class=\"model-signature\"></span>\n</td>\n";
-    return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['param_list'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, stack2, self=this, functionType="function", escapeExpression=this.escapeExpression;
-
-    function program1(depth0,data) {
-
-
-      return " multiple='multiple'";
-    }
-
-    function program3(depth0,data) {
-
-
-      return "\n    ";
-    }
-
-    function program5(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n      ";
-      stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(8, program8, data),fn:self.program(6, program6, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n    ";
-      return buffer;
-    }
-    function program6(depth0,data) {
-
-
-      return "\n      ";
-    }
-
-    function program8(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n        ";
-      stack1 = helpers['if'].call(depth0, depth0.allowMultiple, {hash:{},inverse:self.program(11, program11, data),fn:self.program(9, program9, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n      ";
-      return buffer;
-    }
-    function program9(depth0,data) {
-
-
-      return "\n         ";
-    }
-
-    function program11(depth0,data) {
-
-
-      return "\n          <option selected=\"\" value=''></option>\n         ";
-    }
-
-    function program13(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n      ";
-      stack1 = helpers['if'].call(depth0, depth0.isDefault, {hash:{},inverse:self.program(16, program16, data),fn:self.program(14, program14, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n    ";
-      return buffer;
-    }
-    function program14(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n        <option selected=\"\" value='";
-      if (stack1 = helpers.value) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.value; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'>";
-      if (stack1 = helpers.value) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.value; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + " (default)</option>\n      ";
-      return buffer;
-    }
-
-    function program16(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n        <option value='";
-      if (stack1 = helpers.value) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.value; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'>";
-      if (stack1 = helpers.value) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.value; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "</option>\n      ";
-      return buffer;
-    }
-
-    buffer += "<td class='code'>";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "</td>\n<td>\n  <select ";
-    stack1 = helpers['if'].call(depth0, depth0.allowMultiple, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += " class='parameter' name='";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "'>\n    ";
-    stack1 = helpers['if'].call(depth0, depth0.required, {hash:{},inverse:self.program(5, program5, data),fn:self.program(3, program3, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n    ";
-    stack2 = helpers.each.call(depth0, ((stack1 = depth0.allowableValues),stack1 == null || stack1 === false ? stack1 : stack1.descriptiveValues), {hash:{},inverse:self.noop,fn:self.program(13, program13, data),data:data});
-    if(stack2 || stack2 === 0) { buffer += stack2; }
-    buffer += "\n  </select>\n</td>\n<td>";
-    if (stack2 = helpers.description) { stack2 = stack2.call(depth0, {hash:{},data:data}); }
-    else { stack2 = depth0.description; stack2 = typeof stack2 === functionType ? stack2.apply(depth0) : stack2; }
-    if(stack2 || stack2 === 0) { buffer += stack2; }
-    buffer += "</td>\n<td>";
-    if (stack2 = helpers.paramType) { stack2 = stack2.call(depth0, {hash:{},data:data}); }
-    else { stack2 = depth0.paramType; stack2 = typeof stack2 === functionType ? stack2.apply(depth0) : stack2; }
-    if(stack2 || stack2 === 0) { buffer += stack2; }
-    buffer += "</td>\n<td><span class=\"model-signature\"></span></td>";
-    return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['param_readonly'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
-
-    function program1(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n        <textarea class='body-textarea' readonly='readonly' name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'>";
-      if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "</textarea>\n    ";
-      return buffer;
-    }
-
-    function program3(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n        ";
-      stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(6, program6, data),fn:self.program(4, program4, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n    ";
-      return buffer;
-    }
-    function program4(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n            ";
-      if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "\n        ";
-      return buffer;
-    }
-
-    function program6(depth0,data) {
-
-
-      return "\n            (empty)\n        ";
-    }
-
-    buffer += "<td class='code'>";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "</td>\n<td>\n    ";
-    stack1 = helpers['if'].call(depth0, depth0.isBody, {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n</td>\n<td>";
-    if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "</td>\n<td>";
-    if (stack1 = helpers.paramType) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.paramType; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "</td>\n<td><span class=\"model-signature\"></span></td>\n";
-    return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['param_readonly_required'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
-
-    function program1(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n        <textarea class='body-textarea'  readonly='readonly' placeholder='(required)' name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'>";
-      if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "</textarea>\n    ";
-      return buffer;
-    }
-
-    function program3(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n        ";
-      stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(6, program6, data),fn:self.program(4, program4, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n    ";
-      return buffer;
-    }
-    function program4(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n            ";
-      if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "\n        ";
-      return buffer;
-    }
-
-    function program6(depth0,data) {
-
-
-      return "\n            (empty)\n        ";
-    }
-
-    buffer += "<td class='code required'>";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "</td>\n<td>\n    ";
-    stack1 = helpers['if'].call(depth0, depth0.isBody, {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n</td>\n<td>";
-    if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "</td>\n<td>";
-    if (stack1 = helpers.paramType) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.paramType; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "</td>\n<td><span class=\"model-signature\"></span></td>\n";
-    return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['param_required'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
-
-    function program1(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n            ";
-      stack1 = helpers['if'].call(depth0, depth0.isFile, {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n    ";
-      return buffer;
-    }
-    function program2(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                    <input type=\"file\" name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'/>\n               ";
-      return buffer;
-    }
-
-    function program4(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                    ";
-      stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n            ";
-      return buffer;
-    }
-    function program5(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                            <textarea class='body-textarea' placeholder='(required)' name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'>";
-      if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "</textarea>\n                       ";
-      return buffer;
-    }
-
-    function program7(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                            <textarea class='body-textarea' placeholder='(required)' name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'></textarea>\n                             <br />\n                                <div class=\"parameter-content-type\" />\n                      ";
-      return buffer;
-    }
-
-    function program9(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n            ";
-      stack1 = helpers['if'].call(depth0, depth0.isFile, {hash:{},inverse:self.program(12, program12, data),fn:self.program(10, program10, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n    ";
-      return buffer;
-    }
-    function program10(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                    <input class='parameter' class='required' type='file' name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'/>\n               ";
-      return buffer;
-    }
-
-    function program12(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                    ";
-      stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(15, program15, data),fn:self.program(13, program13, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n            ";
-      return buffer;
-    }
-    function program13(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                            <input class='parameter required' minlength='1' name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "' placeholder='(required)' type='text' value='";
-      if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "'/>\n                       ";
-      return buffer;
-    }
-
-    function program15(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n                            <input class='parameter required' minlength='1' name='";
-      if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-      else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-      buffer += escapeExpression(stack1)
-        + "' placeholder='(required)' type='text' value=''/>\n                 ";
-      return buffer;
-    }
-
-    buffer += "<td class='code required'>";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "</td>\n<td>\n ";
-    stack1 = helpers['if'].call(depth0, depth0.isBody, {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n</td>\n<td>\n <strong>";
-    if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "</strong>\n</td>\n<td>";
-    if (stack1 = helpers.paramType) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.paramType; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "</td>\n<td><span class=\"model-signature\"></span></td>\n";
-    return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['parameter_content_type'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, functionType="function", self=this;
-
-    function program1(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n  ";
-      stack1 = helpers.each.call(depth0, depth0.consumes, {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n";
-      return buffer;
-    }
-    function program2(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n  <option value=\"";
-      stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\">";
-      stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "</option>\n  ";
-      return buffer;
-    }
-
-    function program4(depth0,data) {
-
-
-      return "\n  <option value=\"application/json\">application/json</option>\n";
-    }
-
-    stack1 = helpers['if'].call(depth0, depth0.consumes, {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n</select>\n";
-    return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['resource'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, options, functionType="function", escapeExpression=this.escapeExpression, self=this, blockHelperMissing=helpers.blockHelperMissing;
-
-    function program1(depth0,data) {
-
-
-      return " : ";
-    }
-
-    buffer += "<div class='heading'>\n  <h2>\n    <a href='#!/";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "' onclick=\"Docs.toggleEndpointListForResource('";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "');\">";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "</a> ";
-    options = {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data};
-    if (stack1 = helpers.description) { stack1 = stack1.call(depth0, options); }
-    else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if (!helpers.description) { stack1 = blockHelperMissing.call(depth0, stack1, options); }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n  </h2>\n  <ul class='options'>\n    <li>\n      <a href='#!/";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "' id='endpointListTogger_";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "'\n         onclick=\"Docs.toggleEndpointListForResource('";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "');\">Show/Hide</a>\n    </li>\n    <li>\n      <a href='#' onclick=\"Docs.collapseOperationsForResource('";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "'); return false;\">\n        List Operations\n      </a>\n    </li>\n    <li>\n      <a href='#' onclick=\"Docs.expandOperationsForResource('";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "'); return false;\">\n        Expand Operations\n      </a>\n    </li>\n    <li>\n      <a href='";
-    stack1 = "resources/" + depth0.path + ".json";
-    buffer += escapeExpression(stack1)
-      + "'>Raw</a>\n    </li>\n  </ul>\n</div>\n<ul class='endpoints' id='";
-    if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "_endpoint_list' style='display:none'>\n\n</ul>\n";
-    return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['response_content_type'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, functionType="function", self=this;
-
-    function program1(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n  ";
-      stack1 = helpers.each.call(depth0, depth0.produces, {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\n";
-      return buffer;
-    }
-    function program2(depth0,data) {
-
-      var buffer = "", stack1;
-      buffer += "\n  <option value=\"";
-      stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "\">";
-      stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
-      if(stack1 || stack1 === 0) { buffer += stack1; }
-      buffer += "</option>\n  ";
-      return buffer;
-    }
-
-    function program4(depth0,data) {
-
-
-      return "\n  <option value=\"application/json\">application/json</option>\n";
-    }
-
-    stack1 = helpers['if'].call(depth0, depth0.produces, {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),data:data});
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n</select>\n";
-    return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['signature'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression;
-
-
-    buffer += "<div>\n<ul class=\"signature-nav\">\n    <li><a class=\"description-link\" href=\"#\">Model</a></li>\n    <li><a class=\"snippet-link\" href=\"#\">Model Schema</a></li>\n</ul>\n<div>\n\n<div class=\"signature-container\">\n    <div class=\"description\">\n        ";
-    if (stack1 = helpers.signature) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.signature; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "\n    </div>\n\n    <div class=\"snippet\">\n        <pre><code>";
-    if (stack1 = helpers.sampleJSON) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.sampleJSON; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "</code></pre>\n        <small class=\"notice\"></small>\n    </div>\n</div>\n\n";
-    return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-  templates['status_code'] = template(function (Handlebars,depth0,helpers,partials,data) {
-    this.compilerInfo = [4,'>= 1.0.0'];
-    helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-    var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression;
-
-
-    buffer += "<td width='15%' class='code'>";
-    if (stack1 = helpers.code) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.code; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    buffer += escapeExpression(stack1)
-      + "</td>\n<td>";
-    if (stack1 = helpers.message) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-    else { stack1 = depth0.message; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-    if(stack1 || stack1 === 0) { buffer += stack1; }
-    buffer += "</td>\n";
-    return buffer;
-  });
-})();
-
-
-
-// Generated by CoffeeScript 1.6.3
-(function() {
-  var ContentTypeView, HeaderView, MainView, OperationView, ParameterContentTypeView, ParameterView, ResourceView, ResponseContentTypeView, SignatureView, StatusCodeView, SwaggerUi, _ref, _ref1, _ref10, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9,
-    __hasProp = {}.hasOwnProperty,
-    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
-
-  SwaggerUi = (function(_super) {
-    __extends(SwaggerUi, _super);
-
-    function SwaggerUi() {
-      _ref = SwaggerUi.__super__.constructor.apply(this, arguments);
-      return _ref;
-    }
-
-    SwaggerUi.prototype.dom_id = "swagger_ui";
-
-    SwaggerUi.prototype.options = null;
-
-    SwaggerUi.prototype.api = null;
-
-    SwaggerUi.prototype.headerView = null;
-
-    SwaggerUi.prototype.mainView = null;
-
-    SwaggerUi.prototype.initialize = function(options) {
-      var _this = this;
-      if (options == null) {
-        options = {};
-      }
-      if (options.dom_id != null) {
-        this.dom_id = options.dom_id;
-        delete options.dom_id;
-      }
-      if ($('#' + this.dom_id) == null) {
-        $('body').append('<div id="' + this.dom_id + '"></div>');
-      }
-      this.options = options;
-      this.options.success = function() {
-        return _this.render();
-      };
-      this.options.progress = function(d) {
-        return _this.showMessage(d);
-      };
-      this.options.failure = function(d) {
-        return _this.onLoadFailure(d);
-      };
-      this.headerView = new HeaderView({
-        el: $('#header')
-      });
-      return this.headerView.on('update-swagger-ui', function(data) {
-        return _this.updateSwaggerUi(data);
-      });
-    };
-
-    SwaggerUi.prototype.updateSwaggerUi = function(data) {
-      this.options.url = data.url;
-      return this.load();
-    };
-
-    SwaggerUi.prototype.load = function() {
-      var url, _ref1;
-      if ((_ref1 = this.mainView) != null) {
-        _ref1.clear();
-      }
-      url = this.options.url;
-      if (url.indexOf("http") !== 0) {
-        url = this.buildUrl(window.location.href.toString(), url);
-      }
-      this.options.url = url;
-      this.headerView.update(url);
-      this.api = new SwaggerApi(this.options);
-      this.api.build();
-      return this.api;
-    };
-
-    SwaggerUi.prototype.render = function() {
-      var _this = this;
-      this.showMessage('Finished Loading Resource Information. Rendering Swagger UI...');
-      this.mainView = new MainView({
-        model: this.api,
-        el: $('#' + this.dom_id)
-      }).render();
-      this.showMessage();
-      switch (this.options.docExpansion) {
-        case "full":
-          Docs.expandOperationsForResource('');
-          break;
-        case "list":
-          Docs.collapseOperationsForResource('');
-      }
-      if (this.options.onComplete) {
-        this.options.onComplete(this.api, this);
-      }
-      return setTimeout(function() {
-        return Docs.shebang();
-      }, 400);
-    };
-
-    SwaggerUi.prototype.buildUrl = function(base, url) {
-      var parts;
-      console.log("base is " + base);
-      parts = base.split("/");
-      base = parts[0] + "//" + parts[2];
-      if (url.indexOf("/") === 0) {
-        return base + url;
-      } else {
-        return base + "/" + url;
-      }
-    };
-
-    SwaggerUi.prototype.showMessage = function(data) {
-      if (data == null) {
-        data = '';
-      }
-      $('#message-bar').removeClass('message-fail');
-      $('#message-bar').addClass('message-success');
-      return $('#message-bar').html(data);
-    };
-
-    SwaggerUi.prototype.onLoadFailure = function(data) {
-      var val;
-      if (data == null) {
-        data = '';
-      }
-      $('#message-bar').removeClass('message-success');
-      $('#message-bar').addClass('message-fail');
-      val = $('#message-bar').html(data);
-      if (this.options.onFailure != null) {
-        this.options.onFailure(data);
-      }
-      return val;
-    };
-
-    return SwaggerUi;
-
-  })(Backbone.Router);
-
-  window.SwaggerUi = SwaggerUi;
-
-  HeaderView = (function(_super) {
-    __extends(HeaderView, _super);
-
-    function HeaderView() {
-      _ref1 = HeaderView.__super__.constructor.apply(this, arguments);
-      return _ref1;
-    }
-
-    HeaderView.prototype.events = {
-      'click #show-pet-store-icon': 'showPetStore',
-      'click #show-wordnik-dev-icon': 'showWordnikDev',
-      'click #explore': 'showCustom',
-      'keyup #input_baseUrl': 'showCustomOnKeyup',
-      'keyup #input_apiKey': 'showCustomOnKeyup'
-    };
-
-    HeaderView.prototype.initialize = function() {};
-
-    HeaderView.prototype.showPetStore = function(e) {
-      return this.trigger('update-swagger-ui', {
-        url: "http://petstore.swagger.wordnik.com/api/api-docs"
-      });
-    };
-
-    HeaderView.prototype.showWordnikDev = function(e) {
-      return this.trigger('update-swagger-ui', {
-        url: "http://api.wordnik.com/v4/resources.json"
-      });
-    };
-
-    HeaderView.prototype.showCustomOnKeyup = function(e) {
-      if (e.keyCode === 13) {
-        return this.showCustom();
-      }
-    };
-
-    HeaderView.prototype.showCustom = function(e) {
-      if (e != null) {
-        e.preventDefault();
-      }
-      return this.trigger('update-swagger-ui', {
-        url: $('#input_baseUrl').val(),
-        apiKey: $('#input_apiKey').val()
-      });
-    };
-
-    HeaderView.prototype.update = function(url, apiKey, trigger) {
-      if (trigger == null) {
-        trigger = false;
-      }
-      $('#input_baseUrl').val(url);
-      if (trigger) {
-        return this.trigger('update-swagger-ui', {
-          url: url
-        });
-      }
-    };
-
-    return HeaderView;
-
-  })(Backbone.View);
-
-  MainView = (function(_super) {
-    __extends(MainView, _super);
-
-    function MainView() {
-      _ref2 = MainView.__super__.constructor.apply(this, arguments);
-      return _ref2;
-    }
-
-    MainView.prototype.initialize = function() {};
-
-    MainView.prototype.render = function() {
-      var resource, _i, _len, _ref3;
-      $(this.el).html(Handlebars.templates.main(this.model));
-      _ref3 = this.model.apisArray;
-      for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
-        resource = _ref3[_i];
-        this.addResource(resource);
-      }
-      return this;
-    };
-
-    MainView.prototype.addResource = function(resource) {
-      var resourceView;
-      resourceView = new ResourceView({
-        model: resource,
-        tagName: 'li',
-        id: 'resource_' + resource.name,
-        className: 'resource'
-      });
-      return $('#resources').append(resourceView.render().el);
-    };
-
-    MainView.prototype.clear = function() {
-      return $(this.el).html('');
-    };
-
-    return MainView;
-
-  })(Backbone.View);
-
-  ResourceView = (function(_super) {
-    __extends(ResourceView, _super);
-
-    function ResourceView() {
-      _ref3 = ResourceView.__super__.constructor.apply(this, arguments);
-      return _ref3;
-    }
-
-    ResourceView.prototype.initialize = function() {};
-
-    ResourceView.prototype.render = function() {
-      var operation, _i, _len, _ref4;
-      console.log(this.model.description);
-      $(this.el).html(Handlebars.templates.resource(this.model));
-      this.number = 0;
-      _ref4 = this.model.operationsArray;
-      for (_i = 0, _len = _ref4.length; _i < _len; _i++) {
-        operation = _ref4[_i];
-        this.addOperation(operation);
-      }
-      return this;
-    };
-
-    ResourceView.prototype.addOperation = function(operation) {
-      var operationView;
-      operation.number = this.number;
-      operationView = new OperationView({
-        model: operation,
-        tagName: 'li',
-        className: 'endpoint'
-      });
-      $('.endpoints', $(this.el)).append(operationView.render().el);
-      return this.number++;
-    };
-
-    return ResourceView;
-
-  })(Backbone.View);
-
-  OperationView = (function(_super) {
-    __extends(OperationView, _super);
-
-    function OperationView() {
-      _ref4 = OperationView.__super__.constructor.apply(this, arguments);
-      return _ref4;
-    }
-
-    OperationView.prototype.invocationUrl = null;
-
-    OperationView.prototype.events = {
-      'submit .sandbox': 'submitOperation',
-      'click .submit': 'submitOperation',
-      'click .response_hider': 'hideResponse',
-      'click .toggleOperation': 'toggleOperationContent'
-    };
-
-    OperationView.prototype.initialize = function() {};
-
-    OperationView.prototype.render = function() {
-      var contentTypeModel, isMethodSubmissionSupported, param, responseContentTypeView, responseSignatureView, signatureModel, statusCode, type, _i, _j, _k, _len, _len1, _len2, _ref5, _ref6, _ref7;
-      isMethodSubmissionSupported = true;
-      if (!isMethodSubmissionSupported) {
-        this.model.isReadOnly = true;
-      }
-      $(this.el).html(Handlebars.templates.operation(this.model));
-      if (this.model.responseClassSignature && this.model.responseClassSignature !== 'string') {
-        signatureModel = {
-          sampleJSON: this.model.responseSampleJSON,
-          isParam: false,
-          signature: this.model.responseClassSignature
-        };
-        responseSignatureView = new SignatureView({
-          model: signatureModel,
-          tagName: 'div'
-        });
-        $('.model-signature', $(this.el)).append(responseSignatureView.render().el);
-      } else {
-        $('.model-signature', $(this.el)).html(this.model.type);
-      }
-      contentTypeModel = {
-        isParam: false
-      };
-      contentTypeModel.consumes = this.model.consumes;
-      contentTypeModel.produces = this.model.produces;
-      _ref5 = this.model.parameters;
-      for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
-        param = _ref5[_i];
-        type = param.type || param.dataType;
-        if (type.toLowerCase() === 'file') {
-          if (!contentTypeModel.consumes) {
-            console.log("set content type ");
-            contentTypeModel.consumes = 'multipart/form-data';
-          }
-        }
-      }
-      responseContentTypeView = new ResponseContentTypeView({
-        model: contentTypeModel
-      });
-      $('.response-content-type', $(this.el)).append(responseContentTypeView.render().el);
-      _ref6 = this.model.parameters;
-      for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
-        param = _ref6[_j];
-        this.addParameter(param, contentTypeModel.consumes);
-      }
-      _ref7 = this.model.responseMessages;
-      for (_k = 0, _len2 = _ref7.length; _k < _len2; _k++) {
-        statusCode = _ref7[_k];
-        this.addStatusCode(statusCode);
-      }
-      return this;
-    };
-
-    OperationView.prototype.addParameter = function(param, consumes) {
-      var paramView;
-      param.consumes = consumes;
-      paramView = new ParameterView({
-        model: param,
-        tagName: 'tr',
-        readOnly: this.model.isReadOnly
-      });
-      return $('.operation-params', $(this.el)).append(paramView.render().el);
-    };
-
-    OperationView.prototype.addStatusCode = function(statusCode) {
-      var statusCodeView;
-      statusCodeView = new StatusCodeView({
-        model: statusCode,
-        tagName: 'tr'
-      });
-      return $('.operation-status', $(this.el)).append(statusCodeView.render().el);
-    };
-
-    OperationView.prototype.submitOperation = function(e) {
-      var error_free, form, isFileUpload, map, o, opts, val, _i, _j, _k, _len, _len1, _len2, _ref5, _ref6, _ref7;
-      if (e != null) {
-        e.preventDefault();
-      }
-      form = $('.sandbox', $(this.el));
-      error_free = true;
-      form.find("input.required").each(function() {
-        var _this = this;
-        $(this).removeClass("error");
-        if (jQuery.trim($(this).val()) === "") {
-          $(this).addClass("error");
-          $(this).wiggle({
-            callback: function() {
-              return $(_this).focus();
-            }
-          });
-          return error_free = false;
-        }
-      });
-      if (error_free) {
-        map = {};
-        opts = {
-          parent: this
-        };
-        isFileUpload = false;
-        _ref5 = form.find("input");
-        for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
-          o = _ref5[_i];
-          if ((o.value != null) && jQuery.trim(o.value).length > 0) {
-            map[o.name] = o.value;
-          }
-          if (o.type === "file") {
-            isFileUpload = true;
-          }
-        }
-        _ref6 = form.find("textarea");
-        for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
-          o = _ref6[_j];
-          if ((o.value != null) && jQuery.trim(o.value).length > 0) {
-            map["body"] = o.value;
-          }
-        }
-        _ref7 = form.find("select");
-        for (_k = 0, _len2 = _ref7.length; _k < _len2; _k++) {
-          o = _ref7[_k];
-          val = this.getSelectedValue(o);
-          if ((val != null) && jQuery.trim(val).length > 0) {
-            map[o.name] = val;
-          }
-        }
-        opts.responseContentType = $("div select[name=responseContentType]", $(this.el)).val();
-        opts.requestContentType = $("div select[name=parameterContentType]", $(this.el)).val();
-        $(".response_throbber", $(this.el)).show();
-        if (isFileUpload) {
-          return this.handleFileUpload(map, form);
-        } else {
-          return this.model["do"](map, opts, this.showCompleteStatus, this.showErrorStatus, this);
-        }
-      }
-    };
-
-    OperationView.prototype.success = function(response, parent) {
-      return parent.showCompleteStatus(response);
-    };
-
-    OperationView.prototype.handleFileUpload = function(map, form) {
-      var bodyParam, headerParams, o, obj, param, _i, _j, _k, _len, _len1, _len2, _ref5, _ref6, _ref7,
-        _this = this;
-      console.log("it's a file upload");
-      _ref5 = form.serializeArray();
-      for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
-        o = _ref5[_i];
-        if ((o.value != null) && jQuery.trim(o.value).length > 0) {
-          map[o.name] = o.value;
-        }
-      }
-      bodyParam = new FormData();
-      _ref6 = this.model.parameters;
-      for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
-        param = _ref6[_j];
-        if (param.paramType === 'form') {
-          bodyParam.append(param.name, map[param.name]);
-        }
-      }
-      headerParams = {};
-      _ref7 = this.model.parameters;
-      for (_k = 0, _len2 = _ref7.length; _k < _len2; _k++) {
-        param = _ref7[_k];
-        if (param.paramType === 'header') {
-          headerParams[param.name] = map[param.name];
-        }
-      }
-      console.log(headerParams);
-      $.each($('input[type~="file"]'), function(i, el) {
-        return bodyParam.append($(el).attr('name'), el.files[0]);
-      });
-      console.log(bodyParam);
-      this.invocationUrl = this.model.supportHeaderParams() ? (headerParams = this.model.getHeaderParams(map), this.model.urlify(map, false)) : this.model.urlify(map, true);
-      $(".request_url", $(this.el)).html("<pre>" + this.invocationUrl + "</pre>");
-      obj = {
-        type: this.model.method,
-        url: this.invocationUrl,
-        headers: headerParams,
-        data: bodyParam,
-        dataType: 'json',
-        contentType: false,
-        processData: false,
-        error: function(data, textStatus, error) {
-          return _this.showErrorStatus(_this.wrap(data), _this);
-        },
-        success: function(data) {
-          return _this.showResponse(data, _this);
-        },
-        complete: function(data) {
-          return _this.showCompleteStatus(_this.wrap(data), _this);
-        }
-      };
-      if (window.authorizations) {
-        window.authorizations.apply(obj);
-      }
-      jQuery.ajax(obj);
-      return false;
-    };
-
-    OperationView.prototype.wrap = function(data) {
-      var o,
-        _this = this;
-      o = {};
-      o.content = {};
-      o.content.data = data.responseText;
-      o.getHeaders = function() {
-        return {
-          "Content-Type": data.getResponseHeader("Content-Type")
-        };
-      };
-      o.request = {};
-      o.request.url = this.invocationUrl;
-      o.status = data.status;
-      return o;
-    };
-
-    OperationView.prototype.getSelectedValue = function(select) {
-      var opt, options, _i, _len, _ref5;
-      if (!select.multiple) {
-        return select.value;
-      } else {
-        options = [];
-        _ref5 = select.options;
-        for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
-          opt = _ref5[_i];
-          if (opt.selected) {
-            options.push(opt.value);
-          }
-        }
-        if (options.length > 0) {
-          return options.join(",");
-        } else {
-          return null;
-        }
-      }
-    };
-
-    OperationView.prototype.hideResponse = function(e) {
-      if (e != null) {
-        e.preventDefault();
-      }
-      $(".response", $(this.el)).slideUp();
-      return $(".response_hider", $(this.el)).fadeOut();
-    };
-
-    OperationView.prototype.showResponse = function(response) {
-      var prettyJson;
-      prettyJson = JSON.stringify(response, null, "\t").replace(/\n/g, "<br>");
-      return $(".response_body", $(this.el)).html(escape(prettyJson));
-    };
-
-    OperationView.prototype.showErrorStatus = function(data, parent) {
-      return parent.showStatus(data);
-    };
-
-    OperationView.prototype.showCompleteStatus = function(data, parent) {
-      return parent.showStatus(data);
-    };
-
-    OperationView.prototype.formatXml = function(xml) {
-      var contexp, formatted, indent, lastType, lines, ln, pad, reg, transitions, wsexp, _fn, _i, _len;
-      reg = /(>)(<)(\/*)/g;
-      wsexp = /[ ]*(.*)[ ]+\n/g;
-      contexp = /(<.+>)(.+\n)/g;
-      xml = xml.replace(reg, '$1\n$2$3').replace(wsexp, '$1\n').replace(contexp, '$1\n$2');
-      pad = 0;
-      formatted = '';
-      lines = xml.split('\n');
-      indent = 0;
-      lastType = 'other';
-      transitions = {
-        'single->single': 0,
-        'single->closing': -1,
-        'single->opening': 0,
-        'single->other': 0,
-        'closing->single': 0,
-        'closing->closing': -1,
-        'closing->opening': 0,
-        'closing->other': 0,
-        'opening->single': 1,
-        'opening->closing': 0,
-        'opening->opening': 1,
-        'opening->other': 1,
-        'other->single': 0,
-        'other->closing': -1,
-        'other->opening': 0,
-        'other->other': 0
-      };
-      _fn = function(ln) {
-        var fromTo, j, key, padding, type, types, value;
-        types = {
-          single: Boolean(ln.match(/<.+\/>/)),
-          closing: Boolean(ln.match(/<\/.+>/)),
-          opening: Boolean(ln.match(/<[^!?].*>/))
-        };
-        type = ((function() {
-          var _results;
-          _results = [];
-          for (key in types) {
-            value = types[key];
-            if (value) {
-              _results.push(key);
-            }
-          }
-          return _results;
-        })())[0];
-        type = type === void 0 ? 'other' : type;
-        fromTo = lastType + '->' + type;
-        lastType = type;
-        padding = '';
-        indent += transitions[fromTo];
-        padding = ((function() {
-          var _j, _ref5, _results;
-          _results = [];
-          for (j = _j = 0, _ref5 = indent; 0 <= _ref5 ? _j < _ref5 : _j > _ref5; j = 0 <= _ref5 ? ++_j : --_j) {
-            _results.push('  ');
-          }
-          return _results;
-        })()).join('');
-        if (fromTo === 'opening->closing') {
-          return formatted = formatted.substr(0, formatted.length - 1) + ln + '\n';
-        } else {
-          return formatted += padding + ln + '\n';
-        }
-      };
-      for (_i = 0, _len = lines.length; _i < _len; _i++) {
-        ln = lines[_i];
-        _fn(ln);
-      }
-      return formatted;
-    };
-
-    OperationView.prototype.showStatus = function(data) {
-      var code, content, contentType, headers, pre, response_body;
-      content = data.content.data;
-      headers = data.getHeaders();
-      contentType = headers["Content-Type"];
-      if (content === void 0) {
-        code = $('<code />').text("no content");
-        pre = $('<pre class="json" />').append(code);
-      } else if (contentType.indexOf("application/json") === 0 || contentType.indexOf("application/hal+json") === 0) {
-        code = $('<code />').text(JSON.stringify(JSON.parse(content), null, 2));
-        pre = $('<pre class="json" />').append(code);
-      } else if (contentType.indexOf("application/xml") === 0) {
-        code = $('<code />').text(this.formatXml(content));
-        pre = $('<pre class="xml" />').append(code);
-      } else if (contentType.indexOf("text/html") === 0) {
-        code = $('<code />').html(content);
-        pre = $('<pre class="xml" />').append(code);
-      } else if (contentType.indexOf("image/") === 0) {
-        pre = $('<img>').attr('src', data.request.url);
-      } else {
-        code = $('<code />').text(content);
-        pre = $('<pre class="json" />').append(code);
-      }
-      response_body = pre;
-      $(".request_url", $(this.el)).html("<pre>" + data.request.url + "</pre>");
-      $(".response_code", $(this.el)).html("<pre>" + data.status + "</pre>");
-      $(".response_body", $(this.el)).html(response_body);
-      $(".response_headers", $(this.el)).html("<pre>" + JSON.stringify(data.getHeaders(), null, "  ").replace(/\n/g, "<br>") + "</pre>");
-      $(".response", $(this.el)).slideDown();
-      $(".response_hider", $(this.el)).show();
-      $(".response_throbber", $(this.el)).hide();
-      return hljs.highlightBlock($('.response_body', $(this.el))[0]);
-    };
-
-    OperationView.prototype.toggleOperationContent = function() {
-      var elem;
-      elem = $('#' + Docs.escapeResourceName(this.model.resourceName) + "_" + this.model.nickname + "_" + this.model.method + "_" + this.model.number + "_content");
-      if (elem.is(':visible')) {
-        return Docs.collapseOperation(elem);
-      } else {
-        return Docs.expandOperation(elem);
-      }
-    };
-
-    return OperationView;
-
-  })(Backbone.View);
-
-  StatusCodeView = (function(_super) {
-    __extends(StatusCodeView, _super);
-
-    function StatusCodeView() {
-      _ref5 = StatusCodeView.__super__.constructor.apply(this, arguments);
-      return _ref5;
-    }
-
-    StatusCodeView.prototype.initialize = function() {};
-
-    StatusCodeView.prototype.render = function() {
-      var template;
-      template = this.template();
-      $(this.el).html(template(this.model));
-      return this;
-    };
-
-    StatusCodeView.prototype.template = function() {
-      return Handlebars.templates.status_code;
-    };
-
-    return StatusCodeView;
-
-  })(Backbone.View);
-
-  ParameterView = (function(_super) {
-    __extends(ParameterView, _super);
-
-    function ParameterView() {
-      _ref6 = ParameterView.__super__.constructor.apply(this, arguments);
-      return _ref6;
-    }
-
-    ParameterView.prototype.initialize = function() {};
-
-    ParameterView.prototype.render = function() {
-      var contentTypeModel, isParam, parameterContentTypeView, responseContentTypeView, signatureModel, signatureView, template, type;
-      type = this.model.type || this.model.dataType;
-      if (this.model.paramType === 'body') {
-        this.model.isBody = true;
-      }
-      if (type.toLowerCase() === 'file') {
-        this.model.isFile = true;
-      }
-      template = this.template();
-      $(this.el).html(template(this.model));
-      signatureModel = {
-        sampleJSON: this.model.sampleJSON,
-        isParam: true,
-        signature: this.model.signature
-      };
-      if (this.model.sampleJSON) {
-        signatureView = new SignatureView({
-          model: signatureModel,
-          tagName: 'div'
-        });
-        $('.model-signature', $(this.el)).append(signatureView.render().el);
-      } else {
-        $('.model-signature', $(this.el)).html(this.model.signature);
-      }
-      isParam = false;
-      if (this.model.isBody) {
-        isParam = true;
-      }
-      contentTypeModel = {
-        isParam: isParam
-      };
-      contentTypeModel.consumes = this.model.consumes;
-      if (isParam) {
-        parameterContentTypeView = new ParameterContentTypeView({
-          model: contentTypeModel
-        });
-        $('.parameter-content-type', $(this.el)).append(parameterContentTypeView.render().el);
-      } else {
-        responseContentTypeView = new ResponseContentTypeView({
-          model: contentTypeModel
-        });
-        $('.response-content-type', $(this.el)).append(responseContentTypeView.render().el);
-      }
-      return this;
-    };
-
-    ParameterView.prototype.template = function() {
-      if (this.model.isList) {
-        return Handlebars.templates.param_list;
-      } else {
-        if (this.options.readOnly) {
-          if (this.model.required) {
-            return Handlebars.templates.param_readonly_required;
-          } else {
-            return Handlebars.templates.param_readonly;
-          }
-        } else {
-          if (this.model.required) {
-            return Handlebars.templates.param_required;
-          } else {
-            return Handlebars.templates.param;
-          }
-        }
-      }
-    };
-
-    return ParameterView;
-
-  })(Backbone.View);
-
-  SignatureView = (function(_super) {
-    __extends(SignatureView, _super);
-
-    function SignatureView() {
-      _ref7 = SignatureView.__super__.constructor.apply(this, arguments);
-      return _ref7;
-    }
-
-    SignatureView.prototype.events = {
-      'click a.description-link': 'switchToDescription',
-      'click a.snippet-link': 'switchToSnippet',
-      'mousedown .snippet': 'snippetToTextArea'
-    };
-
-    SignatureView.prototype.initialize = function() {};
-
-    SignatureView.prototype.render = function() {
-      var template;
-      template = this.template();
-      $(this.el).html(template(this.model));
-      this.switchToDescription();
-      this.isParam = this.model.isParam;
-      if (this.isParam) {
-        $('.notice', $(this.el)).text('Click to set as parameter value');
-      }
-      return this;
-    };
-
-    SignatureView.prototype.template = function() {
-      return Handlebars.templates.signature;
-    };
-
-    SignatureView.prototype.switchToDescription = function(e) {
-      if (e != null) {
-        e.preventDefault();
-      }
-      $(".snippet", $(this.el)).hide();
-      $(".description", $(this.el)).show();
-      $('.description-link', $(this.el)).addClass('selected');
-      return $('.snippet-link', $(this.el)).removeClass('selected');
-    };
-
-    SignatureView.prototype.switchToSnippet = function(e) {
-      if (e != null) {
-        e.preventDefault();
-      }
-      $(".description", $(this.el)).hide();
-      $(".snippet", $(this.el)).show();
-      $('.snippet-link', $(this.el)).addClass('selected');
-      return $('.description-link', $(this.el)).removeClass('selected');
-    };
-
-    SignatureView.prototype.snippetToTextArea = function(e) {
-      var textArea;
-      if (this.isParam) {
-        if (e != null) {
-          e.preventDefault();
-        }
-        textArea = $('textarea', $(this.el.parentNode.parentNode.parentNode));
-        if ($.trim(textArea.val()) === '') {
-          return textArea.val(this.model.sampleJSON);
-        }
-      }
-    };
-
-    return SignatureView;
-
-  })(Backbone.View);
-
-  ContentTypeView = (function(_super) {
-    __extends(ContentTypeView, _super);
-
-    function ContentTypeView() {
-      _ref8 = ContentTypeView.__super__.constructor.apply(this, arguments);
-      return _ref8;
-    }
-
-    ContentTypeView.prototype.initialize = function() {};
-
-    ContentTypeView.prototype.render = function() {
-      var template;
-      template = this.template();
-      $(this.el).html(template(this.model));
-      $('label[for=contentType]', $(this.el)).text('Response Content Type');
-      return this;
-    };
-
-    ContentTypeView.prototype.template = function() {
-      return Handlebars.templates.content_type;
-    };
-
-    return ContentTypeView;
-
-  })(Backbone.View);
-
-  ResponseContentTypeView = (function(_super) {
-    __extends(ResponseContentTypeView, _super);
-
-    function ResponseContentTypeView() {
-      _ref9 = ResponseContentTypeView.__super__.constructor.apply(this, arguments);
-      return _ref9;
-    }
-
-    ResponseContentTypeView.prototype.initialize = function() {};
-
-    ResponseContentTypeView.prototype.render = function() {
-      var template;
-      template = this.template();
-      $(this.el).html(template(this.model));
-      $('label[for=responseContentType]', $(this.el)).text('Response Content Type');
-      return this;
-    };
-
-    ResponseContentTypeView.prototype.template = function() {
-      return Handlebars.templates.response_content_type;
-    };
-
-    return ResponseContentTypeView;
-
-  })(Backbone.View);
-
-  ParameterContentTypeView = (function(_super) {
-    __extends(ParameterContentTypeView, _super);
-
-    function ParameterContentTypeView() {
-      _ref10 = ParameterContentTypeView.__super__.constructor.apply(this, arguments);
-      return _ref10;
-    }
-
-    ParameterContentTypeView.prototype.initialize = function() {};
-
-    ParameterContentTypeView.prototype.render = function() {
-      var template;
-      template = this.template();
-      $(this.el).html(template(this.model));
-      $('label[for=parameterContentType]', $(this.el)).text('Parameter content type:');
-      return this;
-    };
-
-    ParameterContentTypeView.prototype.template = function() {
-      return Handlebars.templates.parameter_content_type;
-    };
-
-    return ParameterContentTypeView;
-
-  })(Backbone.View);
-
-}).call(this);
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/swagger.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/static/swagger.js
deleted file mode 100644 (file)
index a037790..0000000
+++ /dev/null
@@ -1,1199 +0,0 @@
-// Generated by CoffeeScript 1.6.3
-(function() {
-  var ApiKeyAuthorization, PasswordAuthorization, SwaggerApi, SwaggerAuthorizations, SwaggerHttp, SwaggerModel, SwaggerModelProperty, SwaggerOperation, SwaggerRequest, SwaggerResource,
-    __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
-
-  SwaggerApi = (function() {
-    SwaggerApi.prototype.url = "http://api.wordnik.com/v4/resources.json";
-
-    SwaggerApi.prototype.debug = false;
-
-    SwaggerApi.prototype.basePath = null;
-
-    SwaggerApi.prototype.authorizations = null;
-
-    SwaggerApi.prototype.authorizationScheme = null;
-
-    SwaggerApi.prototype.info = null;
-
-    function SwaggerApi(url, options) {
-      if (options == null) {
-        options = {};
-      }
-      if (url) {
-        if (url.url) {
-          options = url;
-        } else {
-          this.url = url;
-        }
-      } else {
-        options = url;
-      }
-      if (options.url != null) {
-        this.url = options.url;
-      }
-      if (options.success != null) {
-        this.success = options.success;
-      }
-      this.failure = options.failure != null ? options.failure : function() {};
-      this.progress = options.progress != null ? options.progress : function() {};
-      if (options.success != null) {
-        this.build();
-      }
-    }
-
-    SwaggerApi.prototype.build = function() {
-      var e, obj,
-        _this = this;
-      this.progress('fetching resource list: ' + this.url);
-      var response;
-      response = JSON.parse(getSpec());
-
-      _this.swaggerVersion = response.swaggerVersion;
-      if (_this.swaggerVersion === "1.2") {
-        setTimeout(function(){return _this.buildFromSpec(response);}, 500);
-      } else {
-        return setTimeout(function(){return _this.buildFrom1_1Spec(response);}, 500);
-      }
-      return this;
-    };
-
-    SwaggerApi.prototype.buildFromSpec = function(response) {
-      var api, isApi, newName, operation, res, resource, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;
-      if (response.apiVersion != null) {
-        this.apiVersion = response.apiVersion;
-      }
-      this.apis = {};
-      this.apisArray = [];
-      this.produces = response.produces;
-      this.authSchemes = response.authorizations;
-      if (response.info != null) {
-        this.info = response.info;
-      }
-      isApi = false;
-      _ref = response.apis;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        api = _ref[_i];
-        if (api.operations) {
-          _ref1 = api.operations;
-          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-            operation = _ref1[_j];
-            isApi = true;
-          }
-        }
-      }
-      if (response.basePath) {
-        this.basePath = response.basePath;
-      } else if (this.url.indexOf('?') > 0) {
-        this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
-      } else {
-        this.basePath = this.url;
-      }
-      if (isApi) {
-        newName = response.resourcePath.replace(/\//g, '');
-        this.resourcePath = response.resourcePath;
-        res = new SwaggerResource(response, this);
-        this.apis[newName] = res;
-        this.apisArray.push(res);
-      } else {
-        _ref2 = response.apis;
-        for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
-          resource = _ref2[_k];
-          res = new SwaggerResource(resource, this);
-          this.apis[res.name] = res;
-          this.apisArray.push(res);
-        }
-      }
-      if (this.success) {
-        this.success();
-      }
-      return this;
-    };
-
-    SwaggerApi.prototype.buildFrom1_1Spec = function(response) {
-      var api, isApi, newName, operation, res, resource, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;
-      console.log("This API is using a deprecated version of Swagger!  Please see http://github.com/wordnik/swagger-core/wiki for more info");
-      if (response.apiVersion != null) {
-        this.apiVersion = response.apiVersion;
-      }
-      this.apis = {};
-      this.apisArray = [];
-      this.produces = response.produces;
-      if (response.info != null) {
-        this.info = response.info;
-      }
-      isApi = false;
-      _ref = response.apis;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        api = _ref[_i];
-        if (api.operations) {
-          _ref1 = api.operations;
-          for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-            operation = _ref1[_j];
-            isApi = true;
-          }
-        }
-      }
-      if (response.basePath) {
-        this.basePath = response.basePath;
-      } else if (this.url.indexOf('?') > 0) {
-        this.basePath = this.url.substring(0, this.url.lastIndexOf('?'));
-      } else {
-        this.basePath = this.url;
-      }
-      if (isApi) {
-        newName = response.resourcePath.replace(/\//g, '');
-        this.resourcePath = response.resourcePath;
-        res = new SwaggerResource(response, this);
-        this.apis[newName] = res;
-        this.apisArray.push(res);
-      } else {
-        _ref2 = response.apis;
-        for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
-          resource = _ref2[_k];
-          res = new SwaggerResource(resource, this);
-          this.apis[res.name] = res;
-          this.apisArray.push(res);
-        }
-      }
-      if (this.success) {
-        this.success();
-      }
-      return this;
-    };
-
-    SwaggerApi.prototype.selfReflect = function() {
-      var resource, resource_name, _ref;
-      if (this.apis == null) {
-        return false;
-      }
-      _ref = this.apis;
-      for (resource_name in _ref) {
-        resource = _ref[resource_name];
-        if (resource.ready == null) {
-          return false;
-        }
-      }
-      this.setConsolidatedModels();
-      this.ready = true;
-      if (this.success != null) {
-        return this.success();
-      }
-    };
-
-    SwaggerApi.prototype.fail = function(message) {
-      this.failure(message);
-      throw message;
-    };
-
-    SwaggerApi.prototype.setConsolidatedModels = function() {
-      var model, modelName, resource, resource_name, _i, _len, _ref, _ref1, _results;
-      this.modelsArray = [];
-      this.models = {};
-      _ref = this.apis;
-      for (resource_name in _ref) {
-        resource = _ref[resource_name];
-        for (modelName in resource.models) {
-          if (this.models[modelName] == null) {
-            this.models[modelName] = resource.models[modelName];
-            this.modelsArray.push(resource.models[modelName]);
-          }
-        }
-      }
-      _ref1 = this.modelsArray;
-      _results = [];
-      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-        model = _ref1[_i];
-        _results.push(model.setReferencedModels(this.models));
-      }
-      return _results;
-    };
-
-    SwaggerApi.prototype.help = function() {
-      var operation, operation_name, parameter, resource, resource_name, _i, _len, _ref, _ref1, _ref2;
-      _ref = this.apis;
-      for (resource_name in _ref) {
-        resource = _ref[resource_name];
-        console.log(resource_name);
-        _ref1 = resource.operations;
-        for (operation_name in _ref1) {
-          operation = _ref1[operation_name];
-          console.log("  " + operation.nickname);
-          _ref2 = operation.parameters;
-          for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
-            parameter = _ref2[_i];
-            console.log("    " + parameter.name + (parameter.required ? ' (required)' : '') + " - " + parameter.description);
-          }
-        }
-      }
-      return this;
-    };
-
-    return SwaggerApi;
-
-  })();
-
-  SwaggerResource = (function() {
-    SwaggerResource.prototype.api = null;
-
-    SwaggerResource.prototype.produces = null;
-
-    SwaggerResource.prototype.consumes = null;
-
-    function SwaggerResource(resourceObj, api) {
-      var consumes, e, obj, parts, produces,
-        _this = this;
-      this.api = api;
-      this.api = this.api;
-      produces = [];
-      consumes = [];
-      this.path = this.api.resourcePath != null ? this.api.resourcePath : resourceObj.path;
-      this.description = resourceObj.description;
-      parts = this.path.split("/");
-      this.name = parts[parts.length - 1].replace('.{format}', '');
-      this.basePath = this.api.basePath;
-      this.operations = {};
-      this.operationsArray = [];
-      this.modelsArray = [];
-      this.models = {};
-      if ((resourceObj.apis != null) && (this.api.resourcePath != null)) {
-        this.addApiDeclaration(resourceObj);
-      } else {
-        if (this.path == null) {
-          this.api.fail("SwaggerResources must have a path.");
-        }
-        if (this.path.substring(0, 4) === 'http') {
-          this.url = this.path.replace('{format}', 'json');
-        } else {
-          this.url = this.api.basePath + this.path.replace('{format}', 'json');
-        }
-        this.api.progress('fetching resource ' + this.name + ': ' + this.url);
-        var response;
-        var split = resourceObj.path.split("/");
-        var resource = split[split.length-1];
-        response = JSON.parse(jsonFor(resource));
-        setTimeout(function(){return _this.addApiDeclaration(response);}, 500);
-      }
-    }
-
-    SwaggerResource.prototype.addApiDeclaration = function(response) {
-      var endpoint, _i, _len, _ref;
-      if (response.produces != null) {
-        this.produces = response.produces;
-      }
-      if (response.consumes != null) {
-        this.consumes = response.consumes;
-      }
-      if ((response.basePath != null) && response.basePath.replace(/\s/g, '').length > 0) {
-        this.basePath = response.basePath;
-      }
-      this.addModels(response.models);
-      if (response.apis) {
-        _ref = response.apis;
-        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-          endpoint = _ref[_i];
-          this.addOperations(endpoint.path, endpoint.operations, response.consumes, response.produces);
-        }
-      }
-      this.api[this.name] = this;
-      this.ready = true;
-      return this.api.selfReflect();
-    };
-
-    SwaggerResource.prototype.addModels = function(models) {
-      var model, modelName, swaggerModel, _i, _len, _ref, _results;
-      if (models != null) {
-        for (modelName in models) {
-          if (this.models[modelName] == null) {
-            swaggerModel = new SwaggerModel(modelName, models[modelName]);
-            this.modelsArray.push(swaggerModel);
-            this.models[modelName] = swaggerModel;
-          }
-        }
-        _ref = this.modelsArray;
-        _results = [];
-        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-          model = _ref[_i];
-          _results.push(model.setReferencedModels(this.models));
-        }
-        return _results;
-      }
-    };
-
-    SwaggerResource.prototype.addOperations = function(resource_path, ops, consumes, produces) {
-      var method, o, op, r, ref, responseMessages, type, _i, _j, _len, _len1, _results;
-      if (ops) {
-        _results = [];
-        for (_i = 0, _len = ops.length; _i < _len; _i++) {
-          o = ops[_i];
-          consumes = this.consumes;
-          produces = this.produces;
-          if (o.consumes != null) {
-            consumes = o.consumes;
-          } else {
-            consumes = this.consumes;
-          }
-          if (o.produces != null) {
-            produces = o.produces;
-          } else {
-            produces = this.produces;
-          }
-          type = o.type || o.responseClass;
-          if (type === "array") {
-            ref = null;
-            if (o.items) {
-              ref = o.items["type"] || o.items["$ref"];
-            }
-            type = "array[" + ref + "]";
-          }
-          responseMessages = o.responseMessages;
-          method = o.method;
-          if (o.httpMethod) {
-            method = o.httpMethod;
-          }
-          if (o.supportedContentTypes) {
-            consumes = o.supportedContentTypes;
-          }
-          if (o.errorResponses) {
-            responseMessages = o.errorResponses;
-            for (_j = 0, _len1 = responseMessages.length; _j < _len1; _j++) {
-              r = responseMessages[_j];
-              r.message = r.reason;
-              r.reason = null;
-            }
-          }
-          o.nickname = this.sanitize(o.nickname);
-          op = new SwaggerOperation(o.nickname, resource_path, method, o.parameters, o.summary, o.notes, type, responseMessages, this, consumes, produces);
-          this.operations[op.nickname] = op;
-          _results.push(this.operationsArray.push(op));
-        }
-        return _results;
-      }
-    };
-
-    SwaggerResource.prototype.sanitize = function(nickname) {
-      var op;
-      op = nickname.replace(/[\s!@#$%^&*()_+=\[{\]};:<>|./?,\\'""-]/g, '_');
-      op = op.replace(/((_){2,})/g, '_');
-      op = op.replace(/^(_)*/g, '');
-      op = op.replace(/([_])*$/g, '');
-      return op;
-    };
-
-    SwaggerResource.prototype.help = function() {
-      var msg, operation, operation_name, parameter, _i, _len, _ref, _ref1, _results;
-      _ref = this.operations;
-      _results = [];
-      for (operation_name in _ref) {
-        operation = _ref[operation_name];
-        msg = "  " + operation.nickname;
-        _ref1 = operation.parameters;
-        for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-          parameter = _ref1[_i];
-          msg.concat("    " + parameter.name + (parameter.required ? ' (required)' : '') + " - " + parameter.description);
-        }
-        _results.push(msg);
-      }
-      return _results;
-    };
-
-    return SwaggerResource;
-
-  })();
-
-  SwaggerModel = (function() {
-    function SwaggerModel(modelName, obj) {
-      var prop, propertyName, value;
-      this.name = obj.id != null ? obj.id : modelName;
-      this.properties = [];
-      for (propertyName in obj.properties) {
-        if (obj.required != null) {
-          for (value in obj.required) {
-            if (propertyName === obj.required[value]) {
-              obj.properties[propertyName].required = true;
-            }
-          }
-        }
-        prop = new SwaggerModelProperty(propertyName, obj.properties[propertyName]);
-        this.properties.push(prop);
-      }
-    }
-
-    SwaggerModel.prototype.setReferencedModels = function(allModels) {
-      var prop, type, _i, _len, _ref, _results;
-      _ref = this.properties;
-      _results = [];
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        prop = _ref[_i];
-        type = prop.type || prop.dataType;
-        if (allModels[type] != null) {
-          _results.push(prop.refModel = allModels[type]);
-        } else if ((prop.refDataType != null) && (allModels[prop.refDataType] != null)) {
-          _results.push(prop.refModel = allModels[prop.refDataType]);
-        } else {
-          _results.push(void 0);
-        }
-      }
-      return _results;
-    };
-
-    SwaggerModel.prototype.getMockSignature = function(modelsToIgnore) {
-      var classClose, classOpen, prop, propertiesStr, returnVal, strong, strongClose, stronger, _i, _j, _len, _len1, _ref, _ref1;
-      propertiesStr = [];
-      _ref = this.properties;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        prop = _ref[_i];
-        propertiesStr.push(prop.toString());
-      }
-      strong = '<span class="strong">';
-      stronger = '<span class="stronger">';
-      strongClose = '</span>';
-      classOpen = strong + this.name + ' {' + strongClose;
-      classClose = strong + '}' + strongClose;
-      returnVal = classOpen + '<div>' + propertiesStr.join(',</div><div>') + '</div>' + classClose;
-      if (!modelsToIgnore) {
-        modelsToIgnore = [];
-      }
-      modelsToIgnore.push(this);
-      _ref1 = this.properties;
-      for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-        prop = _ref1[_j];
-        if ((prop.refModel != null) && (modelsToIgnore.indexOf(prop.refModel)) === -1) {
-          returnVal = returnVal + ('<br>' + prop.refModel.getMockSignature(modelsToIgnore));
-        }
-      }
-      return returnVal;
-    };
-
-    SwaggerModel.prototype.createJSONSample = function(modelsToIgnore) {
-      var prop, result, _i, _len, _ref;
-      result = {};
-      modelsToIgnore = modelsToIgnore || [];
-      modelsToIgnore.push(this.name);
-      _ref = this.properties;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        prop = _ref[_i];
-        result[prop.name] = prop.getSampleValue(modelsToIgnore);
-      }
-      modelsToIgnore.pop(this.name);
-      return result;
-    };
-
-    return SwaggerModel;
-
-  })();
-
-  SwaggerModelProperty = (function() {
-    function SwaggerModelProperty(name, obj) {
-      this.name = name;
-      this.dataType = obj.type || obj.dataType || obj["$ref"];
-      this.isCollection = this.dataType && (this.dataType.toLowerCase() === 'array' || this.dataType.toLowerCase() === 'list' || this.dataType.toLowerCase() === 'set');
-      this.descr = obj.description;
-      this.required = obj.required;
-      if (obj.items != null) {
-        if (obj.items.type != null) {
-          this.refDataType = obj.items.type;
-        }
-        if (obj.items.$ref != null) {
-          this.refDataType = obj.items.$ref;
-        }
-      }
-      this.dataTypeWithRef = this.refDataType != null ? this.dataType + '[' + this.refDataType + ']' : this.dataType;
-      if (obj.allowableValues != null) {
-        this.valueType = obj.allowableValues.valueType;
-        this.values = obj.allowableValues.values;
-        if (this.values != null) {
-          this.valuesString = "'" + this.values.join("' or '") + "'";
-        }
-      }
-      if (obj["enum"] != null) {
-        this.valueType = "string";
-        this.values = obj["enum"];
-        if (this.values != null) {
-          this.valueString = "'" + this.values.join("' or '") + "'";
-        }
-      }
-    }
-
-    SwaggerModelProperty.prototype.getSampleValue = function(modelsToIgnore) {
-      var result;
-      if ((this.refModel != null) && (modelsToIgnore.indexOf(this.refModel.name) === -1)) {
-        result = this.refModel.createJSONSample(modelsToIgnore);
-      } else {
-        if (this.isCollection) {
-          result = this.refDataType;
-        } else {
-          result = this.dataType;
-        }
-      }
-      if (this.isCollection) {
-        return [result];
-      } else {
-        return result;
-      }
-    };
-
-    SwaggerModelProperty.prototype.toString = function() {
-      var req, str;
-      req = this.required ? 'propReq' : 'propOpt';
-      str = '<span class="propName ' + req + '">' + this.name + '</span> (<span class="propType">' + this.dataTypeWithRef + '</span>';
-      if (!this.required) {
-        str += ', <span class="propOptKey">optional</span>';
-      }
-      str += ')';
-      if (this.values != null) {
-        str += " = <span class='propVals'>['" + this.values.join("' or '") + "']</span>";
-      }
-      if (this.descr != null) {
-        str += ': <span class="propDesc">' + this.descr + '</span>';
-      }
-      return str;
-    };
-
-    return SwaggerModelProperty;
-
-  })();
-
-  SwaggerOperation = (function() {
-    function SwaggerOperation(nickname, path, method, parameters, summary, notes, type, responseMessages, resource, consumes, produces) {
-      var parameter, v, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3,
-        _this = this;
-      this.nickname = nickname;
-      this.path = path;
-      this.method = method;
-      this.parameters = parameters != null ? parameters : [];
-      this.summary = summary;
-      this.notes = notes;
-      this.type = type;
-      this.responseMessages = responseMessages;
-      this.resource = resource;
-      this.consumes = consumes;
-      this.produces = produces;
-      this["do"] = __bind(this["do"], this);
-      if (this.nickname == null) {
-        this.resource.api.fail("SwaggerOperations must have a nickname.");
-      }
-      if (this.path == null) {
-        this.resource.api.fail("SwaggerOperation " + nickname + " is missing path.");
-      }
-      if (this.method == null) {
-        this.resource.api.fail("SwaggerOperation " + nickname + " is missing method.");
-      }
-      this.path = this.path.replace('{format}', 'json');
-      this.method = this.method.toLowerCase();
-      this.isGetMethod = this.method === "get";
-      this.resourceName = this.resource.name;
-      if (((_ref = this.type) != null ? _ref.toLowerCase() : void 0) === 'void') {
-        this.type = void 0;
-      }
-      if (this.type != null) {
-        this.responseClassSignature = this.getSignature(this.type, this.resource.models);
-        this.responseSampleJSON = this.getSampleJSON(this.type, this.resource.models);
-      }
-      this.responseMessages = this.responseMessages || [];
-      _ref1 = this.parameters;
-      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
-        parameter = _ref1[_i];
-        parameter.name = parameter.name || parameter.type || parameter.dataType;
-        type = parameter.type || parameter.dataType;
-        if (type.toLowerCase() === 'boolean') {
-          parameter.allowableValues = {};
-          parameter.allowableValues.values = ["true", "false"];
-        }
-        parameter.signature = this.getSignature(type, this.resource.models);
-        parameter.sampleJSON = this.getSampleJSON(type, this.resource.models);
-        if (parameter["enum"] != null) {
-          parameter.isList = true;
-          parameter.allowableValues = {};
-          parameter.allowableValues.descriptiveValues = [];
-          _ref2 = parameter["enum"];
-          for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
-            v = _ref2[_j];
-            if ((parameter.defaultValue != null) && parameter.defaultValue === v) {
-              parameter.allowableValues.descriptiveValues.push({
-                value: v,
-                isDefault: true
-              });
-            } else {
-              parameter.allowableValues.descriptiveValues.push({
-                value: v,
-                isDefault: false
-              });
-            }
-          }
-        }
-        if (parameter.allowableValues != null) {
-          if (parameter.allowableValues.valueType === "RANGE") {
-            parameter.isRange = true;
-          } else {
-            parameter.isList = true;
-          }
-          if (parameter.allowableValues.values != null) {
-            parameter.allowableValues.descriptiveValues = [];
-            _ref3 = parameter.allowableValues.values;
-            for (_k = 0, _len2 = _ref3.length; _k < _len2; _k++) {
-              v = _ref3[_k];
-              if ((parameter.defaultValue != null) && parameter.defaultValue === v) {
-                parameter.allowableValues.descriptiveValues.push({
-                  value: v,
-                  isDefault: true
-                });
-              } else {
-                parameter.allowableValues.descriptiveValues.push({
-                  value: v,
-                  isDefault: false
-                });
-              }
-            }
-          }
-        }
-      }
-      this.resource[this.nickname] = function(args, callback, error) {
-        return _this["do"](args, callback, error);
-      };
-      this.resource[this.nickname].help = function() {
-        return _this.help();
-      };
-    }
-
-    SwaggerOperation.prototype.isListType = function(type) {
-      if (type.indexOf('[') >= 0) {
-        return type.substring(type.indexOf('[') + 1, type.indexOf(']'));
-      } else {
-        return void 0;
-      }
-    };
-
-    SwaggerOperation.prototype.getSignature = function(type, models) {
-      var isPrimitive, listType;
-      listType = this.isListType(type);
-      isPrimitive = ((listType != null) && models[listType]) || (models[type] != null) ? false : true;
-      if (isPrimitive) {
-        return type;
-      } else {
-        if (listType != null) {
-          return models[listType].getMockSignature();
-        } else {
-          return models[type].getMockSignature();
-        }
-      }
-    };
-
-    SwaggerOperation.prototype.getSampleJSON = function(type, models) {
-      var isPrimitive, listType, val;
-      listType = this.isListType(type);
-      isPrimitive = ((listType != null) && models[listType]) || (models[type] != null) ? false : true;
-      val = isPrimitive ? void 0 : (listType != null ? models[listType].createJSONSample() : models[type].createJSONSample());
-      if (val) {
-        val = listType ? [val] : val;
-        return JSON.stringify(val, null, 2);
-      }
-    };
-
-    SwaggerOperation.prototype["do"] = function(args, opts, callback, error) {
-      var key, param, params, possibleParams, req, requestContentType, responseContentType, value, _i, _len, _ref;
-      if (args == null) {
-        args = {};
-      }
-      if (opts == null) {
-        opts = {};
-      }
-      requestContentType = null;
-      responseContentType = null;
-      if ((typeof args) === "function") {
-        error = opts;
-        callback = args;
-        args = {};
-      }
-      if ((typeof opts) === "function") {
-        error = callback;
-        callback = opts;
-      }
-      if (error == null) {
-        error = function(xhr, textStatus, error) {
-          return console.log(xhr, textStatus, error);
-        };
-      }
-      if (callback == null) {
-        callback = function(data) {
-          var content;
-          content = null;
-          if (data.content != null) {
-            content = data.content.data;
-          } else {
-            content = "no data";
-          }
-          return console.log("default callback: " + content);
-        };
-      }
-      params = {};
-      params.headers = [];
-      if (args.headers != null) {
-        params.headers = args.headers;
-        delete args.headers;
-      }
-      _ref = this.parameters;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        param = _ref[_i];
-        if (param.paramType === "header") {
-          if (args[param.name]) {
-            params.headers[param.name] = args[param.name];
-          }
-        }
-      }
-      if (args.body != null) {
-        params.body = args.body;
-        delete args.body;
-      }
-      possibleParams = (function() {
-        var _j, _len1, _ref1, _results;
-        _ref1 = this.parameters;
-        _results = [];
-        for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-          param = _ref1[_j];
-          if (param.paramType === "form" || param.paramType.toLowerCase() === "file") {
-            _results.push(param);
-          }
-        }
-        return _results;
-      }).call(this);
-      if (possibleParams) {
-        for (key in possibleParams) {
-          value = possibleParams[key];
-          if (args[value.name]) {
-            params[value.name] = args[value.name];
-          }
-        }
-      }
-      req = new SwaggerRequest(this.method, this.urlify(args), params, opts, callback, error, this);
-      if (opts.mock != null) {
-        return req;
-      } else {
-        return true;
-      }
-    };
-
-    SwaggerOperation.prototype.pathJson = function() {
-      return this.path.replace("{format}", "json");
-    };
-
-    SwaggerOperation.prototype.pathXml = function() {
-      return this.path.replace("{format}", "xml");
-    };
-
-    SwaggerOperation.prototype.urlify = function(args) {
-      var param, queryParams, reg, url, _i, _j, _len, _len1, _ref, _ref1;
-      url = this.resource.basePath + this.pathJson();
-      _ref = this.parameters;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        param = _ref[_i];
-        if (param.paramType === 'path') {
-          if (args[param.name]) {
-            reg = new RegExp('\{' + param.name + '[^\}]*\}', 'gi');
-            url = url.replace(reg, encodeURIComponent(args[param.name]));
-            delete args[param.name];
-          } else {
-            throw "" + param.name + " is a required path param.";
-          }
-        }
-      }
-      queryParams = "";
-      _ref1 = this.parameters;
-      for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
-        param = _ref1[_j];
-        if (param.paramType === 'query') {
-          if (args[param.name]) {
-            if (queryParams !== "") {
-              queryParams += "&";
-            }
-            queryParams += encodeURIComponent(param.name) + '=' + encodeURIComponent(args[param.name]);
-          }
-        }
-      }
-      if ((queryParams != null) && queryParams.length > 0) {
-        url += "?" + queryParams;
-      }
-      return url;
-    };
-
-    SwaggerOperation.prototype.supportHeaderParams = function() {
-      return this.resource.api.supportHeaderParams;
-    };
-
-    SwaggerOperation.prototype.supportedSubmitMethods = function() {
-      return this.resource.api.supportedSubmitMethods;
-    };
-
-    SwaggerOperation.prototype.getQueryParams = function(args) {
-      return this.getMatchingParams(['query'], args);
-    };
-
-    SwaggerOperation.prototype.getHeaderParams = function(args) {
-      return this.getMatchingParams(['header'], args);
-    };
-
-    SwaggerOperation.prototype.getMatchingParams = function(paramTypes, args) {
-      var matchingParams, name, param, value, _i, _len, _ref, _ref1;
-      matchingParams = {};
-      _ref = this.parameters;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        param = _ref[_i];
-        if (args && args[param.name]) {
-          matchingParams[param.name] = args[param.name];
-        }
-      }
-      _ref1 = this.resource.api.headers;
-      for (name in _ref1) {
-        value = _ref1[name];
-        matchingParams[name] = value;
-      }
-      return matchingParams;
-    };
-
-    SwaggerOperation.prototype.help = function() {
-      var msg, parameter, _i, _len, _ref;
-      msg = "";
-      _ref = this.parameters;
-      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-        parameter = _ref[_i];
-        if (msg !== "") {
-          msg += "\n";
-        }
-        msg += "* " + parameter.name + (parameter.required ? ' (required)' : '') + " - " + parameter.description;
-      }
-      return msg;
-    };
-
-    return SwaggerOperation;
-
-  })();
-
-  SwaggerRequest = (function() {
-    function SwaggerRequest(type, url, params, opts, successCallback, errorCallback, operation, execution) {
-      var body, e, fields, headers, key, myHeaders, name, obj, param, parent, possibleParams, requestContentType, responseContentType, urlEncoded, value, values,
-        _this = this;
-      this.type = type;
-      this.url = url;
-      this.params = params;
-      this.opts = opts;
-      this.successCallback = successCallback;
-      this.errorCallback = errorCallback;
-      this.operation = operation;
-      this.execution = execution;
-      if (this.type == null) {
-        throw "SwaggerRequest type is required (get/post/put/delete).";
-      }
-      if (this.url == null) {
-        throw "SwaggerRequest url is required.";
-      }
-      if (this.successCallback == null) {
-        throw "SwaggerRequest successCallback is required.";
-      }
-      if (this.errorCallback == null) {
-        throw "SwaggerRequest error callback is required.";
-      }
-      if (this.operation == null) {
-        throw "SwaggerRequest operation is required.";
-      }
-      this.type = this.type.toUpperCase();
-      headers = params.headers;
-      myHeaders = {};
-      body = params.body;
-      parent = params["parent"];
-      requestContentType = "application/json";
-      if (body && (this.type === "POST" || this.type === "PUT" || this.type === "PATCH")) {
-        if (this.opts.requestContentType) {
-          requestContentType = this.opts.requestContentType;
-        }
-      } else {
-        if (((function() {
-          var _i, _len, _ref, _results;
-          _ref = this.operation.parameters;
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            param = _ref[_i];
-            if (param.paramType === "form") {
-              _results.push(param);
-            }
-          }
-          return _results;
-        }).call(this)).length > 0) {
-          type = param.type || param.dataType;
-          if (((function() {
-            var _i, _len, _ref, _results;
-            _ref = this.operation.parameters;
-            _results = [];
-            for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-              param = _ref[_i];
-              if (type.toLowerCase() === "file") {
-                _results.push(param);
-              }
-            }
-            return _results;
-          }).call(this)).length > 0) {
-            requestContentType = "multipart/form-data";
-          } else {
-            requestContentType = "application/x-www-form-urlencoded";
-          }
-        } else if (this.type !== "DELETE") {
-          requestContentType = null;
-        }
-      }
-      if (requestContentType && this.operation.consumes) {
-        if (this.operation.consumes.indexOf(requestContentType) === -1) {
-          console.log("server doesn't consume " + requestContentType + ", try " + JSON.stringify(this.operation.consumes));
-          if (this.requestContentType === null) {
-            requestContentType = this.operation.consumes[0];
-          }
-        }
-      }
-      responseContentType = null;
-      if (this.type === "POST" || this.type === "GET" || this.type === "PATCH") {
-        if (this.opts.responseContentType) {
-          responseContentType = this.opts.responseContentType;
-        } else {
-          responseContentType = "application/json";
-        }
-      } else {
-        responseContentType = null;
-      }
-      if (responseContentType && this.operation.produces) {
-        if (this.operation.produces.indexOf(responseContentType) === -1) {
-          console.log("server can't produce " + responseContentType);
-        }
-      }
-      if (requestContentType && requestContentType.indexOf("application/x-www-form-urlencoded") === 0) {
-        fields = {};
-        possibleParams = (function() {
-          var _i, _len, _ref, _results;
-          _ref = this.operation.parameters;
-          _results = [];
-          for (_i = 0, _len = _ref.length; _i < _len; _i++) {
-            param = _ref[_i];
-            if (param.paramType === "form") {
-              _results.push(param);
-            }
-          }
-          return _results;
-        }).call(this);
-        values = {};
-        for (key in possibleParams) {
-          value = possibleParams[key];
-          if (this.params[value.name]) {
-            values[value.name] = this.params[value.name];
-          }
-        }
-        urlEncoded = "";
-        for (key in values) {
-          value = values[key];
-          if (urlEncoded !== "") {
-            urlEncoded += "&";
-          }
-          urlEncoded += encodeURIComponent(key) + '=' + encodeURIComponent(value);
-        }
-        body = urlEncoded;
-      }
-      for (name in headers) {
-        myHeaders[name] = headers[name];
-      }
-      if (requestContentType) {
-        myHeaders["Content-Type"] = requestContentType;
-      }
-      if (responseContentType) {
-        myHeaders["Accept"] = responseContentType;
-      }
-      if (!((headers != null) && (headers.mock != null))) {
-        obj = {
-          url: this.url,
-          method: this.type,
-          headers: myHeaders,
-          body: body,
-          on: {
-            error: function(response) {
-              return _this.errorCallback(response, _this.opts.parent);
-            },
-            redirect: function(response) {
-              return _this.successCallback(response, _this.opts.parent);
-            },
-            307: function(response) {
-              return _this.successCallback(response, _this.opts.parent);
-            },
-            response: function(response) {
-              return _this.successCallback(response, _this.opts.parent);
-            }
-          }
-        };
-        e = {};
-        if (typeof window !== 'undefined') {
-          e = window;
-        } else {
-          e = exports;
-        }
-        e.authorizations.apply(obj);
-        if (opts.mock == null) {
-          new SwaggerHttp().execute(obj);
-        } else {
-          console.log(obj);
-          return obj;
-        }
-      }
-    }
-
-    SwaggerRequest.prototype.asCurl = function() {
-      var header_args, k, v;
-      header_args = (function() {
-        var _ref, _results;
-        _ref = this.headers;
-        _results = [];
-        for (k in _ref) {
-          v = _ref[k];
-          _results.push("--header \"" + k + ": " + v + "\"");
-        }
-        return _results;
-      }).call(this);
-      return "curl " + (header_args.join(" ")) + " " + this.url;
-    };
-
-    return SwaggerRequest;
-
-  })();
-
-  SwaggerHttp = (function() {
-    SwaggerHttp.prototype.Shred = null;
-
-    SwaggerHttp.prototype.shred = null;
-
-    SwaggerHttp.prototype.content = null;
-
-    function SwaggerHttp() {
-      var identity, toString,
-        _this = this;
-      if (typeof window !== 'undefined') {
-        this.Shred = require("./shred");
-      } else {
-        this.Shred = require("shred");
-      }
-      this.shred = new this.Shred();
-      identity = function(x) {
-        return x;
-      };
-      toString = function(x) {
-        return x.toString();
-      };
-      if (typeof window !== 'undefined') {
-        this.content = require("./shred/content");
-        this.content.registerProcessor(["application/json; charset=utf-8", "application/json", "json"], {
-          parser: identity,
-          stringify: toString
-        });
-      } else {
-        this.Shred.registerProcessor(["application/json; charset=utf-8", "application/json", "json"], {
-          parser: identity,
-          stringify: toString
-        });
-      }
-    }
-
-    SwaggerHttp.prototype.execute = function(obj) {
-      return this.shred.request(obj);
-    };
-
-    return SwaggerHttp;
-
-  })();
-
-  SwaggerAuthorizations = (function() {
-    SwaggerAuthorizations.prototype.authz = null;
-
-    function SwaggerAuthorizations() {
-      this.authz = {};
-    }
-
-    SwaggerAuthorizations.prototype.add = function(name, auth) {
-      this.authz[name] = auth;
-      return auth;
-    };
-
-    SwaggerAuthorizations.prototype.apply = function(obj) {
-      var key, value, _ref, _results;
-      _ref = this.authz;
-      _results = [];
-      for (key in _ref) {
-        value = _ref[key];
-        _results.push(value.apply(obj));
-      }
-      return _results;
-    };
-
-    return SwaggerAuthorizations;
-
-  })();
-
-  ApiKeyAuthorization = (function() {
-    ApiKeyAuthorization.prototype.type = null;
-
-    ApiKeyAuthorization.prototype.name = null;
-
-    ApiKeyAuthorization.prototype.value = null;
-
-    function ApiKeyAuthorization(name, value, type) {
-      this.name = name;
-      this.value = value;
-      this.type = type;
-    }
-
-    ApiKeyAuthorization.prototype.apply = function(obj) {
-      if (this.type === "query") {
-        if (obj.url.indexOf('?') > 0) {
-          obj.url = obj.url + "&" + this.name + "=" + this.value;
-        } else {
-          obj.url = obj.url + "?" + this.name + "=" + this.value;
-        }
-        return true;
-      } else if (this.type === "header") {
-        return obj.headers[this.name] = this.value;
-      }
-    };
-
-    return ApiKeyAuthorization;
-
-  })();
-
-  PasswordAuthorization = (function() {
-    PasswordAuthorization.prototype.name = null;
-
-    PasswordAuthorization.prototype.username = null;
-
-    PasswordAuthorization.prototype.password = null;
-
-    function PasswordAuthorization(name, username, password) {
-      this.name = name;
-      this.username = username;
-      this.password = password;
-    }
-
-    PasswordAuthorization.prototype.apply = function(obj) {
-      return obj.headers["Authorization"] = "Basic " + btoa(this.username + ":" + this.password);
-    };
-
-    return PasswordAuthorization;
-
-  })();
-
-  this.SwaggerApi = SwaggerApi;
-
-  this.SwaggerResource = SwaggerResource;
-
-  this.SwaggerOperation = SwaggerOperation;
-
-  this.SwaggerRequest = SwaggerRequest;
-
-  this.SwaggerModelProperty = SwaggerModelProperty;
-
-  this.ApiKeyAuthorization = ApiKeyAuthorization;
-
-  this.PasswordAuthorization = PasswordAuthorization;
-
-  this.authorizations = new SwaggerAuthorizations();
-
-}).call(this);
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/swagger-ui.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/swagger-ui.js
deleted file mode 100644 (file)
index 56f284a..0000000
+++ /dev/null
@@ -1,2117 +0,0 @@
-$(function() {\r
-\r
-       // Helper function for vertically aligning DOM elements\r
-       // http://www.seodenver.com/simple-vertical-align-plugin-for-jquery/\r
-       $.fn.vAlign = function() {\r
-               return this.each(function(i){\r
-               var ah = $(this).height();\r
-               var ph = $(this).parent().height();\r
-               var mh = (ph - ah) / 2;\r
-               $(this).css('margin-top', mh);\r
-               });\r
-       };\r
-\r
-       $.fn.stretchFormtasticInputWidthToParent = function() {\r
-               return this.each(function(i){\r
-               var p_width = $(this).closest("form").innerWidth();\r
-               var p_padding = parseInt($(this).closest("form").css('padding-left') ,10) + parseInt($(this).closest("form").css('padding-right'), 10);\r
-               var this_padding = parseInt($(this).css('padding-left'), 10) + parseInt($(this).css('padding-right'), 10);\r
-               $(this).css('width', p_width - p_padding - this_padding);\r
-               });\r
-       };\r
-\r
-       $('form.formtastic li.string input, form.formtastic textarea').stretchFormtasticInputWidthToParent();\r
-\r
-       // Vertically center these paragraphs\r
-       // Parent may need a min-height for this to work..\r
-       $('ul.downplayed li div.content p').vAlign();\r
-\r
-       // When a sandbox form is submitted..\r
-       $("form.sandbox").submit(function(){\r
-\r
-               var error_free = true;\r
-\r
-               // Cycle through the forms required inputs\r
-               $(this).find("input.required").each(function() {\r
-\r
-                       // Remove any existing error styles from the input\r
-                       $(this).removeClass('error');\r
-\r
-                       // Tack the error style on if the input is empty..\r
-                       if ($(this).val() == '') {\r
-                               $(this).addClass('error');\r
-                               $(this).wiggle();\r
-                               error_free = false;\r
-                       }\r
-\r
-               });\r
-\r
-               return error_free;\r
-       });\r
-\r
-});\r
-\r
-function clippyCopiedCallback(a) {\r
-  $('#api_key_copied').fadeIn().delay(1000).fadeOut();\r
-\r
-  // var b = $("#clippy_tooltip_" + a);\r
-  // b.length != 0 && (b.attr("title", "copied!").trigger("tipsy.reload"), setTimeout(function() {\r
-  //   b.attr("title", "copy to clipboard")\r
-  // },\r
-  // 500))\r
-}\r
-\r
-// Logging function that accounts for browsers that don't have window.console\r
-function log() {\r
-  if (window.console) console.log.apply(console,arguments);\r
-}\r
-// Handle browsers that do console incorrectly (IE9 and below, see http://stackoverflow.com/a/5539378/7913)\r
-if (Function.prototype.bind && console && typeof console.log == "object") {\r
-    [\r
-      "log","info","warn","error","assert","dir","clear","profile","profileEnd"\r
-    ].forEach(function (method) {\r
-        console[method] = this.bind(console[method], console);\r
-    }, Function.prototype.call);\r
-}\r
-\r
-var Docs = {\r
-\r
-       shebang: function() {\r
-\r
-               // If shebang has an operation nickname in it..\r
-               // e.g. /docs/#!/words/get_search\r
-               var fragments = $.param.fragment().split('/');\r
-               fragments.shift(); // get rid of the bang\r
-\r
-               switch (fragments.length) {\r
-                       case 1:\r
-                               // Expand all operations for the resource and scroll to it\r
-//                             log('shebang resource:' + fragments[0]);\r
-                               var dom_id = 'resource_' + fragments[0];\r
-\r
-                               Docs.expandEndpointListForResource(fragments[0]);\r
-                               $("#"+dom_id).slideto({highlight: false});\r
-                               break;\r
-                       case 2:\r
-                               // Refer to the endpoint DOM element, e.g. #words_get_search\r
-//                             log('shebang endpoint: ' + fragments.join('_'));\r
-\r
-                // Expand Resource\r
-                Docs.expandEndpointListForResource(fragments[0]);\r
-                $("#"+dom_id).slideto({highlight: false});\r
-\r
-                // Expand operation\r
-                               var li_dom_id = fragments.join('_');\r
-                               var li_content_dom_id = li_dom_id + "_content";\r
-\r
-//                log("li_dom_id " + li_dom_id);\r
-//                log("li_content_dom_id " + li_content_dom_id);\r
-\r
-                               Docs.expandOperation($('#'+li_content_dom_id));\r
-                               $('#'+li_dom_id).slideto({highlight: false});\r
-                               break;\r
-               }\r
-\r
-       },\r
-\r
-       toggleEndpointListForResource: function(resource) {\r
-               var elem = $('li#resource_' + Docs.escapeResourceName(resource) + ' ul.endpoints');\r
-               if (elem.is(':visible')) {\r
-                       Docs.collapseEndpointListForResource(resource);\r
-               } else {\r
-                       Docs.expandEndpointListForResource(resource);\r
-               }\r
-       },\r
-\r
-       // Expand resource\r
-       expandEndpointListForResource: function(resource) {\r
-               var resource = Docs.escapeResourceName(resource);\r
-               if (resource == '') {\r
-                       $('.resource ul.endpoints').slideDown();\r
-                       return;\r
-               }\r
-               \r
-               $('li#resource_' + resource).addClass('active');\r
-\r
-               var elem = $('li#resource_' + resource + ' ul.endpoints');\r
-               elem.slideDown();\r
-       },\r
-\r
-       // Collapse resource and mark as explicitly closed\r
-       collapseEndpointListForResource: function(resource) {\r
-               var resource = Docs.escapeResourceName(resource);\r
-               $('li#resource_' + resource).removeClass('active');\r
-\r
-               var elem = $('li#resource_' + resource + ' ul.endpoints');\r
-               elem.slideUp();\r
-       },\r
-\r
-       expandOperationsForResource: function(resource) {\r
-               // Make sure the resource container is open..\r
-               Docs.expandEndpointListForResource(resource);\r
-               \r
-               if (resource == '') {\r
-                       $('.resource ul.endpoints li.operation div.content').slideDown();\r
-                       return;\r
-               }\r
-\r
-               $('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() {\r
-                       Docs.expandOperation($(this));\r
-               });\r
-       },\r
-\r
-       collapseOperationsForResource: function(resource) {\r
-               // Make sure the resource container is open..\r
-               Docs.expandEndpointListForResource(resource);\r
-\r
-               $('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() {\r
-                       Docs.collapseOperation($(this));\r
-               });\r
-       },\r
-\r
-       escapeResourceName: function(resource) {\r
-               return resource.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]\^`{|}~]/g, "\\$&");\r
-       },\r
-\r
-       expandOperation: function(elem) {\r
-               elem.slideDown();\r
-       },\r
-\r
-       collapseOperation: function(elem) {\r
-               elem.slideUp();\r
-       }\r
-\r
-};\r
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['content_type'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, functionType="function", self=this;
-
-function program1(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n  ";
-  stack1 = helpers.each.call(depth0, depth0.produces, {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n";
-  return buffer;
-  }
-function program2(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n        <option value=\"";
-  stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\">";
-  stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</option>\n       ";
-  return buffer;
-  }
-
-function program4(depth0,data) {
-  
-  
-  return "\n  <option value=\"application/json\">application/json</option>\n";
-  }
-
-  buffer += "<label for=\"contentType\"></label>\n<select name=\"contentType\">\n";
-  stack1 = helpers['if'].call(depth0, depth0.produces, {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n</select>\n";
-  return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['main'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-  
-  var buffer = "", stack1, stack2;
-  buffer += "\n    <div class=\"info_title\">"
-    + escapeExpression(((stack1 = ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.title)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
-    + "</div>\n    <div class=\"info_description\">";
-  stack2 = ((stack1 = ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.description)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1);
-  if(stack2 || stack2 === 0) { buffer += stack2; }
-  buffer += "</div>\n    ";
-  stack2 = helpers['if'].call(depth0, ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.termsOfServiceUrl), {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
-  if(stack2 || stack2 === 0) { buffer += stack2; }
-  buffer += "\n    ";
-  stack2 = helpers['if'].call(depth0, ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.contact), {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});
-  if(stack2 || stack2 === 0) { buffer += stack2; }
-  buffer += "\n    ";
-  stack2 = helpers['if'].call(depth0, ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.license), {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});
-  if(stack2 || stack2 === 0) { buffer += stack2; }
-  buffer += "\n  ";
-  return buffer;
-  }
-function program2(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "<div class=\"info_tos\"><a href=\""
-    + escapeExpression(((stack1 = ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.termsOfServiceUrl)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
-    + "\">Terms of service</a></div>";
-  return buffer;
-  }
-
-function program4(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "<div class='info_contact'><a href=\"mailto:"
-    + escapeExpression(((stack1 = ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.contact)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
-    + "\">Contact the developer</a></div>";
-  return buffer;
-  }
-
-function program6(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "<div class='info_license'><a href='"
-    + escapeExpression(((stack1 = ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.licenseUrl)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
-    + "'>"
-    + escapeExpression(((stack1 = ((stack1 = depth0.info),stack1 == null || stack1 === false ? stack1 : stack1.license)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
-    + "</a></div>";
-  return buffer;
-  }
-
-function program8(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n        , <span style=\"font-variant: small-caps\">api version</span>: ";
-  if (stack1 = helpers.apiVersion) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.apiVersion; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "\n        ";
-  return buffer;
-  }
-
-  buffer += "<div class='info' id='api_info'>\n  ";
-  stack1 = helpers['if'].call(depth0, depth0.info, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n</div>\n<div class='container' id='resources_container'>\n    <ul id='resources'>\n    </ul>\n\n    <div class=\"footer\">\n        <br>\n        <br>\n        <h4 style=\"color: #999\">[ <span style=\"font-variant: small-caps\">base url</span>: ";
-  if (stack1 = helpers.basePath) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.basePath; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "\n        ";
-  stack1 = helpers['if'].call(depth0, depth0.apiVersion, {hash:{},inverse:self.noop,fn:self.program(8, program8, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "]</h4>\n    </div>\n</div>\n";
-  return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['operation'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n        <h4>Implementation Notes</h4>\n        <p>";
-  if (stack1 = helpers.notes) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.notes; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</p>\n        ";
-  return buffer;
-  }
-
-function program3(depth0,data) {
-  
-  
-  return "\n          <h4>Response Class</h4>\n          <p><span class=\"model-signature\" /></p>\n          <br/>\n          <div class=\"response-content-type\" />\n        ";
-  }
-
-function program5(depth0,data) {
-  
-  
-  return "\n          <h4>Parameters</h4>\n          <table class='fullwidth'>\n          <thead>\n            <tr>\n            <th style=\"width: 100px; max-width: 100px\">Parameter</th>\n            <th style=\"width: 310px; max-width: 310px\">Value</th>\n            <th style=\"width: 200px; max-width: 200px\">Description</th>\n            <th style=\"width: 100px; max-width: 100px\">Parameter Type</th>\n            <th style=\"width: 220px; max-width: 230px\">Data Type</th>\n            </tr>\n          </thead>\n          <tbody class=\"operation-params\">\n\n          </tbody>\n          </table>\n          ";
-  }
-
-function program7(depth0,data) {
-  
-  
-  return "\n          <div style='margin:0;padding:0;display:inline'></div>\n          <h4>Error Status Codes</h4>\n          <table class='fullwidth'>\n            <thead>\n            <tr>\n              <th>HTTP Status Code</th>\n              <th>Reason</th>\n            </tr>\n            </thead>\n            <tbody class=\"operation-status\">\n            \n            </tbody>\n          </table>\n          ";
-  }
-
-function program9(depth0,data) {
-  
-  
-  return "\n          ";
-  }
-
-function program11(depth0,data) {
-  
-  
-  return "\n          <div class='sandbox_header'>\n            <input class='submit' name='commit' type='button' value='Try it out!' />\n            <a href='#' class='response_hider' style='display:none'>Hide Response</a>\n            <img alt='Throbber' class='response_throbber' src='images/throbber.gif' style='display:none' />\n          </div>\n          ";
-  }
-
-  buffer += "\n  <ul class='operations' >\n    <li class='";
-  if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + " operation' id='";
-  if (stack1 = helpers.resourceName) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.resourceName; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_";
-  if (stack1 = helpers.nickname) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.nickname; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_";
-  if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_";
-  if (stack1 = helpers.number) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.number; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'>\n      <div class='heading'>\n        <h3>\n          <span class='http_method'>\n          <a href='#!/";
-  if (stack1 = helpers.resourceName) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.resourceName; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "/";
-  if (stack1 = helpers.nickname) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.nickname; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_";
-  if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_";
-  if (stack1 = helpers.number) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.number; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "' class=\"toggleOperation\">";
-  if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</a>\n          </span>\n          <span class='path'>\n          <a href='#!/";
-  if (stack1 = helpers.resourceName) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.resourceName; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "/";
-  if (stack1 = helpers.nickname) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.nickname; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_";
-  if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_";
-  if (stack1 = helpers.number) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.number; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "' class=\"toggleOperation\">";
-  if (stack1 = helpers.path) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.path; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</a>\n          </span>\n        </h3>\n        <ul class='options'>\n          <li>\n          <a href='#!/";
-  if (stack1 = helpers.resourceName) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.resourceName; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "/";
-  if (stack1 = helpers.nickname) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.nickname; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_";
-  if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_";
-  if (stack1 = helpers.number) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.number; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "' class=\"toggleOperation\">";
-  if (stack1 = helpers.summary) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.summary; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</a>\n          </li>\n        </ul>\n      </div>\n      <div class='content' id='";
-  if (stack1 = helpers.resourceName) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.resourceName; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_";
-  if (stack1 = helpers.nickname) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.nickname; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_";
-  if (stack1 = helpers.method) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.method; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_";
-  if (stack1 = helpers.number) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.number; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_content' style='display:none'>\n        ";
-  stack1 = helpers['if'].call(depth0, depth0.notes, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n        ";
-  stack1 = helpers['if'].call(depth0, depth0.type, {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n        <form accept-charset='UTF-8' class='sandbox'>\n          <div style='margin:0;padding:0;display:inline'></div>\n          ";
-  stack1 = helpers['if'].call(depth0, depth0.parameters, {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n          ";
-  stack1 = helpers['if'].call(depth0, depth0.responseMessages, {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n          ";
-  stack1 = helpers['if'].call(depth0, depth0.isReadOnly, {hash:{},inverse:self.program(11, program11, data),fn:self.program(9, program9, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n        </form>\n        <div class='response' style='display:none'>\n          <h4>Request URL</h4>\n          <div class='block request_url'></div>\n          <h4>Response Body</h4>\n          <div class='block response_body'></div>\n          <h4>Response Code</h4>\n          <div class='block response_code'></div>\n          <h4>Response Headers</h4>\n          <div class='block response_headers'></div>\n        </div>\n      </div>\n    </li>\n  </ul>\n";
-  return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['param'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                ";
-  stack1 = helpers['if'].call(depth0, depth0.isFile, {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n        ";
-  return buffer;
-  }
-function program2(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                        <input type=\"file\" name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'/>\n                   <div class=\"parameter-content-type\" />\n              ";
-  return buffer;
-  }
-
-function program4(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                        ";
-  stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n                ";
-  return buffer;
-  }
-function program5(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                                <textarea class='body-textarea' name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'>";
-  if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</textarea>\n                   ";
-  return buffer;
-  }
-
-function program7(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                                <textarea class='body-textarea' name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'></textarea>\n                         <br />\n                                <div class=\"parameter-content-type\" />\n                      ";
-  return buffer;
-  }
-
-function program9(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                ";
-  stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(12, program12, data),fn:self.program(10, program10, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n        ";
-  return buffer;
-  }
-function program10(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                        <input class='parameter' minlength='0' name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "' placeholder='' type='text' value='";
-  if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'/>\n           ";
-  return buffer;
-  }
-
-function program12(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                        <input class='parameter' minlength='0' name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "' placeholder='' type='text' value=''/>\n               ";
-  return buffer;
-  }
-
-  buffer += "<td class='code'>";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</td>\n<td>\n\n ";
-  stack1 = helpers['if'].call(depth0, depth0.isBody, {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n\n</td>\n<td>";
-  if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</td>\n<td>";
-  if (stack1 = helpers.paramType) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.paramType; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</td>\n<td>\n     <span class=\"model-signature\"></span>\n</td>\n";
-  return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['param_list'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, stack2, self=this, functionType="function", escapeExpression=this.escapeExpression;
-
-function program1(depth0,data) {
-  
-  
-  return " multiple='multiple'";
-  }
-
-function program3(depth0,data) {
-  
-  
-  return "\n    ";
-  }
-
-function program5(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n      ";
-  stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(8, program8, data),fn:self.program(6, program6, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n    ";
-  return buffer;
-  }
-function program6(depth0,data) {
-  
-  
-  return "\n      ";
-  }
-
-function program8(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n        ";
-  stack1 = helpers['if'].call(depth0, depth0.allowMultiple, {hash:{},inverse:self.program(11, program11, data),fn:self.program(9, program9, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n      ";
-  return buffer;
-  }
-function program9(depth0,data) {
-  
-  
-  return "\n         ";
-  }
-
-function program11(depth0,data) {
-  
-  
-  return "\n          <option selected=\"\" value=''></option>\n         ";
-  }
-
-function program13(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n      ";
-  stack1 = helpers['if'].call(depth0, depth0.isDefault, {hash:{},inverse:self.program(16, program16, data),fn:self.program(14, program14, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n    ";
-  return buffer;
-  }
-function program14(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n        <option selected=\"\" value='";
-  if (stack1 = helpers.value) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.value; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'>";
-  if (stack1 = helpers.value) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.value; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + " (default)</option>\n      ";
-  return buffer;
-  }
-
-function program16(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n        <option value='";
-  if (stack1 = helpers.value) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.value; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'>";
-  if (stack1 = helpers.value) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.value; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</option>\n      ";
-  return buffer;
-  }
-
-  buffer += "<td class='code'>";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</td>\n<td>\n  <select ";
-  stack1 = helpers['if'].call(depth0, depth0.allowMultiple, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += " class='parameter' name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'>\n    ";
-  stack1 = helpers['if'].call(depth0, depth0.required, {hash:{},inverse:self.program(5, program5, data),fn:self.program(3, program3, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n    ";
-  stack2 = helpers.each.call(depth0, ((stack1 = depth0.allowableValues),stack1 == null || stack1 === false ? stack1 : stack1.descriptiveValues), {hash:{},inverse:self.noop,fn:self.program(13, program13, data),data:data});
-  if(stack2 || stack2 === 0) { buffer += stack2; }
-  buffer += "\n  </select>\n</td>\n<td>";
-  if (stack2 = helpers.description) { stack2 = stack2.call(depth0, {hash:{},data:data}); }
-  else { stack2 = depth0.description; stack2 = typeof stack2 === functionType ? stack2.apply(depth0) : stack2; }
-  if(stack2 || stack2 === 0) { buffer += stack2; }
-  buffer += "</td>\n<td>";
-  if (stack2 = helpers.paramType) { stack2 = stack2.call(depth0, {hash:{},data:data}); }
-  else { stack2 = depth0.paramType; stack2 = typeof stack2 === functionType ? stack2.apply(depth0) : stack2; }
-  if(stack2 || stack2 === 0) { buffer += stack2; }
-  buffer += "</td>\n<td><span class=\"model-signature\"></span></td>";
-  return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['param_readonly'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n        <textarea class='body-textarea' readonly='readonly' name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'>";
-  if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</textarea>\n    ";
-  return buffer;
-  }
-
-function program3(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n        ";
-  stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(6, program6, data),fn:self.program(4, program4, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n    ";
-  return buffer;
-  }
-function program4(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n            ";
-  if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "\n        ";
-  return buffer;
-  }
-
-function program6(depth0,data) {
-  
-  
-  return "\n            (empty)\n        ";
-  }
-
-  buffer += "<td class='code'>";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</td>\n<td>\n    ";
-  stack1 = helpers['if'].call(depth0, depth0.isBody, {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n</td>\n<td>";
-  if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</td>\n<td>";
-  if (stack1 = helpers.paramType) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.paramType; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</td>\n<td><span class=\"model-signature\"></span></td>\n";
-  return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['param_readonly_required'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n        <textarea class='body-textarea'  readonly='readonly' placeholder='(required)' name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'>";
-  if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</textarea>\n    ";
-  return buffer;
-  }
-
-function program3(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n        ";
-  stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(6, program6, data),fn:self.program(4, program4, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n    ";
-  return buffer;
-  }
-function program4(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n            ";
-  if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "\n        ";
-  return buffer;
-  }
-
-function program6(depth0,data) {
-  
-  
-  return "\n            (empty)\n        ";
-  }
-
-  buffer += "<td class='code required'>";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</td>\n<td>\n    ";
-  stack1 = helpers['if'].call(depth0, depth0.isBody, {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n</td>\n<td>";
-  if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</td>\n<td>";
-  if (stack1 = helpers.paramType) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.paramType; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</td>\n<td><span class=\"model-signature\"></span></td>\n";
-  return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['param_required'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
-
-function program1(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                ";
-  stack1 = helpers['if'].call(depth0, depth0.isFile, {hash:{},inverse:self.program(4, program4, data),fn:self.program(2, program2, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n        ";
-  return buffer;
-  }
-function program2(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                        <input type=\"file\" name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'/>\n           ";
-  return buffer;
-  }
-
-function program4(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                        ";
-  stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n                ";
-  return buffer;
-  }
-function program5(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                                <textarea class='body-textarea' placeholder='(required)' name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'>";
-  if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</textarea>\n                   ";
-  return buffer;
-  }
-
-function program7(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                                <textarea class='body-textarea' placeholder='(required)' name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'></textarea>\n                         <br />\n                                <div class=\"parameter-content-type\" />\n                      ";
-  return buffer;
-  }
-
-function program9(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                ";
-  stack1 = helpers['if'].call(depth0, depth0.isFile, {hash:{},inverse:self.program(12, program12, data),fn:self.program(10, program10, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n        ";
-  return buffer;
-  }
-function program10(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                        <input class='parameter' class='required' type='file' name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'/>\n           ";
-  return buffer;
-  }
-
-function program12(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                        ";
-  stack1 = helpers['if'].call(depth0, depth0.defaultValue, {hash:{},inverse:self.program(15, program15, data),fn:self.program(13, program13, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n                ";
-  return buffer;
-  }
-function program13(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                                <input class='parameter required' minlength='1' name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "' placeholder='(required)' type='text' value='";
-  if (stack1 = helpers.defaultValue) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.defaultValue; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'/>\n                   ";
-  return buffer;
-  }
-
-function program15(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n                                <input class='parameter required' minlength='1' name='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "' placeholder='(required)' type='text' value=''/>\n                     ";
-  return buffer;
-  }
-
-  buffer += "<td class='code required'>";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</td>\n<td>\n   ";
-  stack1 = helpers['if'].call(depth0, depth0.isBody, {hash:{},inverse:self.program(9, program9, data),fn:self.program(1, program1, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n</td>\n<td>\n   <strong>";
-  if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</strong>\n</td>\n<td>";
-  if (stack1 = helpers.paramType) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.paramType; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</td>\n<td><span class=\"model-signature\"></span></td>\n";
-  return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['parameter_content_type'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, functionType="function", self=this;
-
-function program1(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n  ";
-  stack1 = helpers.each.call(depth0, depth0.consumes, {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n";
-  return buffer;
-  }
-function program2(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n  <option value=\"";
-  stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\">";
-  stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</option>\n  ";
-  return buffer;
-  }
-
-function program4(depth0,data) {
-  
-  
-  return "\n  <option value=\"application/json\">application/json</option>\n";
-  }
-
-  buffer += "<label for=\"parameterContentType\"></label>\n<select name=\"parameterContentType\">\n";
-  stack1 = helpers['if'].call(depth0, depth0.consumes, {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n</select>\n";
-  return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['resource'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, options, functionType="function", escapeExpression=this.escapeExpression, self=this, blockHelperMissing=helpers.blockHelperMissing;
-
-function program1(depth0,data) {
-  
-  
-  return " : ";
-  }
-
-  buffer += "<div class='heading'>\n  <h2>\n    <a href='#!/";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "' onclick=\"Docs.toggleEndpointListForResource('";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "');\">";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</a> ";
-  options = {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data};
-  if (stack1 = helpers.description) { stack1 = stack1.call(depth0, options); }
-  else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if (!helpers.description) { stack1 = blockHelperMissing.call(depth0, stack1, options); }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  if (stack1 = helpers.description) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.description; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n  </h2>\n  <ul class='options'>\n    <li>\n      <a href='#!/";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "' id='endpointListTogger_";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'\n         onclick=\"Docs.toggleEndpointListForResource('";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "');\">Show/Hide</a>\n    </li>\n    <li>\n      <a href='#' onclick=\"Docs.collapseOperationsForResource('";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'); return false;\">\n        List Operations\n      </a>\n    </li>\n    <li>\n      <a href='#' onclick=\"Docs.expandOperationsForResource('";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'); return false;\">\n        Expand Operations\n      </a>\n    </li>\n    <li>\n      <a href='";
-  if (stack1 = helpers.url) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.url; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "'>Raw</a>\n    </li>\n  </ul>\n</div>\n<ul class='endpoints' id='";
-  if (stack1 = helpers.name) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.name; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "_endpoint_list' style='display:none'>\n\n</ul>\n";
-  return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['response_content_type'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, functionType="function", self=this;
-
-function program1(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n  ";
-  stack1 = helpers.each.call(depth0, depth0.produces, {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n";
-  return buffer;
-  }
-function program2(depth0,data) {
-  
-  var buffer = "", stack1;
-  buffer += "\n  <option value=\"";
-  stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\">";
-  stack1 = (typeof depth0 === functionType ? depth0.apply(depth0) : depth0);
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</option>\n  ";
-  return buffer;
-  }
-
-function program4(depth0,data) {
-  
-  
-  return "\n  <option value=\"application/json\">application/json</option>\n";
-  }
-
-  buffer += "<label for=\"responseContentType\"></label>\n<select name=\"responseContentType\">\n";
-  stack1 = helpers['if'].call(depth0, depth0.produces, {hash:{},inverse:self.program(4, program4, data),fn:self.program(1, program1, data),data:data});
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n</select>\n";
-  return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['signature'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression;
-
-
-  buffer += "<div>\n<ul class=\"signature-nav\">\n    <li><a class=\"description-link\" href=\"#\">Model</a></li>\n    <li><a class=\"snippet-link\" href=\"#\">Model Schema</a></li>\n</ul>\n<div>\n\n<div class=\"signature-container\">\n    <div class=\"description\">\n        ";
-  if (stack1 = helpers.signature) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.signature; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "\n    </div>\n\n    <div class=\"snippet\">\n        <pre><code>";
-  if (stack1 = helpers.sampleJSON) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.sampleJSON; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</code></pre>\n        <small class=\"notice\"></small>\n    </div>\n</div>\n\n";
-  return buffer;
-  });
-})();
-
-(function() {
-  var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
-templates['status_code'] = template(function (Handlebars,depth0,helpers,partials,data) {
-  this.compilerInfo = [4,'>= 1.0.0'];
-helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
-  var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression;
-
-
-  buffer += "<td width='15%' class='code'>";
-  if (stack1 = helpers.code) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.code; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  buffer += escapeExpression(stack1)
-    + "</td>\n<td>";
-  if (stack1 = helpers.message) { stack1 = stack1.call(depth0, {hash:{},data:data}); }
-  else { stack1 = depth0.message; stack1 = typeof stack1 === functionType ? stack1.apply(depth0) : stack1; }
-  if(stack1 || stack1 === 0) { buffer += stack1; }
-  buffer += "</td>\n";
-  return buffer;
-  });
-})();
-
-
-
-// Generated by CoffeeScript 1.6.3
-(function() {
-  var ContentTypeView, HeaderView, MainView, OperationView, ParameterContentTypeView, ParameterView, ResourceView, ResponseContentTypeView, SignatureView, StatusCodeView, SwaggerUi, _ref, _ref1, _ref10, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9,
-    __hasProp = {}.hasOwnProperty,
-    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
-
-  SwaggerUi = (function(_super) {
-    __extends(SwaggerUi, _super);
-
-    function SwaggerUi() {
-      _ref = SwaggerUi.__super__.constructor.apply(this, arguments);
-      return _ref;
-    }
-
-    SwaggerUi.prototype.dom_id = "swagger_ui";
-
-    SwaggerUi.prototype.options = null;
-
-    SwaggerUi.prototype.api = null;
-
-    SwaggerUi.prototype.headerView = null;
-
-    SwaggerUi.prototype.mainView = null;
-
-    SwaggerUi.prototype.initialize = function(options) {
-      var _this = this;
-      if (options == null) {
-        options = {};
-      }
-      if (options.dom_id != null) {
-        this.dom_id = options.dom_id;
-        delete options.dom_id;
-      }
-      if ($('#' + this.dom_id) == null) {
-        $('body').append('<div id="' + this.dom_id + '"></div>');
-      }
-      this.options = options;
-      this.options.success = function() {
-        return _this.render();
-      };
-      this.options.progress = function(d) {
-        return _this.showMessage(d);
-      };
-      this.options.failure = function(d) {
-        return _this.onLoadFailure(d);
-      };
-      this.headerView = new HeaderView({
-        el: $('#header')
-      });
-      return this.headerView.on('update-swagger-ui', function(data) {
-        return _this.updateSwaggerUi(data);
-      });
-    };
-
-    SwaggerUi.prototype.updateSwaggerUi = function(data) {
-      this.options.url = data.url;
-      return this.load();
-    };
-
-    SwaggerUi.prototype.load = function() {
-      var url, _ref1;
-      if ((_ref1 = this.mainView) != null) {
-        _ref1.clear();
-      }
-      url = this.options.url;
-      if (url.indexOf("http") !== 0) {
-        url = this.buildUrl(window.location.href.toString(), url);
-      }
-      this.options.url = url;
-      this.headerView.update(url);
-      this.api = new SwaggerApi(this.options);
-      this.api.build();
-      return this.api;
-    };
-
-    SwaggerUi.prototype.render = function() {
-      var _this = this;
-      this.showMessage('Finished Loading Resource Information. Rendering Swagger UI...');
-      this.mainView = new MainView({
-        model: this.api,
-        el: $('#' + this.dom_id)
-      }).render();
-      this.showMessage();
-      switch (this.options.docExpansion) {
-        case "full":
-          Docs.expandOperationsForResource('');
-          break;
-        case "list":
-          Docs.collapseOperationsForResource('');
-      }
-      if (this.options.onComplete) {
-        this.options.onComplete(this.api, this);
-      }
-      return setTimeout(function() {
-        return Docs.shebang();
-      }, 400);
-    };
-
-    SwaggerUi.prototype.buildUrl = function(base, url) {
-      var parts;
-      console.log("base is " + base);
-      parts = base.split("/");
-      base = parts[0] + "//" + parts[2];
-      if (url.indexOf("/") === 0) {
-        return base + url;
-      } else {
-        return base + "/" + url;
-      }
-    };
-
-    SwaggerUi.prototype.showMessage = function(data) {
-      if (data == null) {
-        data = '';
-      }
-      $('#message-bar').removeClass('message-fail');
-      $('#message-bar').addClass('message-success');
-      return $('#message-bar').html(data);
-    };
-
-    SwaggerUi.prototype.onLoadFailure = function(data) {
-      var val;
-      if (data == null) {
-        data = '';
-      }
-      $('#message-bar').removeClass('message-success');
-      $('#message-bar').addClass('message-fail');
-      val = $('#message-bar').html(data);
-      if (this.options.onFailure != null) {
-        this.options.onFailure(data);
-      }
-      return val;
-    };
-
-    return SwaggerUi;
-
-  })(Backbone.Router);
-
-  window.SwaggerUi = SwaggerUi;
-
-  HeaderView = (function(_super) {
-    __extends(HeaderView, _super);
-
-    function HeaderView() {
-      _ref1 = HeaderView.__super__.constructor.apply(this, arguments);
-      return _ref1;
-    }
-
-    HeaderView.prototype.events = {
-      'click #show-pet-store-icon': 'showPetStore',
-      'click #show-wordnik-dev-icon': 'showWordnikDev',
-      'click #explore': 'showCustom',
-      'keyup #input_baseUrl': 'showCustomOnKeyup',
-      'keyup #input_apiKey': 'showCustomOnKeyup'
-    };
-
-    HeaderView.prototype.initialize = function() {};
-
-    HeaderView.prototype.showPetStore = function(e) {
-      return this.trigger('update-swagger-ui', {
-        url: "http://petstore.swagger.wordnik.com/api/api-docs"
-      });
-    };
-
-    HeaderView.prototype.showWordnikDev = function(e) {
-      return this.trigger('update-swagger-ui', {
-        url: "http://api.wordnik.com/v4/resources.json"
-      });
-    };
-
-    HeaderView.prototype.showCustomOnKeyup = function(e) {
-      if (e.keyCode === 13) {
-        return this.showCustom();
-      }
-    };
-
-    HeaderView.prototype.showCustom = function(e) {
-      if (e != null) {
-        e.preventDefault();
-      }
-      return this.trigger('update-swagger-ui', {
-        url: $('#input_baseUrl').val(),
-        apiKey: $('#input_apiKey').val()
-      });
-    };
-
-    HeaderView.prototype.update = function(url, apiKey, trigger) {
-      if (trigger == null) {
-        trigger = false;
-      }
-      $('#input_baseUrl').val(url);
-      if (trigger) {
-        return this.trigger('update-swagger-ui', {
-          url: url
-        });
-      }
-    };
-
-    return HeaderView;
-
-  })(Backbone.View);
-
-  MainView = (function(_super) {
-    __extends(MainView, _super);
-
-    function MainView() {
-      _ref2 = MainView.__super__.constructor.apply(this, arguments);
-      return _ref2;
-    }
-
-    MainView.prototype.initialize = function() {};
-
-    MainView.prototype.render = function() {
-      var resource, _i, _len, _ref3;
-      $(this.el).html(Handlebars.templates.main(this.model));
-      _ref3 = this.model.apisArray;
-      for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
-        resource = _ref3[_i];
-        this.addResource(resource);
-      }
-      return this;
-    };
-
-    MainView.prototype.addResource = function(resource) {
-      var resourceView;
-      resourceView = new ResourceView({
-        model: resource,
-        tagName: 'li',
-        id: 'resource_' + resource.name,
-        className: 'resource'
-      });
-      return $('#resources').append(resourceView.render().el);
-    };
-
-    MainView.prototype.clear = function() {
-      return $(this.el).html('');
-    };
-
-    return MainView;
-
-  })(Backbone.View);
-
-  ResourceView = (function(_super) {
-    __extends(ResourceView, _super);
-
-    function ResourceView() {
-      _ref3 = ResourceView.__super__.constructor.apply(this, arguments);
-      return _ref3;
-    }
-
-    ResourceView.prototype.initialize = function() {};
-
-    ResourceView.prototype.render = function() {
-      var operation, _i, _len, _ref4;
-      console.log(this.model.description);
-      $(this.el).html(Handlebars.templates.resource(this.model));
-      this.number = 0;
-      _ref4 = this.model.operationsArray;
-      for (_i = 0, _len = _ref4.length; _i < _len; _i++) {
-        operation = _ref4[_i];
-        this.addOperation(operation);
-      }
-      return this;
-    };
-
-    ResourceView.prototype.addOperation = function(operation) {
-      var operationView;
-      operation.number = this.number;
-      operationView = new OperationView({
-        model: operation,
-        tagName: 'li',
-        className: 'endpoint'
-      });
-      $('.endpoints', $(this.el)).append(operationView.render().el);
-      return this.number++;
-    };
-
-    return ResourceView;
-
-  })(Backbone.View);
-
-  OperationView = (function(_super) {
-    __extends(OperationView, _super);
-
-    function OperationView() {
-      _ref4 = OperationView.__super__.constructor.apply(this, arguments);
-      return _ref4;
-    }
-
-    OperationView.prototype.invocationUrl = null;
-
-    OperationView.prototype.events = {
-      'submit .sandbox': 'submitOperation',
-      'click .submit': 'submitOperation',
-      'click .response_hider': 'hideResponse',
-      'click .toggleOperation': 'toggleOperationContent'
-    };
-
-    OperationView.prototype.initialize = function() {};
-
-    OperationView.prototype.render = function() {
-      var contentTypeModel, isMethodSubmissionSupported, param, responseContentTypeView, responseSignatureView, signatureModel, statusCode, type, _i, _j, _k, _len, _len1, _len2, _ref5, _ref6, _ref7;
-      isMethodSubmissionSupported = true;
-      if (!isMethodSubmissionSupported) {
-        this.model.isReadOnly = true;
-      }
-      $(this.el).html(Handlebars.templates.operation(this.model));
-      if (this.model.responseClassSignature && this.model.responseClassSignature !== 'string') {
-        signatureModel = {
-          sampleJSON: this.model.responseSampleJSON,
-          isParam: false,
-          signature: this.model.responseClassSignature
-        };
-        responseSignatureView = new SignatureView({
-          model: signatureModel,
-          tagName: 'div'
-        });
-        $('.model-signature', $(this.el)).append(responseSignatureView.render().el);
-      } else {
-        $('.model-signature', $(this.el)).html(this.model.type);
-      }
-      contentTypeModel = {
-        isParam: false
-      };
-      contentTypeModel.consumes = this.model.consumes;
-      contentTypeModel.produces = this.model.produces;
-      _ref5 = this.model.parameters;
-      for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
-        param = _ref5[_i];
-        type = param.type || param.dataType;
-        if (type.toLowerCase() === 'file') {
-          if (!contentTypeModel.consumes) {
-            console.log("set content type ");
-            contentTypeModel.consumes = 'multipart/form-data';
-          }
-        }
-      }
-      responseContentTypeView = new ResponseContentTypeView({
-        model: contentTypeModel
-      });
-      $('.response-content-type', $(this.el)).append(responseContentTypeView.render().el);
-      _ref6 = this.model.parameters;
-      for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
-        param = _ref6[_j];
-        this.addParameter(param, contentTypeModel.consumes);
-      }
-      _ref7 = this.model.responseMessages;
-      for (_k = 0, _len2 = _ref7.length; _k < _len2; _k++) {
-        statusCode = _ref7[_k];
-        this.addStatusCode(statusCode);
-      }
-      return this;
-    };
-
-    OperationView.prototype.addParameter = function(param, consumes) {
-      var paramView;
-      param.consumes = consumes;
-      paramView = new ParameterView({
-        model: param,
-        tagName: 'tr',
-        readOnly: this.model.isReadOnly
-      });
-      return $('.operation-params', $(this.el)).append(paramView.render().el);
-    };
-
-    OperationView.prototype.addStatusCode = function(statusCode) {
-      var statusCodeView;
-      statusCodeView = new StatusCodeView({
-        model: statusCode,
-        tagName: 'tr'
-      });
-      return $('.operation-status', $(this.el)).append(statusCodeView.render().el);
-    };
-
-    OperationView.prototype.submitOperation = function(e) {
-      var error_free, form, isFileUpload, map, o, opts, val, _i, _j, _k, _len, _len1, _len2, _ref5, _ref6, _ref7;
-      if (e != null) {
-        e.preventDefault();
-      }
-      form = $('.sandbox', $(this.el));
-      error_free = true;
-      form.find("input.required").each(function() {
-        var _this = this;
-        $(this).removeClass("error");
-        if (jQuery.trim($(this).val()) === "") {
-          $(this).addClass("error");
-          $(this).wiggle({
-            callback: function() {
-              return $(_this).focus();
-            }
-          });
-          return error_free = false;
-        }
-      });
-      if (error_free) {
-        map = {};
-        opts = {
-          parent: this
-        };
-        isFileUpload = false;
-        _ref5 = form.find("input");
-        for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
-          o = _ref5[_i];
-          if ((o.value != null) && jQuery.trim(o.value).length > 0) {
-            map[o.name] = o.value;
-          }
-          if (o.type === "file") {
-            isFileUpload = true;
-          }
-        }
-        _ref6 = form.find("textarea");
-        for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
-          o = _ref6[_j];
-          if ((o.value != null) && jQuery.trim(o.value).length > 0) {
-            map["body"] = o.value;
-          }
-        }
-        _ref7 = form.find("select");
-        for (_k = 0, _len2 = _ref7.length; _k < _len2; _k++) {
-          o = _ref7[_k];
-          val = this.getSelectedValue(o);
-          if ((val != null) && jQuery.trim(val).length > 0) {
-            map[o.name] = val;
-          }
-        }
-        opts.responseContentType = $("div select[name=responseContentType]", $(this.el)).val();
-        opts.requestContentType = $("div select[name=parameterContentType]", $(this.el)).val();
-        $(".response_throbber", $(this.el)).show();
-        if (isFileUpload) {
-          return this.handleFileUpload(map, form);
-        } else {
-          return this.model["do"](map, opts, this.showCompleteStatus, this.showErrorStatus, this);
-        }
-      }
-    };
-
-    OperationView.prototype.success = function(response, parent) {
-      return parent.showCompleteStatus(response);
-    };
-
-    OperationView.prototype.handleFileUpload = function(map, form) {
-      var bodyParam, headerParams, o, obj, param, _i, _j, _k, _len, _len1, _len2, _ref5, _ref6, _ref7,
-        _this = this;
-      console.log("it's a file upload");
-      _ref5 = form.serializeArray();
-      for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
-        o = _ref5[_i];
-        if ((o.value != null) && jQuery.trim(o.value).length > 0) {
-          map[o.name] = o.value;
-        }
-      }
-      bodyParam = new FormData();
-      _ref6 = this.model.parameters;
-      for (_j = 0, _len1 = _ref6.length; _j < _len1; _j++) {
-        param = _ref6[_j];
-        if (param.paramType === 'form') {
-          bodyParam.append(param.name, map[param.name]);
-        }
-      }
-      headerParams = {};
-      _ref7 = this.model.parameters;
-      for (_k = 0, _len2 = _ref7.length; _k < _len2; _k++) {
-        param = _ref7[_k];
-        if (param.paramType === 'header') {
-          headerParams[param.name] = map[param.name];
-        }
-      }
-      console.log(headerParams);
-      $.each($('input[type~="file"]'), function(i, el) {
-        return bodyParam.append($(el).attr('name'), el.files[0]);
-      });
-      console.log(bodyParam);
-      this.invocationUrl = this.model.supportHeaderParams() ? (headerParams = this.model.getHeaderParams(map), this.model.urlify(map, false)) : this.model.urlify(map, true);
-      $(".request_url", $(this.el)).html("<pre>" + this.invocationUrl + "</pre>");
-      obj = {
-        type: this.model.method,
-        url: this.invocationUrl,
-        headers: headerParams,
-        data: bodyParam,
-        dataType: 'json',
-        contentType: false,
-        processData: false,
-        error: function(data, textStatus, error) {
-          return _this.showErrorStatus(_this.wrap(data), _this);
-        },
-        success: function(data) {
-          return _this.showResponse(data, _this);
-        },
-        complete: function(data) {
-          return _this.showCompleteStatus(_this.wrap(data), _this);
-        }
-      };
-      if (window.authorizations) {
-        window.authorizations.apply(obj);
-      }
-      jQuery.ajax(obj);
-      return false;
-    };
-
-    OperationView.prototype.wrap = function(data) {
-      var o,
-        _this = this;
-      o = {};
-      o.content = {};
-      o.content.data = data.responseText;
-      o.getHeaders = function() {
-        return {
-          "Content-Type": data.getResponseHeader("Content-Type")
-        };
-      };
-      o.request = {};
-      o.request.url = this.invocationUrl;
-      o.status = data.status;
-      return o;
-    };
-
-    OperationView.prototype.getSelectedValue = function(select) {
-      var opt, options, _i, _len, _ref5;
-      if (!select.multiple) {
-        return select.value;
-      } else {
-        options = [];
-        _ref5 = select.options;
-        for (_i = 0, _len = _ref5.length; _i < _len; _i++) {
-          opt = _ref5[_i];
-          if (opt.selected) {
-            options.push(opt.value);
-          }
-        }
-        if (options.length > 0) {
-          return options.join(",");
-        } else {
-          return null;
-        }
-      }
-    };
-
-    OperationView.prototype.hideResponse = function(e) {
-      if (e != null) {
-        e.preventDefault();
-      }
-      $(".response", $(this.el)).slideUp();
-      return $(".response_hider", $(this.el)).fadeOut();
-    };
-
-    OperationView.prototype.showResponse = function(response) {
-      var prettyJson;
-      prettyJson = JSON.stringify(response, null, "\t").replace(/\n/g, "<br>");
-      return $(".response_body", $(this.el)).html(escape(prettyJson));
-    };
-
-    OperationView.prototype.showErrorStatus = function(data, parent) {
-      return parent.showStatus(data);
-    };
-
-    OperationView.prototype.showCompleteStatus = function(data, parent) {
-      return parent.showStatus(data);
-    };
-
-    OperationView.prototype.formatXml = function(xml) {
-      var contexp, formatted, indent, lastType, lines, ln, pad, reg, transitions, wsexp, _fn, _i, _len;
-      reg = /(>)(<)(\/*)/g;
-      wsexp = /[ ]*(.*)[ ]+\n/g;
-      contexp = /(<.+>)(.+\n)/g;
-      xml = xml.replace(reg, '$1\n$2$3').replace(wsexp, '$1\n').replace(contexp, '$1\n$2');
-      pad = 0;
-      formatted = '';
-      lines = xml.split('\n');
-      indent = 0;
-      lastType = 'other';
-      transitions = {
-        'single->single': 0,
-        'single->closing': -1,
-        'single->opening': 0,
-        'single->other': 0,
-        'closing->single': 0,
-        'closing->closing': -1,
-        'closing->opening': 0,
-        'closing->other': 0,
-        'opening->single': 1,
-        'opening->closing': 0,
-        'opening->opening': 1,
-        'opening->other': 1,
-        'other->single': 0,
-        'other->closing': -1,
-        'other->opening': 0,
-        'other->other': 0
-      };
-      _fn = function(ln) {
-        var fromTo, j, key, padding, type, types, value;
-        types = {
-          single: Boolean(ln.match(/<.+\/>/)),
-          closing: Boolean(ln.match(/<\/.+>/)),
-          opening: Boolean(ln.match(/<[^!?].*>/))
-        };
-        type = ((function() {
-          var _results;
-          _results = [];
-          for (key in types) {
-            value = types[key];
-            if (value) {
-              _results.push(key);
-            }
-          }
-          return _results;
-        })())[0];
-        type = type === void 0 ? 'other' : type;
-        fromTo = lastType + '->' + type;
-        lastType = type;
-        padding = '';
-        indent += transitions[fromTo];
-        padding = ((function() {
-          var _j, _ref5, _results;
-          _results = [];
-          for (j = _j = 0, _ref5 = indent; 0 <= _ref5 ? _j < _ref5 : _j > _ref5; j = 0 <= _ref5 ? ++_j : --_j) {
-            _results.push('  ');
-          }
-          return _results;
-        })()).join('');
-        if (fromTo === 'opening->closing') {
-          return formatted = formatted.substr(0, formatted.length - 1) + ln + '\n';
-        } else {
-          return formatted += padding + ln + '\n';
-        }
-      };
-      for (_i = 0, _len = lines.length; _i < _len; _i++) {
-        ln = lines[_i];
-        _fn(ln);
-      }
-      return formatted;
-    };
-
-    OperationView.prototype.showStatus = function(data) {
-      var code, content, contentType, headers, pre, response_body;
-      content = data.content.data;
-      headers = data.getHeaders();
-      contentType = headers["Content-Type"];
-      if (content === void 0) {
-        code = $('<code />').text("no content");
-        pre = $('<pre class="json" />').append(code);
-      } else if (contentType.indexOf("application/json") === 0 || contentType.indexOf("application/hal+json") === 0) {
-        code = $('<code />').text(JSON.stringify(JSON.parse(content), null, 2));
-        pre = $('<pre class="json" />').append(code);
-      } else if (contentType.indexOf("application/xml") === 0) {
-        code = $('<code />').text(this.formatXml(content));
-        pre = $('<pre class="xml" />').append(code);
-      } else if (contentType.indexOf("text/html") === 0) {
-        code = $('<code />').html(content);
-        pre = $('<pre class="xml" />').append(code);
-      } else if (contentType.indexOf("image/") === 0) {
-        pre = $('<img>').attr('src', data.request.url);
-      } else {
-        code = $('<code />').text(content);
-        pre = $('<pre class="json" />').append(code);
-      }
-      response_body = pre;
-      $(".request_url", $(this.el)).html("<pre>" + data.request.url + "</pre>");
-      $(".response_code", $(this.el)).html("<pre>" + data.status + "</pre>");
-      $(".response_body", $(this.el)).html(response_body);
-      $(".response_headers", $(this.el)).html("<pre>" + JSON.stringify(data.getHeaders(), null, "  ").replace(/\n/g, "<br>") + "</pre>");
-      $(".response", $(this.el)).slideDown();
-      $(".response_hider", $(this.el)).show();
-      $(".response_throbber", $(this.el)).hide();
-      return hljs.highlightBlock($('.response_body', $(this.el))[0]);
-    };
-
-    OperationView.prototype.toggleOperationContent = function() {
-      var elem;
-      elem = $('#' + Docs.escapeResourceName(this.model.resourceName) + "_" + this.model.nickname + "_" + this.model.method + "_" + this.model.number + "_content");
-      if (elem.is(':visible')) {
-        return Docs.collapseOperation(elem);
-      } else {
-        return Docs.expandOperation(elem);
-      }
-    };
-
-    return OperationView;
-
-  })(Backbone.View);
-
-  StatusCodeView = (function(_super) {
-    __extends(StatusCodeView, _super);
-
-    function StatusCodeView() {
-      _ref5 = StatusCodeView.__super__.constructor.apply(this, arguments);
-      return _ref5;
-    }
-
-    StatusCodeView.prototype.initialize = function() {};
-
-    StatusCodeView.prototype.render = function() {
-      var template;
-      template = this.template();
-      $(this.el).html(template(this.model));
-      return this;
-    };
-
-    StatusCodeView.prototype.template = function() {
-      return Handlebars.templates.status_code;
-    };
-
-    return StatusCodeView;
-
-  })(Backbone.View);
-
-  ParameterView = (function(_super) {
-    __extends(ParameterView, _super);
-
-    function ParameterView() {
-      _ref6 = ParameterView.__super__.constructor.apply(this, arguments);
-      return _ref6;
-    }
-
-    ParameterView.prototype.initialize = function() {};
-
-    ParameterView.prototype.render = function() {
-      var contentTypeModel, isParam, parameterContentTypeView, responseContentTypeView, signatureModel, signatureView, template, type;
-      type = this.model.type || this.model.dataType;
-      if (this.model.paramType === 'body') {
-        this.model.isBody = true;
-      }
-      if (type.toLowerCase() === 'file') {
-        this.model.isFile = true;
-      }
-      template = this.template();
-      $(this.el).html(template(this.model));
-      signatureModel = {
-        sampleJSON: this.model.sampleJSON,
-        isParam: true,
-        signature: this.model.signature
-      };
-      if (this.model.sampleJSON) {
-        signatureView = new SignatureView({
-          model: signatureModel,
-          tagName: 'div'
-        });
-        $('.model-signature', $(this.el)).append(signatureView.render().el);
-      } else {
-        $('.model-signature', $(this.el)).html(this.model.signature);
-      }
-      isParam = false;
-      if (this.model.isBody) {
-        isParam = true;
-      }
-      contentTypeModel = {
-        isParam: isParam
-      };
-      contentTypeModel.consumes = this.model.consumes;
-      if (isParam) {
-        parameterContentTypeView = new ParameterContentTypeView({
-          model: contentTypeModel
-        });
-        $('.parameter-content-type', $(this.el)).append(parameterContentTypeView.render().el);
-      } else {
-        responseContentTypeView = new ResponseContentTypeView({
-          model: contentTypeModel
-        });
-        $('.response-content-type', $(this.el)).append(responseContentTypeView.render().el);
-      }
-      return this;
-    };
-
-    ParameterView.prototype.template = function() {
-      if (this.model.isList) {
-        return Handlebars.templates.param_list;
-      } else {
-        if (this.options.readOnly) {
-          if (this.model.required) {
-            return Handlebars.templates.param_readonly_required;
-          } else {
-            return Handlebars.templates.param_readonly;
-          }
-        } else {
-          if (this.model.required) {
-            return Handlebars.templates.param_required;
-          } else {
-            return Handlebars.templates.param;
-          }
-        }
-      }
-    };
-
-    return ParameterView;
-
-  })(Backbone.View);
-
-  SignatureView = (function(_super) {
-    __extends(SignatureView, _super);
-
-    function SignatureView() {
-      _ref7 = SignatureView.__super__.constructor.apply(this, arguments);
-      return _ref7;
-    }
-
-    SignatureView.prototype.events = {
-      'click a.description-link': 'switchToDescription',
-      'click a.snippet-link': 'switchToSnippet',
-      'mousedown .snippet': 'snippetToTextArea'
-    };
-
-    SignatureView.prototype.initialize = function() {};
-
-    SignatureView.prototype.render = function() {
-      var template;
-      template = this.template();
-      $(this.el).html(template(this.model));
-      this.switchToDescription();
-      this.isParam = this.model.isParam;
-      if (this.isParam) {
-        $('.notice', $(this.el)).text('Click to set as parameter value');
-      }
-      return this;
-    };
-
-    SignatureView.prototype.template = function() {
-      return Handlebars.templates.signature;
-    };
-
-    SignatureView.prototype.switchToDescription = function(e) {
-      if (e != null) {
-        e.preventDefault();
-      }
-      $(".snippet", $(this.el)).hide();
-      $(".description", $(this.el)).show();
-      $('.description-link', $(this.el)).addClass('selected');
-      return $('.snippet-link', $(this.el)).removeClass('selected');
-    };
-
-    SignatureView.prototype.switchToSnippet = function(e) {
-      if (e != null) {
-        e.preventDefault();
-      }
-      $(".description", $(this.el)).hide();
-      $(".snippet", $(this.el)).show();
-      $('.snippet-link', $(this.el)).addClass('selected');
-      return $('.description-link', $(this.el)).removeClass('selected');
-    };
-
-    SignatureView.prototype.snippetToTextArea = function(e) {
-      var textArea;
-      if (this.isParam) {
-        if (e != null) {
-          e.preventDefault();
-        }
-        textArea = $('textarea', $(this.el.parentNode.parentNode.parentNode));
-        if ($.trim(textArea.val()) === '') {
-          return textArea.val(this.model.sampleJSON);
-        }
-      }
-    };
-
-    return SignatureView;
-
-  })(Backbone.View);
-
-  ContentTypeView = (function(_super) {
-    __extends(ContentTypeView, _super);
-
-    function ContentTypeView() {
-      _ref8 = ContentTypeView.__super__.constructor.apply(this, arguments);
-      return _ref8;
-    }
-
-    ContentTypeView.prototype.initialize = function() {};
-
-    ContentTypeView.prototype.render = function() {
-      var template;
-      template = this.template();
-      $(this.el).html(template(this.model));
-      $('label[for=contentType]', $(this.el)).text('Response Content Type');
-      return this;
-    };
-
-    ContentTypeView.prototype.template = function() {
-      return Handlebars.templates.content_type;
-    };
-
-    return ContentTypeView;
-
-  })(Backbone.View);
-
-  ResponseContentTypeView = (function(_super) {
-    __extends(ResponseContentTypeView, _super);
-
-    function ResponseContentTypeView() {
-      _ref9 = ResponseContentTypeView.__super__.constructor.apply(this, arguments);
-      return _ref9;
-    }
-
-    ResponseContentTypeView.prototype.initialize = function() {};
-
-    ResponseContentTypeView.prototype.render = function() {
-      var template;
-      template = this.template();
-      $(this.el).html(template(this.model));
-      $('label[for=responseContentType]', $(this.el)).text('Response Content Type');
-      return this;
-    };
-
-    ResponseContentTypeView.prototype.template = function() {
-      return Handlebars.templates.response_content_type;
-    };
-
-    return ResponseContentTypeView;
-
-  })(Backbone.View);
-
-  ParameterContentTypeView = (function(_super) {
-    __extends(ParameterContentTypeView, _super);
-
-    function ParameterContentTypeView() {
-      _ref10 = ParameterContentTypeView.__super__.constructor.apply(this, arguments);
-      return _ref10;
-    }
-
-    ParameterContentTypeView.prototype.initialize = function() {};
-
-    ParameterContentTypeView.prototype.render = function() {
-      var template;
-      template = this.template();
-      $(this.el).html(template(this.model));
-      $('label[for=parameterContentType]', $(this.el)).text('Parameter content type:');
-      return this;
-    };
-
-    ParameterContentTypeView.prototype.template = function() {
-      return Handlebars.templates.parameter_content_type;
-    };
-
-    return ParameterContentTypeView;
-
-  })(Backbone.View);
-
-}).call(this);
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/swagger-ui.min.js b/opendaylight/md-sal/sal-rest-docgen/src/main/resources/explorer/swagger-ui.min.js
deleted file mode 100644 (file)
index be2c105..0000000
+++ /dev/null
@@ -1 +0,0 @@
-$(function(){$.fn.vAlign=function(){return this.each(function(c){var a=$(this).height();var d=$(this).parent().height();var b=(d-a)/2;$(this).css("margin-top",b)})};$.fn.stretchFormtasticInputWidthToParent=function(){return this.each(function(b){var d=$(this).closest("form").innerWidth();var c=parseInt($(this).closest("form").css("padding-left"),10)+parseInt($(this).closest("form").css("padding-right"),10);var a=parseInt($(this).css("padding-left"),10)+parseInt($(this).css("padding-right"),10);$(this).css("width",d-c-a)})};$("form.formtastic li.string input, form.formtastic textarea").stretchFormtasticInputWidthToParent();$("ul.downplayed li div.content p").vAlign();$("form.sandbox").submit(function(){var a=true;$(this).find("input.required").each(function(){$(this).removeClass("error");if($(this).val()==""){$(this).addClass("error");$(this).wiggle();a=false}});return a})});function clippyCopiedCallback(b){$("#api_key_copied").fadeIn().delay(1000).fadeOut()}function log(){if(window.console){console.log.apply(console,arguments)}}if(Function.prototype.bind&&console&&typeof console.log=="object"){["log","info","warn","error","assert","dir","clear","profile","profileEnd"].forEach(function(a){console[a]=this.bind(console[a],console)},Function.prototype.call)}var Docs={shebang:function(){var b=$.param.fragment().split("/");b.shift();switch(b.length){case 1:var d="resource_"+b[0];Docs.expandEndpointListForResource(b[0]);$("#"+d).slideto({highlight:false});break;case 2:Docs.expandEndpointListForResource(b[0]);$("#"+d).slideto({highlight:false});var c=b.join("_");var a=c+"_content";Docs.expandOperation($("#"+a));$("#"+c).slideto({highlight:false});break}},toggleEndpointListForResource:function(b){var a=$("li#resource_"+Docs.escapeResourceName(b)+" ul.endpoints");if(a.is(":visible")){Docs.collapseEndpointListForResource(b)}else{Docs.expandEndpointListForResource(b)}},expandEndpointListForResource:function(b){var b=Docs.escapeResourceName(b);if(b==""){$(".resource ul.endpoints").slideDown();return}$("li#resource_"+b).addClass("active");var a=$("li#resource_"+b+" ul.endpoints");a.slideDown()},collapseEndpointListForResource:function(b){var b=Docs.escapeResourceName(b);$("li#resource_"+b).removeClass("active");var a=$("li#resource_"+b+" ul.endpoints");a.slideUp()},expandOperationsForResource:function(a){Docs.expandEndpointListForResource(a);if(a==""){$(".resource ul.endpoints li.operation div.content").slideDown();return}$("li#resource_"+Docs.escapeResourceName(a)+" li.operation div.content").each(function(){Docs.expandOperation($(this))})},collapseOperationsForResource:function(a){Docs.expandEndpointListForResource(a);$("li#resource_"+Docs.escapeResourceName(a)+" li.operation div.content").each(function(){Docs.collapseOperation($(this))})},escapeResourceName:function(a){return a.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]\^`{|}~]/g,"\\$&")},expandOperation:function(a){a.slideDown()},collapseOperation:function(a){a.slideUp()}};(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.content_type=b(function(g,l,f,k,j){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,g.helpers);j=j||{};var i="",c,h="function",m=this;function e(r,q){var o="",p;o+="\n  ";p=f.each.call(r,r.produces,{hash:{},inverse:m.noop,fn:m.program(2,d,q),data:q});if(p||p===0){o+=p}o+="\n";return o}function d(r,q){var o="",p;o+='\n      <option value="';p=(typeof r===h?r.apply(r):r);if(p||p===0){o+=p}o+='">';p=(typeof r===h?r.apply(r):r);if(p||p===0){o+=p}o+="</option>\n        ";return o}function n(p,o){return'\n  <option value="application/json">application/json</option>\n'}i+='<label for="contentType"></label>\n<select name="contentType">\n';c=f["if"].call(l,l.produces,{hash:{},inverse:m.program(4,n,j),fn:m.program(1,e,j),data:j});if(c||c===0){i+=c}i+="\n</select>\n";return i})})();(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.main=b(function(g,m,f,l,k){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,g.helpers);k=k||{};var i="",c,h="function",j=this.escapeExpression,p=this;function e(v,u){var r="",t,s;r+='\n    <div class="info_title">'+j(((t=((t=v.info),t==null||t===false?t:t.title)),typeof t===h?t.apply(v):t))+'</div>\n    <div class="info_description">';s=((t=((t=v.info),t==null||t===false?t:t.description)),typeof t===h?t.apply(v):t);if(s||s===0){r+=s}r+="</div>\n    ";s=f["if"].call(v,((t=v.info),t==null||t===false?t:t.termsOfServiceUrl),{hash:{},inverse:p.noop,fn:p.program(2,d,u),data:u});if(s||s===0){r+=s}r+="\n    ";s=f["if"].call(v,((t=v.info),t==null||t===false?t:t.contact),{hash:{},inverse:p.noop,fn:p.program(4,q,u),data:u});if(s||s===0){r+=s}r+="\n    ";s=f["if"].call(v,((t=v.info),t==null||t===false?t:t.license),{hash:{},inverse:p.noop,fn:p.program(6,o,u),data:u});if(s||s===0){r+=s}r+="\n  ";return r}function d(u,t){var r="",s;r+='<div class="info_tos"><a href="'+j(((s=((s=u.info),s==null||s===false?s:s.termsOfServiceUrl)),typeof s===h?s.apply(u):s))+'">Terms of service</a></div>';return r}function q(u,t){var r="",s;r+="<div class='info_contact'><a href=\"mailto:"+j(((s=((s=u.info),s==null||s===false?s:s.contact)),typeof s===h?s.apply(u):s))+'">Contact the developer</a></div>';return r}function o(u,t){var r="",s;r+="<div class='info_license'><a href='"+j(((s=((s=u.info),s==null||s===false?s:s.licenseUrl)),typeof s===h?s.apply(u):s))+"'>"+j(((s=((s=u.info),s==null||s===false?s:s.license)),typeof s===h?s.apply(u):s))+"</a></div>";return r}function n(u,t){var r="",s;r+='\n        , <span style="font-variant: small-caps">api version</span>: ';if(s=f.apiVersion){s=s.call(u,{hash:{},data:t})}else{s=u.apiVersion;s=typeof s===h?s.apply(u):s}r+=j(s)+"\n        ";return r}i+="<div class='info' id='api_info'>\n  ";c=f["if"].call(m,m.info,{hash:{},inverse:p.noop,fn:p.program(1,e,k),data:k});if(c||c===0){i+=c}i+="\n</div>\n<div class='container' id='resources_container'>\n    <ul id='resources'>\n    </ul>\n\n    <div class=\"footer\">\n        <br>\n        <br>\n        <h4 style=\"color: #999\">[ <span style=\"font-variant: small-caps\">base url</span>: ";if(c=f.basePath){c=c.call(m,{hash:{},data:k})}else{c=m.basePath;c=typeof c===h?c.apply(m):c}i+=j(c)+"\n        ";c=f["if"].call(m,m.apiVersion,{hash:{},inverse:p.noop,fn:p.program(8,n,k),data:k});if(c||c===0){i+=c}i+="]</h4>\n    </div>\n</div>\n";return i})})();(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.operation=b(function(h,n,g,m,l){this.compilerInfo=[4,">= 1.0.0"];g=this.merge(g,h.helpers);l=l||{};var j="",d,i="function",k=this.escapeExpression,r=this;function f(v,u){var s="",t;s+="\n        <h4>Implementation Notes</h4>\n        <p>";if(t=g.notes){t=t.call(v,{hash:{},data:u})}else{t=v.notes;t=typeof t===i?t.apply(v):t}if(t||t===0){s+=t}s+="</p>\n        ";return s}function c(t,s){return'\n          <h4>Response Class</h4>\n          <p><span class="model-signature" /></p>\n          <br/>\n          <div class="response-content-type" />\n        '}function q(t,s){return'\n          <h4>Parameters</h4>\n          <table class=\'fullwidth\'>\n          <thead>\n            <tr>\n            <th style="width: 100px; max-width: 100px">Parameter</th>\n            <th style="width: 310px; max-width: 310px">Value</th>\n            <th style="width: 200px; max-width: 200px">Description</th>\n            <th style="width: 100px; max-width: 100px">Parameter Type</th>\n            <th style="width: 220px; max-width: 230px">Data Type</th>\n            </tr>\n          </thead>\n          <tbody class="operation-params">\n\n          </tbody>\n          </table>\n          '}function p(t,s){return"\n          <div style='margin:0;padding:0;display:inline'></div>\n          <h4>Error Status Codes</h4>\n          <table class='fullwidth'>\n            <thead>\n            <tr>\n              <th>HTTP Status Code</th>\n              <th>Reason</th>\n            </tr>\n            </thead>\n            <tbody class=\"operation-status\">\n            \n            </tbody>\n          </table>\n          "}function o(t,s){return"\n          "}function e(t,s){return"\n          <div class='sandbox_header'>\n            <input class='submit' name='commit' type='button' value='Try it out!' />\n            <a href='#' class='response_hider' style='display:none'>Hide Response</a>\n            <img alt='Throbber' class='response_throbber' src='images/throbber.gif' style='display:none' />\n          </div>\n          "}j+="\n  <ul class='operations' >\n    <li class='";if(d=g.method){d=d.call(n,{hash:{},data:l})}else{d=n.method;d=typeof d===i?d.apply(n):d}j+=k(d)+" operation' id='";if(d=g.resourceName){d=d.call(n,{hash:{},data:l})}else{d=n.resourceName;d=typeof d===i?d.apply(n):d}j+=k(d)+"_";if(d=g.nickname){d=d.call(n,{hash:{},data:l})}else{d=n.nickname;d=typeof d===i?d.apply(n):d}j+=k(d)+"_";if(d=g.method){d=d.call(n,{hash:{},data:l})}else{d=n.method;d=typeof d===i?d.apply(n):d}j+=k(d)+"_";if(d=g.number){d=d.call(n,{hash:{},data:l})}else{d=n.number;d=typeof d===i?d.apply(n):d}j+=k(d)+"'>\n      <div class='heading'>\n        <h3>\n          <span class='http_method'>\n          <a href='#!/";if(d=g.resourceName){d=d.call(n,{hash:{},data:l})}else{d=n.resourceName;d=typeof d===i?d.apply(n):d}j+=k(d)+"/";if(d=g.nickname){d=d.call(n,{hash:{},data:l})}else{d=n.nickname;d=typeof d===i?d.apply(n):d}j+=k(d)+"_";if(d=g.method){d=d.call(n,{hash:{},data:l})}else{d=n.method;d=typeof d===i?d.apply(n):d}j+=k(d)+"_";if(d=g.number){d=d.call(n,{hash:{},data:l})}else{d=n.number;d=typeof d===i?d.apply(n):d}j+=k(d)+'\' class="toggleOperation">';if(d=g.method){d=d.call(n,{hash:{},data:l})}else{d=n.method;d=typeof d===i?d.apply(n):d}j+=k(d)+"</a>\n          </span>\n          <span class='path'>\n          <a href='#!/";if(d=g.resourceName){d=d.call(n,{hash:{},data:l})}else{d=n.resourceName;d=typeof d===i?d.apply(n):d}j+=k(d)+"/";if(d=g.nickname){d=d.call(n,{hash:{},data:l})}else{d=n.nickname;d=typeof d===i?d.apply(n):d}j+=k(d)+"_";if(d=g.method){d=d.call(n,{hash:{},data:l})}else{d=n.method;d=typeof d===i?d.apply(n):d}j+=k(d)+"_";if(d=g.number){d=d.call(n,{hash:{},data:l})}else{d=n.number;d=typeof d===i?d.apply(n):d}j+=k(d)+'\' class="toggleOperation">';if(d=g.path){d=d.call(n,{hash:{},data:l})}else{d=n.path;d=typeof d===i?d.apply(n):d}j+=k(d)+"</a>\n          </span>\n        </h3>\n        <ul class='options'>\n          <li>\n          <a href='#!/";if(d=g.resourceName){d=d.call(n,{hash:{},data:l})}else{d=n.resourceName;d=typeof d===i?d.apply(n):d}j+=k(d)+"/";if(d=g.nickname){d=d.call(n,{hash:{},data:l})}else{d=n.nickname;d=typeof d===i?d.apply(n):d}j+=k(d)+"_";if(d=g.method){d=d.call(n,{hash:{},data:l})}else{d=n.method;d=typeof d===i?d.apply(n):d}j+=k(d)+"_";if(d=g.number){d=d.call(n,{hash:{},data:l})}else{d=n.number;d=typeof d===i?d.apply(n):d}j+=k(d)+'\' class="toggleOperation">';if(d=g.summary){d=d.call(n,{hash:{},data:l})}else{d=n.summary;d=typeof d===i?d.apply(n):d}if(d||d===0){j+=d}j+="</a>\n          </li>\n        </ul>\n      </div>\n      <div class='content' id='";if(d=g.resourceName){d=d.call(n,{hash:{},data:l})}else{d=n.resourceName;d=typeof d===i?d.apply(n):d}j+=k(d)+"_";if(d=g.nickname){d=d.call(n,{hash:{},data:l})}else{d=n.nickname;d=typeof d===i?d.apply(n):d}j+=k(d)+"_";if(d=g.method){d=d.call(n,{hash:{},data:l})}else{d=n.method;d=typeof d===i?d.apply(n):d}j+=k(d)+"_";if(d=g.number){d=d.call(n,{hash:{},data:l})}else{d=n.number;d=typeof d===i?d.apply(n):d}j+=k(d)+"_content' style='display:none'>\n        ";d=g["if"].call(n,n.notes,{hash:{},inverse:r.noop,fn:r.program(1,f,l),data:l});if(d||d===0){j+=d}j+="\n        ";d=g["if"].call(n,n.type,{hash:{},inverse:r.noop,fn:r.program(3,c,l),data:l});if(d||d===0){j+=d}j+="\n        <form accept-charset='UTF-8' class='sandbox'>\n          <div style='margin:0;padding:0;display:inline'></div>\n          ";d=g["if"].call(n,n.parameters,{hash:{},inverse:r.noop,fn:r.program(5,q,l),data:l});if(d||d===0){j+=d}j+="\n          ";d=g["if"].call(n,n.responseMessages,{hash:{},inverse:r.noop,fn:r.program(7,p,l),data:l});if(d||d===0){j+=d}j+="\n          ";d=g["if"].call(n,n.isReadOnly,{hash:{},inverse:r.program(11,e,l),fn:r.program(9,o,l),data:l});if(d||d===0){j+=d}j+="\n        </form>\n        <div class='response' style='display:none'>\n          <h4>Request URL</h4>\n          <div class='block request_url'></div>\n          <h4>Response Body</h4>\n          <div class='block response_body'></div>\n          <h4>Response Code</h4>\n          <div class='block response_code'></div>\n          <h4>Response Headers</h4>\n          <div class='block response_headers'></div>\n        </div>\n      </div>\n    </li>\n  </ul>\n";return j})})();(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.param=b(function(f,q,o,j,s){this.compilerInfo=[4,">= 1.0.0"];o=this.merge(o,f.helpers);s=s||{};var p="",g,d="function",c=this.escapeExpression,n=this;function m(x,w){var u="",v;u+="\n         ";v=o["if"].call(x,x.isFile,{hash:{},inverse:n.program(4,k,w),fn:n.program(2,l,w),data:w});if(v||v===0){u+=v}u+="\n     ";return u}function l(x,w){var u="",v;u+='\n                    <input type="file" name=\'';if(v=o.name){v=v.call(x,{hash:{},data:w})}else{v=x.name;v=typeof v===d?v.apply(x):v}u+=c(v)+'\'/>\n                 <div class="parameter-content-type" />\n                ';return u}function k(x,w){var u="",v;u+="\n                    ";v=o["if"].call(x,x.defaultValue,{hash:{},inverse:n.program(7,h,w),fn:n.program(5,i,w),data:w});if(v||v===0){u+=v}u+="\n               ";return u}function i(x,w){var u="",v;u+="\n                            <textarea class='body-textarea' name='";if(v=o.name){v=v.call(x,{hash:{},data:w})}else{v=x.name;v=typeof v===d?v.apply(x):v}u+=c(v)+"'>";if(v=o.defaultValue){v=v.call(x,{hash:{},data:w})}else{v=x.defaultValue;v=typeof v===d?v.apply(x):v}u+=c(v)+"</textarea>\n                     ";return u}function h(x,w){var u="",v;u+="\n                            <textarea class='body-textarea' name='";if(v=o.name){v=v.call(x,{hash:{},data:w})}else{v=x.name;v=typeof v===d?v.apply(x):v}u+=c(v)+'\'></textarea>\n                           <br />\n                                <div class="parameter-content-type" />\n                        ';return u}function e(x,w){var u="",v;u+="\n            ";v=o["if"].call(x,x.defaultValue,{hash:{},inverse:n.program(12,r,w),fn:n.program(10,t,w),data:w});if(v||v===0){u+=v}u+="\n     ";return u}function t(x,w){var u="",v;u+="\n                    <input class='parameter' minlength='0' name='";if(v=o.name){v=v.call(x,{hash:{},data:w})}else{v=x.name;v=typeof v===d?v.apply(x):v}u+=c(v)+"' placeholder='' type='text' value='";if(v=o.defaultValue){v=v.call(x,{hash:{},data:w})}else{v=x.defaultValue;v=typeof v===d?v.apply(x):v}u+=c(v)+"'/>\n            ";return u}function r(x,w){var u="",v;u+="\n                    <input class='parameter' minlength='0' name='";if(v=o.name){v=v.call(x,{hash:{},data:w})}else{v=x.name;v=typeof v===d?v.apply(x):v}u+=c(v)+"' placeholder='' type='text' value=''/>\n           ";return u}p+="<td class='code'>";if(g=o.name){g=g.call(q,{hash:{},data:s})}else{g=q.name;g=typeof g===d?g.apply(q):g}p+=c(g)+"</td>\n<td>\n\n  ";g=o["if"].call(q,q.isBody,{hash:{},inverse:n.program(9,e,s),fn:n.program(1,m,s),data:s});if(g||g===0){p+=g}p+="\n\n</td>\n<td>";if(g=o.description){g=g.call(q,{hash:{},data:s})}else{g=q.description;g=typeof g===d?g.apply(q):g}if(g||g===0){p+=g}p+="</td>\n<td>";if(g=o.paramType){g=g.call(q,{hash:{},data:s})}else{g=q.paramType;g=typeof g===d?g.apply(q):g}if(g||g===0){p+=g}p+='</td>\n<td>\n        <span class="model-signature"></span>\n</td>\n';return p})})();(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.param_list=b(function(g,r,p,l,w){this.compilerInfo=[4,">= 1.0.0"];p=this.merge(p,g.helpers);w=w||{};var q="",i,e,o=this,d="function",c=this.escapeExpression;function n(y,x){return" multiple='multiple'"}function m(y,x){return"\n    "}function k(A,z){var x="",y;x+="\n      ";y=p["if"].call(A,A.defaultValue,{hash:{},inverse:o.program(8,h,z),fn:o.program(6,j,z),data:z});if(y||y===0){x+=y}x+="\n    ";return x}function j(y,x){return"\n      "}function h(A,z){var x="",y;x+="\n        ";y=p["if"].call(A,A.allowMultiple,{hash:{},inverse:o.program(11,v,z),fn:o.program(9,f,z),data:z});if(y||y===0){x+=y}x+="\n      ";return x}function f(y,x){return"\n         "}function v(y,x){return"\n          <option selected=\"\" value=''></option>\n         "}function u(A,z){var x="",y;x+="\n      ";y=p["if"].call(A,A.isDefault,{hash:{},inverse:o.program(16,s,z),fn:o.program(14,t,z),data:z});if(y||y===0){x+=y}x+="\n    ";return x}function t(A,z){var x="",y;x+='\n        <option selected="" value=\'';if(y=p.value){y=y.call(A,{hash:{},data:z})}else{y=A.value;y=typeof y===d?y.apply(A):y}x+=c(y)+"'>";if(y=p.value){y=y.call(A,{hash:{},data:z})}else{y=A.value;y=typeof y===d?y.apply(A):y}x+=c(y)+" (default)</option>\n      ";return x}function s(A,z){var x="",y;x+="\n        <option value='";if(y=p.value){y=y.call(A,{hash:{},data:z})}else{y=A.value;y=typeof y===d?y.apply(A):y}x+=c(y)+"'>";if(y=p.value){y=y.call(A,{hash:{},data:z})}else{y=A.value;y=typeof y===d?y.apply(A):y}x+=c(y)+"</option>\n      ";return x}q+="<td class='code'>";if(i=p.name){i=i.call(r,{hash:{},data:w})}else{i=r.name;i=typeof i===d?i.apply(r):i}q+=c(i)+"</td>\n<td>\n  <select ";i=p["if"].call(r,r.allowMultiple,{hash:{},inverse:o.noop,fn:o.program(1,n,w),data:w});if(i||i===0){q+=i}q+=" class='parameter' name='";if(i=p.name){i=i.call(r,{hash:{},data:w})}else{i=r.name;i=typeof i===d?i.apply(r):i}q+=c(i)+"'>\n    ";i=p["if"].call(r,r.required,{hash:{},inverse:o.program(5,k,w),fn:o.program(3,m,w),data:w});if(i||i===0){q+=i}q+="\n    ";e=p.each.call(r,((i=r.allowableValues),i==null||i===false?i:i.descriptiveValues),{hash:{},inverse:o.noop,fn:o.program(13,u,w),data:w});if(e||e===0){q+=e}q+="\n  </select>\n</td>\n<td>";if(e=p.description){e=e.call(r,{hash:{},data:w})}else{e=r.description;e=typeof e===d?e.apply(r):e}if(e||e===0){q+=e}q+="</td>\n<td>";if(e=p.paramType){e=e.call(r,{hash:{},data:w})}else{e=r.paramType;e=typeof e===d?e.apply(r):e}if(e||e===0){q+=e}q+='</td>\n<td><span class="model-signature"></span></td>';return q})})();(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.param_readonly=b(function(g,m,f,l,k){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,g.helpers);k=k||{};var i="",d,h="function",j=this.escapeExpression,o=this;function e(t,s){var q="",r;q+="\n        <textarea class='body-textarea' readonly='readonly' name='";if(r=f.name){r=r.call(t,{hash:{},data:s})}else{r=t.name;r=typeof r===h?r.apply(t):r}q+=j(r)+"'>";if(r=f.defaultValue){r=r.call(t,{hash:{},data:s})}else{r=t.defaultValue;r=typeof r===h?r.apply(t):r}q+=j(r)+"</textarea>\n    ";return q}function c(t,s){var q="",r;q+="\n        ";r=f["if"].call(t,t.defaultValue,{hash:{},inverse:o.program(6,n,s),fn:o.program(4,p,s),data:s});if(r||r===0){q+=r}q+="\n    ";return q}function p(t,s){var q="",r;q+="\n            ";if(r=f.defaultValue){r=r.call(t,{hash:{},data:s})}else{r=t.defaultValue;r=typeof r===h?r.apply(t):r}q+=j(r)+"\n        ";return q}function n(r,q){return"\n            (empty)\n        "}i+="<td class='code'>";if(d=f.name){d=d.call(m,{hash:{},data:k})}else{d=m.name;d=typeof d===h?d.apply(m):d}i+=j(d)+"</td>\n<td>\n    ";d=f["if"].call(m,m.isBody,{hash:{},inverse:o.program(3,c,k),fn:o.program(1,e,k),data:k});if(d||d===0){i+=d}i+="\n</td>\n<td>";if(d=f.description){d=d.call(m,{hash:{},data:k})}else{d=m.description;d=typeof d===h?d.apply(m):d}if(d||d===0){i+=d}i+="</td>\n<td>";if(d=f.paramType){d=d.call(m,{hash:{},data:k})}else{d=m.paramType;d=typeof d===h?d.apply(m):d}if(d||d===0){i+=d}i+='</td>\n<td><span class="model-signature"></span></td>\n';return i})})();(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.param_readonly_required=b(function(g,m,f,l,k){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,g.helpers);k=k||{};var i="",d,h="function",j=this.escapeExpression,o=this;function e(t,s){var q="",r;q+="\n        <textarea class='body-textarea'  readonly='readonly' placeholder='(required)' name='";if(r=f.name){r=r.call(t,{hash:{},data:s})}else{r=t.name;r=typeof r===h?r.apply(t):r}q+=j(r)+"'>";if(r=f.defaultValue){r=r.call(t,{hash:{},data:s})}else{r=t.defaultValue;r=typeof r===h?r.apply(t):r}q+=j(r)+"</textarea>\n    ";return q}function c(t,s){var q="",r;q+="\n        ";r=f["if"].call(t,t.defaultValue,{hash:{},inverse:o.program(6,n,s),fn:o.program(4,p,s),data:s});if(r||r===0){q+=r}q+="\n    ";return q}function p(t,s){var q="",r;q+="\n            ";if(r=f.defaultValue){r=r.call(t,{hash:{},data:s})}else{r=t.defaultValue;r=typeof r===h?r.apply(t):r}q+=j(r)+"\n        ";return q}function n(r,q){return"\n            (empty)\n        "}i+="<td class='code required'>";if(d=f.name){d=d.call(m,{hash:{},data:k})}else{d=m.name;d=typeof d===h?d.apply(m):d}i+=j(d)+"</td>\n<td>\n    ";d=f["if"].call(m,m.isBody,{hash:{},inverse:o.program(3,c,k),fn:o.program(1,e,k),data:k});if(d||d===0){i+=d}i+="\n</td>\n<td>";if(d=f.description){d=d.call(m,{hash:{},data:k})}else{d=m.description;d=typeof d===h?d.apply(m):d}if(d||d===0){i+=d}i+="</td>\n<td>";if(d=f.paramType){d=d.call(m,{hash:{},data:k})}else{d=m.paramType;d=typeof d===h?d.apply(m):d}if(d||d===0){i+=d}i+='</td>\n<td><span class="model-signature"></span></td>\n';return i})})();(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.param_required=b(function(f,q,o,j,u){this.compilerInfo=[4,">= 1.0.0"];o=this.merge(o,f.helpers);u=u||{};var p="",g,d="function",c=this.escapeExpression,n=this;function m(z,y){var w="",x;w+="\n              ";x=o["if"].call(z,z.isFile,{hash:{},inverse:n.program(4,k,y),fn:n.program(2,l,y),data:y});if(x||x===0){w+=x}w+="\n     ";return w}function l(z,y){var w="",x;w+='\n                    <input type="file" name=\'';if(x=o.name){x=x.call(z,{hash:{},data:y})}else{x=z.name;x=typeof x===d?x.apply(z):x}w+=c(x)+"'/>\n          ";return w}function k(z,y){var w="",x;w+="\n                    ";x=o["if"].call(z,z.defaultValue,{hash:{},inverse:n.program(7,h,y),fn:n.program(5,i,y),data:y});if(x||x===0){w+=x}w+="\n               ";return w}function i(z,y){var w="",x;w+="\n                            <textarea class='body-textarea' placeholder='(required)' name='";if(x=o.name){x=x.call(z,{hash:{},data:y})}else{x=z.name;x=typeof x===d?x.apply(z):x}w+=c(x)+"'>";if(x=o.defaultValue){x=x.call(z,{hash:{},data:y})}else{x=z.defaultValue;x=typeof x===d?x.apply(z):x}w+=c(x)+"</textarea>\n                    ";return w}function h(z,y){var w="",x;w+="\n                            <textarea class='body-textarea' placeholder='(required)' name='";if(x=o.name){x=x.call(z,{hash:{},data:y})}else{x=z.name;x=typeof x===d?x.apply(z):x}w+=c(x)+'\'></textarea>\n                          <br />\n                                <div class="parameter-content-type" />\n                        ';return w}function e(z,y){var w="",x;w+="\n            ";x=o["if"].call(z,z.isFile,{hash:{},inverse:n.program(12,t,y),fn:n.program(10,v,y),data:y});if(x||x===0){w+=x}w+="\n   ";return w}function v(z,y){var w="",x;w+="\n                    <input class='parameter' class='required' type='file' name='";if(x=o.name){x=x.call(z,{hash:{},data:y})}else{x=z.name;x=typeof x===d?x.apply(z):x}w+=c(x)+"'/>\n                ";return w}function t(z,y){var w="",x;w+="\n                    ";x=o["if"].call(z,z.defaultValue,{hash:{},inverse:n.program(15,r,y),fn:n.program(13,s,y),data:y});if(x||x===0){w+=x}w+="\n             ";return w}function s(z,y){var w="",x;w+="\n                            <input class='parameter required' minlength='1' name='";if(x=o.name){x=x.call(z,{hash:{},data:y})}else{x=z.name;x=typeof x===d?x.apply(z):x}w+=c(x)+"' placeholder='(required)' type='text' value='";if(x=o.defaultValue){x=x.call(z,{hash:{},data:y})}else{x=z.defaultValue;x=typeof x===d?x.apply(z):x}w+=c(x)+"'/>\n                 ";return w}function r(z,y){var w="",x;w+="\n                            <input class='parameter required' minlength='1' name='";if(x=o.name){x=x.call(z,{hash:{},data:y})}else{x=z.name;x=typeof x===d?x.apply(z):x}w+=c(x)+"' placeholder='(required)' type='text' value=''/>\n                        ";return w}p+="<td class='code required'>";if(g=o.name){g=g.call(q,{hash:{},data:u})}else{g=q.name;g=typeof g===d?g.apply(q):g}p+=c(g)+"</td>\n<td>\n   ";g=o["if"].call(q,q.isBody,{hash:{},inverse:n.program(9,e,u),fn:n.program(1,m,u),data:u});if(g||g===0){p+=g}p+="\n</td>\n<td>\n        <strong>";if(g=o.description){g=g.call(q,{hash:{},data:u})}else{g=q.description;g=typeof g===d?g.apply(q):g}if(g||g===0){p+=g}p+="</strong>\n</td>\n<td>";if(g=o.paramType){g=g.call(q,{hash:{},data:u})}else{g=q.paramType;g=typeof g===d?g.apply(q):g}if(g||g===0){p+=g}p+='</td>\n<td><span class="model-signature"></span></td>\n';return p})})();(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.parameter_content_type=b(function(g,l,f,k,j){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,g.helpers);j=j||{};var i="",c,h="function",m=this;function e(r,q){var o="",p;o+="\n  ";p=f.each.call(r,r.consumes,{hash:{},inverse:m.noop,fn:m.program(2,d,q),data:q});if(p||p===0){o+=p}o+="\n";return o}function d(r,q){var o="",p;o+='\n  <option value="';p=(typeof r===h?r.apply(r):r);if(p||p===0){o+=p}o+='">';p=(typeof r===h?r.apply(r):r);if(p||p===0){o+=p}o+="</option>\n  ";return o}function n(p,o){return'\n  <option value="application/json">application/json</option>\n'}i+='<label for="parameterContentType"></label>\n<select name="parameterContentType">\n';c=f["if"].call(l,l.consumes,{hash:{},inverse:m.program(4,n,j),fn:m.program(1,e,j),data:j});if(c||c===0){i+=c}i+="\n</select>\n";return i})})();(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.resource=b(function(f,l,e,k,j){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,f.helpers);j=j||{};var h="",c,o,g="function",i=this.escapeExpression,n=this,m=e.blockHelperMissing;function d(q,p){return" : "}h+="<div class='heading'>\n  <h2>\n    <a href='#!/";if(c=e.name){c=c.call(l,{hash:{},data:j})}else{c=l.name;c=typeof c===g?c.apply(l):c}h+=i(c)+"' onclick=\"Docs.toggleEndpointListForResource('";if(c=e.name){c=c.call(l,{hash:{},data:j})}else{c=l.name;c=typeof c===g?c.apply(l):c}h+=i(c)+"');\">";if(c=e.name){c=c.call(l,{hash:{},data:j})}else{c=l.name;c=typeof c===g?c.apply(l):c}h+=i(c)+"</a> ";o={hash:{},inverse:n.noop,fn:n.program(1,d,j),data:j};if(c=e.description){c=c.call(l,o)}else{c=l.description;c=typeof c===g?c.apply(l):c}if(!e.description){c=m.call(l,c,o)}if(c||c===0){h+=c}if(c=e.description){c=c.call(l,{hash:{},data:j})}else{c=l.description;c=typeof c===g?c.apply(l):c}if(c||c===0){h+=c}h+="\n  </h2>\n  <ul class='options'>\n    <li>\n      <a href='#!/";if(c=e.name){c=c.call(l,{hash:{},data:j})}else{c=l.name;c=typeof c===g?c.apply(l):c}h+=i(c)+"' id='endpointListTogger_";if(c=e.name){c=c.call(l,{hash:{},data:j})}else{c=l.name;c=typeof c===g?c.apply(l):c}h+=i(c)+"'\n         onclick=\"Docs.toggleEndpointListForResource('";if(c=e.name){c=c.call(l,{hash:{},data:j})}else{c=l.name;c=typeof c===g?c.apply(l):c}h+=i(c)+"');\">Show/Hide</a>\n    </li>\n    <li>\n      <a href='#' onclick=\"Docs.collapseOperationsForResource('";if(c=e.name){c=c.call(l,{hash:{},data:j})}else{c=l.name;c=typeof c===g?c.apply(l):c}h+=i(c)+"'); return false;\">\n        List Operations\n      </a>\n    </li>\n    <li>\n      <a href='#' onclick=\"Docs.expandOperationsForResource('";if(c=e.name){c=c.call(l,{hash:{},data:j})}else{c=l.name;c=typeof c===g?c.apply(l):c}h+=i(c)+"'); return false;\">\n        Expand Operations\n      </a>\n    </li>\n    <li>\n      <a href='";if(c=e.url){c=c.call(l,{hash:{},data:j})}else{c=l.url;c=typeof c===g?c.apply(l):c}h+=i(c)+"'>Raw</a>\n    </li>\n  </ul>\n</div>\n<ul class='endpoints' id='";if(c=e.name){c=c.call(l,{hash:{},data:j})}else{c=l.name;c=typeof c===g?c.apply(l):c}h+=i(c)+"_endpoint_list' style='display:none'>\n\n</ul>\n";return h})})();(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.response_content_type=b(function(g,l,f,k,j){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,g.helpers);j=j||{};var i="",c,h="function",m=this;function e(r,q){var o="",p;o+="\n  ";p=f.each.call(r,r.produces,{hash:{},inverse:m.noop,fn:m.program(2,d,q),data:q});if(p||p===0){o+=p}o+="\n";return o}function d(r,q){var o="",p;o+='\n  <option value="';p=(typeof r===h?r.apply(r):r);if(p||p===0){o+=p}o+='">';p=(typeof r===h?r.apply(r):r);if(p||p===0){o+=p}o+="</option>\n  ";return o}function n(p,o){return'\n  <option value="application/json">application/json</option>\n'}i+='<label for="responseContentType"></label>\n<select name="responseContentType">\n';c=f["if"].call(l,l.produces,{hash:{},inverse:m.program(4,n,j),fn:m.program(1,e,j),data:j});if(c||c===0){i+=c}i+="\n</select>\n";return i})})();(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.signature=b(function(e,k,d,j,i){this.compilerInfo=[4,">= 1.0.0"];d=this.merge(d,e.helpers);i=i||{};var g="",c,f="function",h=this.escapeExpression;g+='<div>\n<ul class="signature-nav">\n    <li><a class="description-link" href="#">Model</a></li>\n    <li><a class="snippet-link" href="#">Model Schema</a></li>\n</ul>\n<div>\n\n<div class="signature-container">\n    <div class="description">\n        ';if(c=d.signature){c=c.call(k,{hash:{},data:i})}else{c=k.signature;c=typeof c===f?c.apply(k):c}if(c||c===0){g+=c}g+='\n    </div>\n\n    <div class="snippet">\n        <pre><code>';if(c=d.sampleJSON){c=c.call(k,{hash:{},data:i})}else{c=k.sampleJSON;c=typeof c===f?c.apply(k):c}g+=h(c)+'</code></pre>\n        <small class="notice"></small>\n    </div>\n</div>\n\n';return g})})();(function(){var b=Handlebars.template,a=Handlebars.templates=Handlebars.templates||{};a.status_code=b(function(e,k,d,j,i){this.compilerInfo=[4,">= 1.0.0"];d=this.merge(d,e.helpers);i=i||{};var g="",c,f="function",h=this.escapeExpression;g+="<td width='15%' class='code'>";if(c=d.code){c=c.call(k,{hash:{},data:i})}else{c=k.code;c=typeof c===f?c.apply(k):c}g+=h(c)+"</td>\n<td>";if(c=d.message){c=c.call(k,{hash:{},data:i})}else{c=k.message;c=typeof c===f?c.apply(k):c}if(c||c===0){g+=c}g+="</td>\n";return g})})();(function(){var j,r,u,o,l,k,n,m,i,p,s,q,h,c,g,f,e,d,b,a,x,w,t={}.hasOwnProperty,v=function(B,z){for(var y in z){if(t.call(z,y)){B[y]=z[y]}}function A(){this.constructor=B}A.prototype=z.prototype;B.prototype=new A();B.__super__=z.prototype;return B};s=(function(z){v(y,z);function y(){q=y.__super__.constructor.apply(this,arguments);return q}y.prototype.dom_id="swagger_ui";y.prototype.options=null;y.prototype.api=null;y.prototype.headerView=null;y.prototype.mainView=null;y.prototype.initialize=function(A){var B=this;if(A==null){A={}}if(A.dom_id!=null){this.dom_id=A.dom_id;delete A.dom_id}if($("#"+this.dom_id)==null){$("body").append('<div id="'+this.dom_id+'"></div>')}this.options=A;this.options.success=function(){return B.render()};this.options.progress=function(C){return B.showMessage(C)};this.options.failure=function(C){return B.onLoadFailure(C)};this.headerView=new r({el:$("#header")});return this.headerView.on("update-swagger-ui",function(C){return B.updateSwaggerUi(C)})};y.prototype.updateSwaggerUi=function(A){this.options.url=A.url;return this.load()};y.prototype.load=function(){var B,A;if((A=this.mainView)!=null){A.clear()}B=this.options.url;if(B.indexOf("http")!==0){B=this.buildUrl(window.location.href.toString(),B)}this.options.url=B;this.headerView.update(B);this.api=new SwaggerApi(this.options);this.api.build();return this.api};y.prototype.render=function(){var A=this;this.showMessage("Finished Loading Resource Information. Rendering Swagger UI...");this.mainView=new u({model:this.api,el:$("#"+this.dom_id)}).render();this.showMessage();switch(this.options.docExpansion){case"full":Docs.expandOperationsForResource("");break;case"list":Docs.collapseOperationsForResource("")}if(this.options.onComplete){this.options.onComplete(this.api,this)}return setTimeout(function(){return Docs.shebang()},400)};y.prototype.buildUrl=function(B,A){var C;console.log("base is "+B);C=B.split("/");B=C[0]+"//"+C[2];if(A.indexOf("/")===0){return B+A}else{return B+"/"+A}};y.prototype.showMessage=function(A){if(A==null){A=""}$("#message-bar").removeClass("message-fail");$("#message-bar").addClass("message-success");return $("#message-bar").html(A)};y.prototype.onLoadFailure=function(A){var B;if(A==null){A=""}$("#message-bar").removeClass("message-success");$("#message-bar").addClass("message-fail");B=$("#message-bar").html(A);if(this.options.onFailure!=null){this.options.onFailure(A)}return B};return y})(Backbone.Router);window.SwaggerUi=s;r=(function(z){v(y,z);function y(){h=y.__super__.constructor.apply(this,arguments);return h}y.prototype.events={"click #show-pet-store-icon":"showPetStore","click #show-wordnik-dev-icon":"showWordnikDev","click #explore":"showCustom","keyup #input_baseUrl":"showCustomOnKeyup","keyup #input_apiKey":"showCustomOnKeyup"};y.prototype.initialize=function(){};y.prototype.showPetStore=function(A){return this.trigger("update-swagger-ui",{url:"http://petstore.swagger.wordnik.com/api/api-docs"})};y.prototype.showWordnikDev=function(A){return this.trigger("update-swagger-ui",{url:"http://api.wordnik.com/v4/resources.json"})};y.prototype.showCustomOnKeyup=function(A){if(A.keyCode===13){return this.showCustom()}};y.prototype.showCustom=function(A){if(A!=null){A.preventDefault()}return this.trigger("update-swagger-ui",{url:$("#input_baseUrl").val(),apiKey:$("#input_apiKey").val()})};y.prototype.update=function(B,C,A){if(A==null){A=false}$("#input_baseUrl").val(B);if(A){return this.trigger("update-swagger-ui",{url:B})}};return y})(Backbone.View);u=(function(y){v(z,y);function z(){g=z.__super__.constructor.apply(this,arguments);return g}z.prototype.initialize=function(){};z.prototype.render=function(){var C,B,A,D;$(this.el).html(Handlebars.templates.main(this.model));D=this.model.apisArray;for(B=0,A=D.length;B<A;B++){C=D[B];this.addResource(C)}return this};z.prototype.addResource=function(B){var A;A=new n({model:B,tagName:"li",id:"resource_"+B.name,className:"resource"});return $("#resources").append(A.render().el)};z.prototype.clear=function(){return $(this.el).html("")};return z})(Backbone.View);n=(function(z){v(y,z);function y(){f=y.__super__.constructor.apply(this,arguments);return f}y.prototype.initialize=function(){};y.prototype.render=function(){var B,C,A,D;console.log(this.model.description);$(this.el).html(Handlebars.templates.resource(this.model));this.number=0;D=this.model.operationsArray;for(C=0,A=D.length;C<A;C++){B=D[C];this.addOperation(B)}return this};y.prototype.addOperation=function(A){var B;A.number=this.number;B=new o({model:A,tagName:"li",className:"endpoint"});$(".endpoints",$(this.el)).append(B.render().el);return this.number++};return y})(Backbone.View);o=(function(z){v(y,z);function y(){e=y.__super__.constructor.apply(this,arguments);return e}y.prototype.invocationUrl=null;y.prototype.events={"submit .sandbox":"submitOperation","click .submit":"submitOperation","click .response_hider":"hideResponse","click .toggleOperation":"toggleOperationContent"};y.prototype.initialize=function(){};y.prototype.render=function(){var A,P,G,M,K,Q,L,N,J,I,H,O,E,C,F,D,B;P=true;if(!P){this.model.isReadOnly=true}$(this.el).html(Handlebars.templates.operation(this.model));if(this.model.responseClassSignature&&this.model.responseClassSignature!=="string"){Q={sampleJSON:this.model.responseSampleJSON,isParam:false,signature:this.model.responseClassSignature};K=new i({model:Q,tagName:"div"});$(".model-signature",$(this.el)).append(K.render().el)}else{$(".model-signature",$(this.el)).html(this.model.type)}A={isParam:false};A.consumes=this.model.consumes;A.produces=this.model.produces;F=this.model.parameters;for(J=0,O=F.length;J<O;J++){G=F[J];N=G.type||G.dataType;if(N.toLowerCase()==="file"){if(!A.consumes){console.log("set content type ");A.consumes="multipart/form-data"}}}M=new m({model:A});$(".response-content-type",$(this.el)).append(M.render().el);D=this.model.parameters;for(I=0,E=D.length;I<E;I++){G=D[I];this.addParameter(G,A.consumes)}B=this.model.responseMessages;for(H=0,C=B.length;H<C;H++){L=B[H];this.addStatusCode(L)}return this};y.prototype.addParameter=function(C,A){var B;C.consumes=A;B=new k({model:C,tagName:"tr",readOnly:this.model.isReadOnly});return $(".operation-params",$(this.el)).append(B.render().el)};y.prototype.addStatusCode=function(B){var A;A=new p({model:B,tagName:"tr"});return $(".operation-status",$(this.el)).append(A.render().el)};y.prototype.submitOperation=function(O){var Q,G,N,D,I,A,J,M,L,K,P,F,C,H,E,B;if(O!=null){O.preventDefault()}G=$(".sandbox",$(this.el));Q=true;G.find("input.required").each(function(){var R=this;$(this).removeClass("error");if(jQuery.trim($(this).val())===""){$(this).addClass("error");$(this).wiggle({callback:function(){return $(R).focus()}});return Q=false}});if(Q){D={};A={parent:this};N=false;H=G.find("input");for(M=0,P=H.length;M<P;M++){I=H[M];if((I.value!=null)&&jQuery.trim(I.value).length>0){D[I.name]=I.value}if(I.type==="file"){N=true}}E=G.find("textarea");for(L=0,F=E.length;L<F;L++){I=E[L];if((I.value!=null)&&jQuery.trim(I.value).length>0){D.body=I.value}}B=G.find("select");for(K=0,C=B.length;K<C;K++){I=B[K];J=this.getSelectedValue(I);if((J!=null)&&jQuery.trim(J).length>0){D[I.name]=J}}A.responseContentType=$("div select[name=responseContentType]",$(this.el)).val();A.requestContentType=$("div select[name=parameterContentType]",$(this.el)).val();$(".response_throbber",$(this.el)).show();if(N){return this.handleFileUpload(D,G)}else{return this.model["do"](D,A,this.showCompleteStatus,this.showErrorStatus,this)}}};y.prototype.success=function(A,B){return B.showCompleteStatus(A)};y.prototype.handleFileUpload=function(C,F){var Q,P,H,M,I,L,K,J,O,E,B,G,D,A,N=this;console.log("it's a file upload");G=F.serializeArray();for(L=0,O=G.length;L<O;L++){H=G[L];if((H.value!=null)&&jQuery.trim(H.value).length>0){C[H.name]=H.value}}Q=new FormData();D=this.model.parameters;for(K=0,E=D.length;K<E;K++){I=D[K];if(I.paramType==="form"){Q.append(I.name,C[I.name])}}P={};A=this.model.parameters;for(J=0,B=A.length;J<B;J++){I=A[J];if(I.paramType==="header"){P[I.name]=C[I.name]}}console.log(P);$.each($('input[type~="file"]'),function(R,S){return Q.append($(S).attr("name"),S.files[0])});console.log(Q);this.invocationUrl=this.model.supportHeaderParams()?(P=this.model.getHeaderParams(C),this.model.urlify(C,false)):this.model.urlify(C,true);$(".request_url",$(this.el)).html("<pre>"+this.invocationUrl+"</pre>");M={type:this.model.method,url:this.invocationUrl,headers:P,data:Q,dataType:"json",contentType:false,processData:false,error:function(S,T,R){return N.showErrorStatus(N.wrap(S),N)},success:function(R){return N.showResponse(R,N)},complete:function(R){return N.showCompleteStatus(N.wrap(R),N)}};if(window.authorizations){window.authorizations.apply(M)}jQuery.ajax(M);return false};y.prototype.wrap=function(A){var B,C=this;B={};B.content={};B.content.data=A.responseText;B.getHeaders=function(){return{"Content-Type":A.getResponseHeader("Content-Type")}};B.request={};B.request.url=this.invocationUrl;B.status=A.status;return B};y.prototype.getSelectedValue=function(A){var D,C,F,B,E;if(!A.multiple){return A.value}else{C=[];E=A.options;for(F=0,B=E.length;F<B;F++){D=E[F];if(D.selected){C.push(D.value)}}if(C.length>0){return C.join(",")}else{return null}}};y.prototype.hideResponse=function(A){if(A!=null){A.preventDefault()}$(".response",$(this.el)).slideUp();return $(".response_hider",$(this.el)).fadeOut()};y.prototype.showResponse=function(A){var B;B=JSON.stringify(A,null,"\t").replace(/\n/g,"<br>");return $(".response_body",$(this.el)).html(escape(B))};y.prototype.showErrorStatus=function(B,A){return A.showStatus(B)};y.prototype.showCompleteStatus=function(B,A){return A.showStatus(B)};y.prototype.formatXml=function(H){var D,G,B,I,N,J,C,A,L,M,F,E,K;A=/(>)(<)(\/*)/g;M=/[ ]*(.*)[ ]+\n/g;D=/(<.+>)(.+\n)/g;H=H.replace(A,"$1\n$2$3").replace(M,"$1\n").replace(D,"$1\n$2");C=0;G="";N=H.split("\n");B=0;I="other";L={"single->single":0,"single->closing":-1,"single->opening":0,"single->other":0,"closing->single":0,"closing->closing":-1,"closing->opening":0,"closing->other":0,"opening->single":1,"opening->closing":0,"opening->opening":1,"opening->other":1,"other->single":0,"other->closing":-1,"other->opening":0,"other->other":0};F=function(T){var P,O,R,V,S,Q,U;Q={single:Boolean(T.match(/<.+\/>/)),closing:Boolean(T.match(/<\/.+>/)),opening:Boolean(T.match(/<[^!?].*>/))};S=((function(){var W;W=[];for(R in Q){U=Q[R];if(U){W.push(R)}}return W})())[0];S=S===void 0?"other":S;P=I+"->"+S;I=S;V="";B+=L[P];V=((function(){var X,Y,W;W=[];for(O=X=0,Y=B;0<=Y?X<Y:X>Y;O=0<=Y?++X:--X){W.push("  ")}return W})()).join("");if(P==="opening->closing"){return G=G.substr(0,G.length-1)+T+"\n"}else{return G+=V+T+"\n"}};for(E=0,K=N.length;E<K;E++){J=N[E];F(J)}return G};y.prototype.showStatus=function(D){var C,B,G,F,E,A;B=D.content.data;F=D.getHeaders();G=F["Content-Type"];if(B===void 0){C=$("<code />").text("no content");E=$('<pre class="json" />').append(C)}else{if(G.indexOf("application/json")===0||G.indexOf("application/hal+json")===0){C=$("<code />").text(JSON.stringify(JSON.parse(B),null,2));E=$('<pre class="json" />').append(C)}else{if(G.indexOf("application/xml")===0){C=$("<code />").text(this.formatXml(B));E=$('<pre class="xml" />').append(C)}else{if(G.indexOf("text/html")===0){C=$("<code />").html(B);E=$('<pre class="xml" />').append(C)}else{if(G.indexOf("image/")===0){E=$("<img>").attr("src",D.request.url)}else{C=$("<code />").text(B);E=$('<pre class="json" />').append(C)}}}}}A=E;$(".request_url",$(this.el)).html("<pre>"+D.request.url+"</pre>");$(".response_code",$(this.el)).html("<pre>"+D.status+"</pre>");$(".response_body",$(this.el)).html(A);$(".response_headers",$(this.el)).html("<pre>"+JSON.stringify(D.getHeaders(),null,"  ").replace(/\n/g,"<br>")+"</pre>");$(".response",$(this.el)).slideDown();$(".response_hider",$(this.el)).show();$(".response_throbber",$(this.el)).hide();return hljs.highlightBlock($(".response_body",$(this.el))[0])};y.prototype.toggleOperationContent=function(){var A;A=$("#"+Docs.escapeResourceName(this.model.resourceName)+"_"+this.model.nickname+"_"+this.model.method+"_"+this.model.number+"_content");if(A.is(":visible")){return Docs.collapseOperation(A)}else{return Docs.expandOperation(A)}};return y})(Backbone.View);p=(function(z){v(y,z);function y(){d=y.__super__.constructor.apply(this,arguments);return d}y.prototype.initialize=function(){};y.prototype.render=function(){var A;A=this.template();$(this.el).html(A(this.model));return this};y.prototype.template=function(){return Handlebars.templates.status_code};return y})(Backbone.View);k=(function(z){v(y,z);function y(){b=y.__super__.constructor.apply(this,arguments);return b}y.prototype.initialize=function(){};y.prototype.render=function(){var G,A,C,F,B,H,E,D;D=this.model.type||this.model.dataType;if(this.model.paramType==="body"){this.model.isBody=true}if(D.toLowerCase()==="file"){this.model.isFile=true}E=this.template();$(this.el).html(E(this.model));B={sampleJSON:this.model.sampleJSON,isParam:true,signature:this.model.signature};if(this.model.sampleJSON){H=new i({model:B,tagName:"div"});$(".model-signature",$(this.el)).append(H.render().el)}else{$(".model-signature",$(this.el)).html(this.model.signature)}A=false;if(this.model.isBody){A=true}G={isParam:A};G.consumes=this.model.consumes;if(A){C=new l({model:G});$(".parameter-content-type",$(this.el)).append(C.render().el)}else{F=new m({model:G});$(".response-content-type",$(this.el)).append(F.render().el)}return this};y.prototype.template=function(){if(this.model.isList){return Handlebars.templates.param_list}else{if(this.options.readOnly){if(this.model.required){return Handlebars.templates.param_readonly_required}else{return Handlebars.templates.param_readonly}}else{if(this.model.required){return Handlebars.templates.param_required}else{return Handlebars.templates.param}}}};return y})(Backbone.View);i=(function(z){v(y,z);function y(){a=y.__super__.constructor.apply(this,arguments);return a}y.prototype.events={"click a.description-link":"switchToDescription","click a.snippet-link":"switchToSnippet","mousedown .snippet":"snippetToTextArea"};y.prototype.initialize=function(){};y.prototype.render=function(){var A;A=this.template();$(this.el).html(A(this.model));this.switchToDescription();this.isParam=this.model.isParam;if(this.isParam){$(".notice",$(this.el)).text("Click to set as parameter value")}return this};y.prototype.template=function(){return Handlebars.templates.signature};y.prototype.switchToDescription=function(A){if(A!=null){A.preventDefault()}$(".snippet",$(this.el)).hide();$(".description",$(this.el)).show();$(".description-link",$(this.el)).addClass("selected");return $(".snippet-link",$(this.el)).removeClass("selected")};y.prototype.switchToSnippet=function(A){if(A!=null){A.preventDefault()}$(".description",$(this.el)).hide();$(".snippet",$(this.el)).show();$(".snippet-link",$(this.el)).addClass("selected");return $(".description-link",$(this.el)).removeClass("selected")};y.prototype.snippetToTextArea=function(A){var B;if(this.isParam){if(A!=null){A.preventDefault()}B=$("textarea",$(this.el.parentNode.parentNode.parentNode));if($.trim(B.val())===""){return B.val(this.model.sampleJSON)}}};return y})(Backbone.View);j=(function(y){v(z,y);function z(){x=z.__super__.constructor.apply(this,arguments);return x}z.prototype.initialize=function(){};z.prototype.render=function(){var A;A=this.template();$(this.el).html(A(this.model));$("label[for=contentType]",$(this.el)).text("Response Content Type");return this};z.prototype.template=function(){return Handlebars.templates.content_type};return z})(Backbone.View);m=(function(y){v(z,y);function z(){w=z.__super__.constructor.apply(this,arguments);return w}z.prototype.initialize=function(){};z.prototype.render=function(){var A;A=this.template();$(this.el).html(A(this.model));$("label[for=responseContentType]",$(this.el)).text("Response Content Type");return this};z.prototype.template=function(){return Handlebars.templates.response_content_type};return z})(Backbone.View);l=(function(z){v(y,z);function y(){c=y.__super__.constructor.apply(this,arguments);return c}y.prototype.initialize=function(){};y.prototype.render=function(){var A;A=this.template();$(this.el).html(A(this.model));$("label[for=parameterContentType]",$(this.el)).text("Parameter content type:");return this};y.prototype.template=function(){return Handlebars.templates.parameter_content_type};return y})(Backbone.View)}).call(this);
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorTest.java b/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorTest.java
deleted file mode 100644 (file)
index 8ffcd4d..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * Copyright (c) 2014, 2015 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.sal.rest.doc.impl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import com.google.common.base.Preconditions;
-import java.io.File;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeSet;
-import javax.ws.rs.core.UriInfo;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.sal.core.api.model.SchemaService;
-import org.opendaylight.controller.sal.rest.doc.swagger.Api;
-import org.opendaylight.controller.sal.rest.doc.swagger.ApiDeclaration;
-import org.opendaylight.controller.sal.rest.doc.swagger.Operation;
-import org.opendaylight.controller.sal.rest.doc.swagger.Parameter;
-import org.opendaylight.controller.sal.rest.doc.swagger.Resource;
-import org.opendaylight.controller.sal.rest.doc.swagger.ResourceList;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
-
-/**
- *
- */
-public class ApiDocGeneratorTest {
-
-    public static final String HTTP_HOST = "http://host";
-    private ApiDocGenerator generator;
-    private DocGenTestHelper helper;
-    private SchemaContext schemaContext;
-
-    @Before
-    public void setUp() throws Exception {
-        generator = new ApiDocGenerator();
-        helper = new DocGenTestHelper();
-        helper.setUp();
-        schemaContext = new YangParserImpl().resolveSchemaContext(new HashSet<Module>(helper.getModules().values()));
-    }
-
-    @After
-    public void after() throws Exception {
-    }
-
-    /**
-     * Method: getApiDeclaration(String module, String revision, UriInfo uriInfo)
-     */
-    @Test
-    public void testGetModuleDoc() throws Exception {
-        Preconditions.checkArgument(helper.getModules() != null, "No modules found");
-
-        for (Entry<File, Module> m : helper.getModules().entrySet()) {
-            if (m.getKey().getAbsolutePath().endsWith("toaster_short.yang")) {
-                ApiDeclaration doc = generator.getSwaggerDocSpec(m.getValue(), "http://localhost:8080/restconf", "",
-                        schemaContext);
-                validateToaster(doc);
-                validateTosterDocContainsModulePrefixes(doc);
-                validateSwaggerModules(doc);
-                validateSwaggerApisForPost(doc);
-            }
-        }
-    }
-
-    /**
-     * Validate whether ApiDelcaration contains Apis with concrete path and whether this Apis contain specified POST
-     * operations.
-     */
-    private void validateSwaggerApisForPost(final ApiDeclaration doc) {
-        // two POST URI with concrete schema name in summary
-        Api lstApi = findApi("/config/toaster2:lst/", doc);
-        assertNotNull("Api /config/toaster2:lst/ wasn't found", lstApi);
-        assertTrue("POST for cont1 in lst is missing",
-                findOperation(lstApi.getOperations(), "POST", "(config)lstPOST", "(config)lst1", "(config)cont1"));
-
-        Api cont1Api = findApi("/config/toaster2:lst/cont1/", doc);
-        assertNotNull("Api /config/toaster2:lst/cont1/ wasn't found", cont1Api);
-        assertTrue("POST for cont11 in cont1 is missing",
-                findOperation(cont1Api.getOperations(), "POST", "(config)cont1POST", "(config)cont11", "(config)lst11"));
-
-        // no POST URI
-        Api cont11Api = findApi("/config/toaster2:lst/cont1/cont11/", doc);
-        assertNotNull("Api /config/toaster2:lst/cont1/cont11/ wasn't found", cont11Api);
-        assertTrue("POST operation shouldn't be present.", findOperations(cont11Api.getOperations(), "POST").isEmpty());
-
-    }
-
-    /**
-     * Tries to find operation with name {@code operationName} and with summary {@code summary}
-     */
-    private boolean findOperation(List<Operation> operations, String operationName, String type,
-            String... searchedParameters) {
-        Set<Operation> filteredOperations = findOperations(operations, operationName);
-        for (Operation operation : filteredOperations) {
-            if (operation.getType().equals(type)) {
-                List<Parameter> parameters = operation.getParameters();
-                return containAllParameters(parameters, searchedParameters);
-            }
-        }
-        return false;
-    }
-
-    private Set<Operation> findOperations(final List<Operation> operations, final String operationName) {
-        final Set<Operation> filteredOperations = new HashSet<>();
-        for (Operation operation : operations) {
-            if (operation.getMethod().equals(operationName)) {
-                filteredOperations.add(operation);
-            }
-        }
-        return filteredOperations;
-    }
-
-    private boolean containAllParameters(final List<Parameter> searchedIns, String[] searchedWhats) {
-        for (String searchedWhat : searchedWhats) {
-            boolean parameterFound = false;
-            for (Parameter searchedIn : searchedIns) {
-                if (searchedIn.getType().equals(searchedWhat)) {
-                    parameterFound = true;
-                }
-            }
-            if (!parameterFound) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Tries to find {@code Api} with path {@code path}
-     */
-    private Api findApi(final String path, final ApiDeclaration doc) {
-        for (Api api : doc.getApis()) {
-            if (api.getPath().equals(path)) {
-                return api;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Validates whether doc {@code doc} contains concrete specified models.
-     */
-    private void validateSwaggerModules(ApiDeclaration doc) {
-        JSONObject models = doc.getModels();
-        assertNotNull(models);
-        try {
-            JSONObject configLst = models.getJSONObject("(config)lst");
-            assertNotNull(configLst);
-
-            containsReferences(configLst, "lst1");
-            containsReferences(configLst, "cont1");
-
-            JSONObject configLst1 = models.getJSONObject("(config)lst1");
-            assertNotNull(configLst1);
-
-            JSONObject configCont1 = models.getJSONObject("(config)cont1");
-            assertNotNull(configCont1);
-
-            containsReferences(configCont1, "cont11");
-            containsReferences(configCont1, "lst11");
-
-            JSONObject configCont11 = models.getJSONObject("(config)cont11");
-            assertNotNull(configCont11);
-
-            JSONObject configLst11 = models.getJSONObject("(config)lst11");
-            assertNotNull(configLst11);
-        } catch (JSONException e) {
-            fail("JSONException wasn't expected");
-        }
-
-    }
-
-    /**
-     * Checks whether object {@code mainObject} contains in properties/items key $ref with concrete value.
-     */
-    private void containsReferences(final JSONObject mainObject, final String childObject) throws JSONException {
-        JSONObject properties = mainObject.getJSONObject("properties");
-        assertNotNull(properties);
-
-        JSONObject nodeInProperties = properties.getJSONObject(childObject);
-        assertNotNull(nodeInProperties);
-
-        JSONObject itemsInNodeInProperties = nodeInProperties.getJSONObject("items");
-        assertNotNull(itemsInNodeInProperties);
-
-        String itemRef = itemsInNodeInProperties.getString("$ref");
-        assertEquals("(config)" + childObject, itemRef);
-    }
-
-    @Test
-    public void testEdgeCases() throws Exception {
-        Preconditions.checkArgument(helper.getModules() != null, "No modules found");
-
-        for (Entry<File, Module> m : helper.getModules().entrySet()) {
-            if (m.getKey().getAbsolutePath().endsWith("toaster.yang")) {
-                ApiDeclaration doc = generator.getSwaggerDocSpec(m.getValue(), "http://localhost:8080/restconf", "",
-                        schemaContext);
-                assertNotNull(doc);
-
-                // testing bugs.opendaylight.org bug 1290. UnionType model type.
-                String jsonString = doc.getModels().toString();
-                assertTrue(jsonString.contains("testUnion\":{\"type\":\"integer or string\",\"required\":false}"));
-            }
-        }
-    }
-
-    /**
-     * Tests whether from yang files are generated all required paths for HTTP operations (GET, DELETE, PUT, POST)
-     *
-     * If container | list is augmented then in path there should be specified module name followed with collon (e. g.
-     * "/config/module1:element1/element2/module2:element3")
-     *
-     * @param doc
-     * @throws Exception
-     */
-    private void validateToaster(ApiDeclaration doc) throws Exception {
-        Set<String> expectedUrls = new TreeSet<>(Arrays.asList(new String[] { "/config/toaster2:toaster/",
-                "/operational/toaster2:toaster/", "/operations/toaster2:cancel-toast",
-                "/operations/toaster2:make-toast", "/operations/toaster2:restock-toaster",
-                "/config/toaster2:toaster/toasterSlot/{slotId}/toaster-augmented:slotInfo/" }));
-
-        Set<String> actualUrls = new TreeSet<>();
-
-        Api configApi = null;
-        for (Api api : doc.getApis()) {
-            actualUrls.add(api.getPath());
-            if (api.getPath().contains("/config/toaster2:toaster/")) {
-                configApi = api;
-            }
-        }
-
-        boolean containsAll = actualUrls.containsAll(expectedUrls);
-        if (!containsAll) {
-            expectedUrls.removeAll(actualUrls);
-            fail("Missing expected urls: " + expectedUrls);
-        }
-
-        Set<String> expectedConfigMethods = new TreeSet<>(Arrays.asList(new String[] { "GET", "PUT", "DELETE" }));
-        Set<String> actualConfigMethods = new TreeSet<>();
-        for (Operation oper : configApi.getOperations()) {
-            actualConfigMethods.add(oper.getMethod());
-        }
-
-        containsAll = actualConfigMethods.containsAll(expectedConfigMethods);
-        if (!containsAll) {
-            expectedConfigMethods.removeAll(actualConfigMethods);
-            fail("Missing expected method on config API: " + expectedConfigMethods);
-        }
-
-        // TODO: we should really do some more validation of the
-        // documentation...
-        /**
-         * Missing validation: Explicit validation of URLs, and their methods Input / output models.
-         */
-    }
-
-    @Test
-    public void testGetResourceListing() throws Exception {
-        UriInfo info = helper.createMockUriInfo(HTTP_HOST);
-        SchemaService mockSchemaService = helper.createMockSchemaService(schemaContext);
-
-        generator.setSchemaService(mockSchemaService);
-
-        ResourceList resourceListing = generator.getResourceListing(info);
-
-        Resource toaster = null;
-        Resource toaster2 = null;
-        for (Resource r : resourceListing.getApis()) {
-            String path = r.getPath();
-            if (path.contains("toaster2")) {
-                toaster2 = r;
-            } else if (path.contains("toaster")) {
-                toaster = r;
-            }
-        }
-
-        assertNotNull(toaster2);
-        assertNotNull(toaster);
-
-        assertEquals(HTTP_HOST + "/toaster(2009-11-20)", toaster.getPath());
-        assertEquals(HTTP_HOST + "/toaster2(2009-11-20)", toaster2.getPath());
-    }
-
-    private void validateTosterDocContainsModulePrefixes(ApiDeclaration doc) {
-        JSONObject topLevelJson = doc.getModels();
-        try {
-            JSONObject configToaster = topLevelJson.getJSONObject("(config)toaster");
-            assertNotNull("(config)toaster JSON object missing", configToaster);
-            // without module prefix
-            containsProperties(configToaster, "toasterSlot");
-
-            JSONObject toasterSlot = topLevelJson.getJSONObject("(config)toasterSlot");
-            assertNotNull("(config)toasterSlot JSON object missing", toasterSlot);
-            // with module prefix
-            containsProperties(toasterSlot, "toaster-augmented:slotInfo");
-
-        } catch (JSONException e) {
-            fail("Json exception while reading JSON object. Original message " + e.getMessage());
-        }
-    }
-
-    private void containsProperties(final JSONObject jsonObject, final String... properties) throws JSONException {
-        for (String property : properties) {
-            JSONObject propertiesObject = jsonObject.getJSONObject("properties");
-            assertNotNull("Properties object missing in ", propertiesObject);
-            JSONObject concretePropertyObject = propertiesObject.getJSONObject(property);
-            assertNotNull(property + " is missing", concretePropertyObject);
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/DocGenTestHelper.java b/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/DocGenTestHelper.java
deleted file mode 100644 (file)
index 7701d2a..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 2014 Brocade Communications 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.sal.rest.doc.impl;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.datatype.jsonorg.JsonOrgModule;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import javax.ws.rs.core.UriBuilder;
-import javax.ws.rs.core.UriInfo;
-import org.mockito.ArgumentCaptor;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-import org.opendaylight.controller.sal.core.api.model.SchemaService;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser;
-import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
-
-public class DocGenTestHelper {
-
-    private Map<File, Module> modules;
-    private ObjectMapper mapper;
-
-    public Map<File, Module> loadModules(String resourceDirectory) throws FileNotFoundException,
-            URISyntaxException {
-
-        URI resourceDirUri = getClass().getResource(resourceDirectory).toURI();
-        final YangContextParser parser = new YangParserImpl();
-        final File testDir = new File(resourceDirUri);
-        final String[] fileList = testDir.list();
-        final List<File> testFiles = new ArrayList<>();
-        if (fileList == null) {
-            throw new FileNotFoundException(resourceDirectory.toString());
-        }
-        for (String fileName : fileList) {
-
-            testFiles.add(new File(testDir, fileName));
-        }
-        return parser.parseYangModelsMapped(testFiles);
-    }
-
-    public Map<File, Module> getModules() {
-        return modules;
-    }
-
-    public void setUp() throws Exception {
-        modules = loadModules("/yang");
-        mapper = new ObjectMapper();
-        mapper.registerModule(new JsonOrgModule());
-        mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
-    }
-
-    public SchemaService createMockSchemaService() {
-        return createMockSchemaService(null);
-    }
-
-    public SchemaService createMockSchemaService(SchemaContext mockContext) {
-        if (mockContext == null) {
-            mockContext = createMockSchemaContext();
-        }
-
-        SchemaService mockSchemaService = mock(SchemaService.class);
-        when(mockSchemaService.getGlobalContext()).thenReturn(mockContext);
-        return mockSchemaService;
-    }
-
-    public SchemaContext createMockSchemaContext() {
-        SchemaContext mockContext = mock(SchemaContext.class);
-        when(mockContext.getModules()).thenReturn(new HashSet<Module>(modules.values()));
-
-        final ArgumentCaptor<String> moduleCapture = ArgumentCaptor.forClass(String.class);
-        final ArgumentCaptor<Date> dateCapture = ArgumentCaptor.forClass(Date.class);
-        final ArgumentCaptor<URI> namespaceCapture = ArgumentCaptor.forClass(URI.class);
-        when(mockContext.findModuleByName(moduleCapture.capture(), dateCapture.capture())).then(
-                new Answer<Module>() {
-                    @Override
-                    public Module answer(InvocationOnMock invocation) throws Throwable {
-                        String module = moduleCapture.getValue();
-                        Date date = dateCapture.getValue();
-                        for (Module m : modules.values()) {
-                            if (m.getName().equals(module) && m.getRevision().equals(date)) {
-                                return m;
-                            }
-                        }
-                        return null;
-                    }
-                });
-        when(mockContext.findModuleByNamespaceAndRevision(namespaceCapture.capture(), dateCapture.capture())).then(
-                new Answer<Module>() {
-                    @Override
-                    public Module answer(InvocationOnMock invocation) throws Throwable {
-                        URI namespace = namespaceCapture.getValue();
-                        Date date = dateCapture.getValue();
-                        for (Module m : modules.values()) {
-                            if (m.getNamespace().equals(namespace) && m.getRevision().equals(date)) {
-                                return m;
-                            }
-                        }
-                        return null;
-                    }
-                });
-        return mockContext;
-    }
-
-    public UriInfo createMockUriInfo(String urlPrefix) throws URISyntaxException {
-        final URI uri = new URI(urlPrefix);
-
-        UriBuilder mockBuilder = mock(UriBuilder.class);
-
-        final ArgumentCaptor<String> subStringCapture = ArgumentCaptor.forClass(String.class);
-        when(mockBuilder.path(subStringCapture.capture())).thenReturn(mockBuilder);
-        when(mockBuilder.build()).then(new Answer<URI>() {
-            @Override
-            public URI answer(InvocationOnMock invocation) throws Throwable {
-                return URI.create(uri + "/" + subStringCapture.getValue());
-            }
-        });
-
-        UriInfo info = mock(UriInfo.class);
-
-        when(info.getRequestUriBuilder()).thenReturn(mockBuilder);
-        when(info.getBaseUri()).thenReturn(uri);
-        return info;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ModelGeneratorTest.java b/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ModelGeneratorTest.java
deleted file mode 100644 (file)
index 574f53e..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2014, 2015 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.sal.rest.doc.impl;
-
-import com.google.common.base.Preconditions;
-import org.json.JSONObject;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
-
-import java.io.File;
-import java.util.HashSet;
-import java.util.Map;
-
-
-public class ModelGeneratorTest {
-
-    private DocGenTestHelper helper;
-    private SchemaContext schemaContext;
-
-    @Before
-    public void setUp() throws Exception {
-        helper = new DocGenTestHelper();
-        helper.setUp();
-        schemaContext = new YangParserImpl().resolveSchemaContext(new HashSet<Module>(helper.getModules().values()));
-    }
-
-    @Test
-    public void testConvertToJsonSchema() throws Exception {
-
-        Preconditions.checkArgument(helper.getModules() != null, "No modules found");
-
-        ModelGenerator generator = new ModelGenerator();
-
-        for (Map.Entry<File, Module> m : helper.getModules().entrySet()) {
-            if (m.getKey().getAbsolutePath().endsWith("opflex.yang")) {
-
-                JSONObject jsonObject = generator.convertToJsonSchema(m.getValue(), schemaContext);
-                Assert.assertNotNull(jsonObject);
-            }
-        }
-
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/MountPointSwaggerTest.java b/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/MountPointSwaggerTest.java
deleted file mode 100644 (file)
index c32a8e3..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright (c) 2014 Brocade Communications 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.sal.rest.doc.impl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import com.google.common.base.Optional;
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
-import javax.ws.rs.core.UriInfo;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint;
-import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
-import org.opendaylight.controller.sal.core.api.model.SchemaService;
-import org.opendaylight.controller.sal.rest.doc.mountpoints.MountPointSwagger;
-import org.opendaylight.controller.sal.rest.doc.swagger.Api;
-import org.opendaylight.controller.sal.rest.doc.swagger.ApiDeclaration;
-import org.opendaylight.controller.sal.rest.doc.swagger.Operation;
-import org.opendaylight.controller.sal.rest.doc.swagger.Resource;
-import org.opendaylight.controller.sal.rest.doc.swagger.ResourceList;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
-
-public class MountPointSwaggerTest {
-
-    private static final String HTTP_URL = "http://localhost/path";
-    private static final YangInstanceIdentifier instanceId = YangInstanceIdentifier.builder()
-            .node(QName.create("nodes"))
-            .node(QName.create("node"))
-            .nodeWithKey(QName.create("node"), QName.create("id"), "123").build();
-    private static final String INSTANCE_URL = "nodes/node/123/";
-    private MountPointSwagger swagger;
-    private DocGenTestHelper helper;
-    private SchemaContext schemaContext;
-
-    @Before
-    public void setUp() throws Exception {
-        swagger = new MountPointSwagger();
-        helper = new DocGenTestHelper();
-        helper.setUp();
-        schemaContext = new YangParserImpl().resolveSchemaContext(new HashSet<Module>(helper.getModules().values()));
-    }
-
-    @Test()
-    public void testGetResourceListBadIid() throws Exception {
-        UriInfo mockInfo = helper.createMockUriInfo(HTTP_URL);
-
-        assertEquals(null, swagger.getResourceList(mockInfo, 1L));
-    }
-
-    @Test()
-    public void getInstanceIdentifiers() throws Exception {
-        UriInfo mockInfo = setUpSwaggerForDocGeneration();
-
-        assertEquals(0, swagger.getInstanceIdentifiers().size());
-        swagger.onMountPointCreated(instanceId); // add this ID into the list of
-                                                 // mount points
-        assertEquals(1, swagger.getInstanceIdentifiers().size());
-        assertEquals((Long) 1L, swagger.getInstanceIdentifiers().entrySet().iterator().next()
-                .getValue());
-        assertEquals(INSTANCE_URL, swagger.getInstanceIdentifiers().entrySet().iterator().next()
-                .getKey());
-        swagger.onMountPointRemoved(instanceId); // remove ID from list of mount
-                                                 // points
-        assertEquals(0, swagger.getInstanceIdentifiers().size());
-    }
-
-    @Test
-    public void testGetResourceListGoodId() throws Exception {
-        UriInfo mockInfo = setUpSwaggerForDocGeneration();
-        swagger.onMountPointCreated(instanceId); // add this ID into the list of
-                                                 // mount points
-        ResourceList resourceList = swagger.getResourceList(mockInfo, 1L);
-
-        Resource dataStoreResource = null;
-        for (Resource r : resourceList.getApis()) {
-            if (r.getPath().endsWith("/Datastores(-)")) {
-                dataStoreResource = r;
-            }
-        }
-        assertNotNull("Failed to find data store resource", dataStoreResource);
-    }
-
-    @Test
-    public void testGetDataStoreApi() throws Exception {
-        UriInfo mockInfo = setUpSwaggerForDocGeneration();
-        swagger.onMountPointCreated(instanceId); // add this ID into the list of
-                                                 // mount points
-        ApiDeclaration mountPointApi = swagger.getMountPointApi(mockInfo, 1L, "Datastores", "-");
-        assertNotNull("failed to find Datastore API", mountPointApi);
-        List<Api> apis = mountPointApi.getApis();
-        assertEquals("Unexpected api list size", 3, apis.size());
-
-        Set<String> actualApis = new TreeSet<>();
-        for (Api api : apis) {
-            actualApis.add(api.getPath());
-            List<Operation> operations = api.getOperations();
-            assertEquals("unexpected operation size on " + api.getPath(), 1, operations.size());
-            assertEquals("unexpected operation method " + api.getPath(), "GET", operations.get(0)
-                    .getMethod());
-            assertNotNull("expected non-null desc on " + api.getPath(), operations.get(0)
-                    .getNotes());
-        }
-        Set<String> expectedApis = new TreeSet<>(Arrays.asList(new String[] {
-                "/config/" + INSTANCE_URL + "yang-ext:mount/",
-                "/operational/" + INSTANCE_URL + "yang-ext:mount/",
-                "/operations/" + INSTANCE_URL + "yang-ext:mount/", }));
-        assertEquals(expectedApis, actualApis);
-    }
-
-    protected UriInfo setUpSwaggerForDocGeneration() throws URISyntaxException {
-        UriInfo mockInfo = helper.createMockUriInfo(HTTP_URL);
-        // We are sharing the global schema service and the mount schema service
-        // in our test.
-        // OK for testing - real thing would have seperate instances.
-        SchemaContext context = helper.createMockSchemaContext();
-        SchemaService schemaService = helper.createMockSchemaService(context);
-
-        DOMMountPoint mountPoint = mock(DOMMountPoint.class);
-        when(mountPoint.getSchemaContext()).thenReturn(context);
-
-        DOMMountPointService service = mock(DOMMountPointService.class);
-        when(service.getMountPoint(instanceId)).thenReturn(Optional.of(mountPoint));
-        swagger.setMountService(service);
-        swagger.setGlobalSchema(schemaService);
-
-        return mockInfo;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/resources/sample-swagger-spec.json b/opendaylight/md-sal/sal-rest-docgen/src/test/resources/sample-swagger-spec.json
deleted file mode 100644 (file)
index 2d1b09a..0000000
+++ /dev/null
@@ -1,440 +0,0 @@
-{
-    "apiVersion": "1.0.0",
-    "swaggerVersion": "1.2",
-    "basePath": "/api",
-    "resourcePath": "/pet",
-    "produces": [
-        "application/json",
-        "application/xml",
-        "text/plain",
-        "text/html"
-    ],
-    "authorizations": {
-        "oauth2": [
-            {
-                "scope": "write:pets",
-                "description": "modify pets in your account"
-            },
-            {
-                "scope": "read:pets",
-                "description": "read your pets"
-            }
-        ]
-    },
-    "apis": [
-        {
-            "path": "/pet",
-            "operations": [
-                {
-                    "method": "POST",
-                    "summary": "Add a new pet to the store",
-                    "notes": "",
-                    "type": "void",
-                    "nickname": "addPet",
-                    "consumes": [
-                        "application/json",
-                        "application/xml"
-                    ],
-                    "authorizations": {
-                        "oauth2": [
-                            {
-                                "scope": "write:pets",
-                                "description": "modify pets in your account"
-                            }
-                        ]
-                    },
-                    "parameters": [
-                        {
-                            "name": "body",
-                            "description": "Pet object that needs to be added to the store",
-                            "required": true,
-                            "type": "Pet",
-                            "paramType": "body"
-                        }
-                    ],
-                    "responseMessages": [
-                        {
-                            "code": 405,
-                            "message": "Invalid input"
-                        }
-                    ]
-                },
-                {
-                    "method": "PUT",
-                    "summary": "Update an existing pet",
-                    "notes": "",
-                    "type": "void",
-                    "nickname": "updatePet",
-                    "authorizations": {},
-                    "parameters": [
-                        {
-                            "name": "body",
-                            "description": "Pet object that needs to be updated in the store",
-                            "required": true,
-                            "type": "Pet",
-                            "paramType": "body"
-                        }
-                    ],
-                    "responseMessages": [
-                        {
-                            "code": 400,
-                            "message": "Invalid ID supplied"
-                        },
-                        {
-                            "code": 404,
-                            "message": "Pet not found"
-                        },
-                        {
-                            "code": 405,
-                            "message": "Validation exception"
-                        }
-                    ]
-                }
-            ]
-        },
-        {
-            "path": "/pet/findByStatus",
-            "operations": [
-                {
-                    "method": "GET",
-                    "summary": "Finds Pets by status",
-                    "notes": "<strong>Multiple status values can be provided with comma seperated strings</strong>",
-                    "type": "array",
-                    "items": {
-                        "$ref": "Pet"
-                    },
-                    "nickname": "testNodeType",
-                    "authorizations": {},
-                    "parameters": [
-                        {
-                            "name": "nodeTypez",
-                            "description": "Status values that need to be considered for filter",
-                            "defaultValue": "available",
-                            "required": true,
-                            "type": "string",
-                            "paramType": "query",
-                            "enum": [
-                                "available",
-                                "pending",
-                                "sold"
-                            ]
-                        }
-                    ],
-                    "responseMessages": [
-                        {
-                            "code": 400,
-                            "message": "Invalid status value"
-                        }
-                    ]
-                }
-            ]
-        },
-        {
-            "path": "/pet/findByTags",
-            "operations": [
-                {
-                    "method": "GET",
-                    "summary": "Finds Pets by tags",
-                    "notes": "Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing.",
-                    "type": "array",
-                    "items": {
-                        "$ref": "Pet"
-                    },
-                    "nickname": "findPetsByTags",
-                    "authorizations": {},
-                    "parameters": [
-                        {
-                            "name": "tags",
-                            "description": "Tags to filter by",
-                            "required": true,
-                            "type": "string",
-                            "paramType": "query"
-                        }
-                    ],
-                    "responseMessages": [
-                        {
-                            "code": 400,
-                            "message": "Invalid tag value"
-                        }
-                    ],
-                    "deprecated": "true"
-                }
-            ]
-        },
-        {
-            "path": "/pet/{petId}",
-            "operations": [
-                {
-                    "method": "PATCH",
-                    "summary": "partial updates to a pet",
-                    "notes": "",
-                    "type": "array",
-                    "items": {
-                        "$ref": "Pet"
-                    },
-                    "nickname": "partialUpdate",
-                    "produces": [
-                        "application/json",
-                        "application/xml"
-                    ],
-                    "consumes": [
-                        "application/json",
-                        "application/xml"
-                    ],
-                    "authorizations": {
-                        "oauth2": [
-                            {
-                                "scope": "write:pets",
-                                "description": "modify pets in your account"
-                            }
-                        ]
-                    },
-                    "parameters": [
-                        {
-                            "name": "petId",
-                            "description": "ID of pet that needs to be fetched",
-                            "required": true,
-                            "type": "string",
-                            "paramType": "path"
-                        },
-                        {
-                            "name": "body",
-                            "description": "Pet object that needs to be added to the store",
-                            "required": true,
-                            "type": "Pet",
-                            "paramType": "body"
-                        }
-                    ],
-                    "responseMessages": [
-                        {
-                            "code": 400,
-                            "message": "Invalid tag value"
-                        }
-                    ]
-                },
-                {
-                    "method": "POST",
-                    "summary": "Updates a pet in the store with form data",
-                    "notes": "",
-                    "type": "void",
-                    "nickname": "updatePetWithForm",
-                    "consumes": [
-                        "application/x-www-form-urlencoded"
-                    ],
-                    "authorizations": {
-                        "oauth2": [
-                            {
-                                "scope": "write:pets",
-                                "description": "modify pets in your account"
-                            }
-                        ]
-                    },
-                    "parameters": [
-                        {
-                            "name": "petId",
-                            "description": "ID of pet that needs to be updated",
-                            "required": true,
-                            "type": "string",
-                            "paramType": "path"
-                        },
-                        {
-                            "name": "name",
-                            "description": "Updated name of the pet",
-                            "required": false,
-                            "type": "string",
-                            "paramType": "form"
-                        },
-                        {
-                            "name": "status",
-                            "description": "Updated status of the pet",
-                            "required": false,
-                            "type": "string",
-                            "paramType": "form"
-                        }
-                    ],
-                    "responseMessages": [
-                        {
-                            "code": 405,
-                            "message": "Invalid input"
-                        }
-                    ]
-                },
-                {
-                    "method": "DELETE",
-                    "summary": "Deletes a pet",
-                    "notes": "",
-                    "type": "void",
-                    "nickname": "deletePet",
-                    "authorizations": {
-                        "oauth2": [
-                            {
-                                "scope": "write:pets",
-                                "description": "modify pets in your account"
-                            }
-                        ]
-                    },
-                    "parameters": [
-                        {
-                            "name": "petId",
-                            "description": "Pet id to delete",
-                            "required": true,
-                            "type": "string",
-                            "paramType": "path"
-                        }
-                    ],
-                    "responseMessages": [
-                        {
-                            "code": 400,
-                            "message": "Invalid pet value"
-                        }
-                    ]
-                },
-                {
-                    "method": "GET",
-                    "summary": "Find pet by ID",
-                    "notes": "Returns a pet based on ID",
-                    "type": "Pet",
-                    "nickname": "getPetById",
-                    "authorizations": {},
-                    "parameters": [
-                        {
-                            "name": "petId",
-                            "description": "ID of pet that needs to be fetched",
-                            "required": true,
-                            "type": "integer",
-                            "format": "int64",
-                            "paramType": "path",
-                            "minimum": "1.0",
-                            "maximum": "100000.0"
-                        }
-                    ],
-                    "responseMessages": [
-                        {
-                            "code": 400,
-                            "message": "Invalid ID supplied"
-                        },
-                        {
-                            "code": 404,
-                            "message": "Pet not found"
-                        }
-                    ]
-                }
-            ]
-        },
-        {
-            "path": "/pet/uploadImage",
-            "operations": [
-                {
-                    "method": "POST",
-                    "summary": "uploads an image",
-                    "notes": "",
-                    "type": "void",
-                    "nickname": "uploadFile",
-                    "consumes": [
-                        "multipart/form-data"
-                    ],
-                    "authorizations": {
-                        "oauth2": [
-                            {
-                                "scope": "write:pets",
-                                "description": "modify pets in your account"
-                            },
-                            {
-                                "scope": "read:pets",
-                                "description": "read your pets"
-                            }
-                        ]
-                    },
-                    "parameters": [
-                        {
-                            "name": "additionalMetadata",
-                            "description": "Additional data to pass to server",
-                            "required": false,
-                            "type": "string",
-                            "paramType": "form"
-                        },
-                        {
-                            "name": "file",
-                            "description": "file to upload",
-                            "required": false,
-                            "type": "File",
-                            "paramType": "body"
-                        }
-                    ]
-                }
-            ]
-        }
-    ],
-    "models": {
-        "Tag": {
-            "id": "Tag",
-            "properties": {
-                "id": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "name": {
-                    "type": "string"
-                }
-            }
-        },
-        "Pet": {
-            "id": "Pet",
-            "required": [
-                "id",
-                "name"
-            ],
-            "properties": {
-                "id": {
-                    "type": "integer",
-                    "format": "int64",
-                    "description": "unique identifier for the pet",
-                    "minimum": "0.0",
-                    "maximum": "100.0"
-                },
-                "category": {
-                    "$ref": "Category"
-                },
-                "name": {
-                    "type": "string"
-                },
-                "photoUrls": {
-                    "type": "array",
-                    "items": {
-                        "type": "string"
-                    }
-                },
-                "tags": {
-                    "type": "array",
-                    "items": {
-                        "$ref": "Tag"
-                    }
-                },
-                "status": {
-                    "type": "string",
-                    "description": "pet status in the store",
-                    "enum": [
-                        "available",
-                        "pending",
-                        "sold"
-                    ]
-                }
-            }
-        },
-        "Category": {
-            "id": "Category",
-            "properties": {
-                "id": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "name": {
-                    "type": "string"
-                },
-                "pet": {
-                    "$ref": "Pet"
-                }
-            }
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/resources/toaster.json b/opendaylight/md-sal/sal-rest-docgen/src/test/resources/toaster.json
deleted file mode 100644 (file)
index 8af2462..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-{
-  "apiVersion": "1.0.0",
-  "swaggerVersion": "1.2",
-  "basePath": "/api",
-  "resourcePath": "/toaster",
-  "produces": [
-    "application/json",
-    "application/xml",
-    "text/plain",
-    "text/html"
-  ],
-  "apis": [
-    {
-      "path": "/toaster",
-      "operations": [
-        {
-          "method": "POST",
-          "summary": "Add a new toaster",
-          "notes": "",
-          "type": "void",
-          "nickname": "add toaster",
-          "consumes": [
-            "application/json",
-            "application/xml"
-          ],          
-          "parameters": [
-            {
-              "name": "body",
-              "description": "Pet object that needs to be added to the store",
-              "required": true,
-              "type": "Toaster",
-              "paramType": "body"
-            }
-          ],
-          "responseMessages": [
-            {
-              "code": 405,
-              "message": "Invalid input"
-            }
-          ]
-        }
-      ]
-     },
-    {
-      "path": "/toaster",
-      "operations": [
-        {
-          "method": "GET",
-          "summary": "Add a new toaster",
-          "notes": "",
-          "type": "Toaster",
-          "nickname": "Get toaster",
-          "consumes": [
-            "application/json",
-            "application/xml"
-          ],          
-          "responseMessages": [
-            {
-              "code": 405,
-              "message": "Invalid input"
-            }
-          ]
-        }
-      ]
-     },
-       {
-           "path" : "operations/toaster/cancel-toast",
-           "operations" : [ {
-             "method" : "POST",
-             "summary" : null,
-             "notes" : "Stop making toast, if any is being made.\n           A 'resource-denied' error will be returned \n           if the toaster service is disabled.",
-             "type" : null,
-             "nickname" : "cancel-toast",
-             "consumes" : null,
-             "parameters" : null,
-             "responseMessages" : null
-           } ]
-         }, {
-           "path" : "operations/toaster/make-toast",
-           "operations" : [ {
-             "method" : "POST",
-             "summary" : null,
-             "notes" : "Make some toast.\n           The toastDone notification will be sent when \n           the toast is finished.\n           An 'in-use' error will be returned if toast\n           is already being made.\n           A 'resource-denied' error will be returned \n           if the toaster service is disabled.",
-             "type" : null,
-             "nickname" : "make-toast",
-             "consumes" : null,
-             "parameters" : null,
-             "responseMessages" : null
-           } ]
-         }
-  ],
-  "models": {
-    "Toaster": {
-    "id":"Toaster",
-               "$schema": "http://json-schema.org/draft-04/schema",
-         "description": "Top-level container for all toaster database objects.",
-         "properties": {
-           "allow-user": {
-             "description": "A list of user name patterns to allow",
-             "items": {"type": "string"},
-             "required": false,
-             "type": "array"
-           },
-                "how": {
-             "oneOf": [
-               {
-                 "manual": {"manual": {
-                   "required": false,
-                   "type": "string"
-                 }},
-                 "type": "object"
-               },
-               {
-                 "interval": {"interval": {
-                   "required": false,
-                   "type": "integer"
-                 }},
-                 "type": "object"
-               },
-               {
-                 "daily": {
-                   "daily": {
-                     "required": false,
-                     "type": "string"
-                   },
-                   "time-of-day": {
-                     "required": false,
-                     "type": "string"
-                   }
-                 },
-                 "type": "object"
-               }
-             ],
-             "type": "object"
-           },
-           "testToasterBits": {
-             "enum": [
-               "testbit1",
-               "testbit2"
-             ],
-             "minItems": 0,
-             "required": false,
-             "type": "String",
-             "uniqueItems": true
-           },
-           "toasterManufacturer": {
-             "description": "The name of the toaster's manufacturer. For instance, \n                Microsoft Toaster.",
-             "required": true,
-             "type": "string"
-           },
-           "toasterModelNumber": {
-             "description": "The name of the toaster's model. For instance,\n               Radiant Automatic.",
-             "required": true,
-             "type": "string"
-           },
-           "toasterStatus": {
-             "description": "This variable indicates the current state of \n               the toaster.",
-             "enum": [
-               "up",
-               "down"
-             ],
-             "required": true
-           }
-         }     
-    }
-  }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/resources/topology-good.json b/opendaylight/md-sal/sal-rest-docgen/src/test/resources/topology-good.json
deleted file mode 100644 (file)
index 4017829..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-{
-    "apiVersion": "1.0.0",
-    "swaggerVersion": "1.2",
-    "basePath": "/api",
-    "resourcePath": "/config",
-    "produces": [ "application/json", "application/xml" ],
-    "apis": [
-        {
-            "path": "/network-topology:network-topology/network-topology",
-            "operations": [
-                {
-                    "method": "GET",
-                    "summary": "Test",
-                    "notes": "",
-                    "type": "Toaster",
-                    "nickname": "something",
-                    "consumes": [
-                        "application/json",
-                        "application/xml"
-                    ],
-                    "responseMessages": [
-                        {
-                            "code": 405,
-                            "message": "Invalid input"
-                        }
-                    ]
-                }
-            ]
-        }
-    ],
-    "models": {
-        "Toaster": {
-            "id":"Toaster",
-            "$schema": "http://json-schema.org/draft-04/schema",
-            "description": "Top-level container for all toaster database objects.",
-            "properties": {
-                "allow-user": {
-                    "description": "A list of user name patterns to allow",
-                    "items": {"type": "string"},
-                    "required": false,
-                    "type": "array"
-                },
-                "how": {
-                    "oneOf": [
-                        {
-                            "manual": {"manual": {
-                                "required": false,
-                                "type": "string"
-                            }},
-                            "type": "object"
-                        },
-                        {
-                            "interval": {"interval": {
-                                "required": false,
-                                "type": "integer"
-                            }},
-                            "type": "object"
-                        },
-                        {
-                            "daily": {
-                                "daily": {
-                                    "required": false,
-                                    "type": "string"
-                                },
-                                "time-of-day": {
-                                    "required": false,
-                                    "type": "string"
-                                }
-                            },
-                            "type": "object"
-                        }
-                    ],
-                    "type": "object"
-                },
-                "testToasterBits": {
-                    "enum": [
-                        "testbit1",
-                        "testbit2"
-                    ],
-                    "minItems": 0,
-                    "required": false,
-                    "type": "String",
-                    "uniqueItems": true
-                },
-                "toasterManufacturer": {
-                    "description": "The name of the toaster's manufacturer. For instance, \n                Microsoft Toaster.",
-                    "required": true,
-                    "type": "string"
-                },
-                "toasterModelNumber": {
-                    "description": "The name of the toaster's model. For instance,\n               Radiant Automatic.",
-                    "required": true,
-                    "type": "string"
-                },
-                "toasterStatus": {
-                    "description": "This variable indicates the current state of \n               the toaster.",
-                    "enum": [
-                        "up",
-                        "down"
-                    ],
-                    "required": true
-                }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/resources/topology-new.json b/opendaylight/md-sal/sal-rest-docgen/src/test/resources/topology-new.json
deleted file mode 100644 (file)
index c34fd8f..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "apiVersion": "1.0.0",
-    "swaggerVersion": "1.2",
-    "basePath": "/restconf",
-    "resourcePath": "/config",
-    "produces": [ "application/json", "application/xml" ],
-    "apis": [
-        {
-            "path": "/network-topology:network-topology/network-topology",
-            "operations": [
-                {
-                    "method": "GET",
-                    "summary": "Test",
-                    "notes": null,
-                    "type": "support",
-                    "nickname": "test",
-                    "consumes": null,
-                    "responseMessages": null
-                }
-            ]
-        }
-    ],
-    "models": {
-        "supporting-link": {
-            "id":"supporting-link",
-            "$schema": "http://json-schema.org/draft-04/schema",
-            "properties": {
-                "link-ref": {
-                    "required": false
-                }
-            },
-            "type": "object"
-        }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/resources/topology.json b/opendaylight/md-sal/sal-rest-docgen/src/test/resources/topology.json
deleted file mode 100644 (file)
index 8a1a131..0000000
+++ /dev/null
@@ -1,730 +0,0 @@
-{
-    "apiVersion" : "1.0.0",
-    "swaggerVersion" : "1.2",
-    "basePath" : "http://10.195.128.107:8080/restconf",
-    "resourcePath" : null,
-    "produces" : [ "application/json", "application/xml" ],
-    "apis" : [ {
-        "path" : "/operational/network-topology:network-topology",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : null,
-            "type" : "network-topology",
-            "nickname" : "GET-network-topology",
-            "consumes" : null,
-            "parameters" : [ ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "\n                This is the model of an abstract topology.\n                A topology contins nodes and links.  \n                Each topology MUST be identified by\n                unique topology-id for reason that a network could contain many\n                topologies.\n            ",
-            "type" : "topology",
-            "nickname" : "GET-topology",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/link/{link-id}",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "\n                    A Network Link connects a by Local (Source) node and\n                    a Remote (Destination) Network Nodes via a set of the \n                    nodes' termination points. \n                    As it is possible to have several links between the same\n                    source and destination nodes, and as a link could potentially\n                    be re-homed between termination points, to ensure that we \n                    would always know to distinguish between links, every link \n                    is identified by a dedicated link identifier.  \n                    Note that a link models a point-to-point link, not a multipoint\n                    link.  \n                    Layering dependencies on links in underlay topologies are\n                    not represented as the layering information of nodes and of \n                    termination points is sufficient.  \n                ",
-            "type" : "link",
-            "nickname" : "GET-link",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "link-id",
-                "description" : "The identifier of a link in the topology.  \n                A link is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/link/{link-id}/destination",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : null,
-            "type" : "destination",
-            "nickname" : "GET-destination",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "link-id",
-                "description" : "The identifier of a link in the topology.  \n                A link is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/link/{link-id}/destination/dest-node",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "Destination node identifier, must be in same topology.",
-            "type" : "dest-node",
-            "nickname" : "GET-dest-node",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "link-id",
-                "description" : "The identifier of a link in the topology.  \n                A link is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/link/{link-id}/destination/dest-tp",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "Termination point within destination node that terminates the link.",
-            "type" : "dest-tp",
-            "nickname" : "GET-dest-tp",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "link-id",
-                "description" : "The identifier of a link in the topology.  \n                A link is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/link/{link-id}/link-id",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "The identifier of a link in the topology.  \n                A link is specific to a topology to which it belongs.",
-            "type" : "link-id",
-            "nickname" : "GET-link-id",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "link-id",
-                "description" : "The identifier of a link in the topology.  \n                A link is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/link/{link-id}/source",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : null,
-            "type" : "source",
-            "nickname" : "GET-source",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "link-id",
-                "description" : "The identifier of a link in the topology.  \n                A link is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/link/{link-id}/source/source-node",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "Source node identifier, must be in same topology.",
-            "type" : "source-node",
-            "nickname" : "GET-source-node",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "link-id",
-                "description" : "The identifier of a link in the topology.  \n                A link is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/link/{link-id}/source/source-tp",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "Termination point within source node that terminates the link.",
-            "type" : "source-tp",
-            "nickname" : "GET-source-tp",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "link-id",
-                "description" : "The identifier of a link in the topology.  \n                A link is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/link/{link-id}/supporting-link/{link-ref}",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : null,
-            "type" : "supporting-link",
-            "nickname" : "GET-supporting-link",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "link-id",
-                "description" : "The identifier of a link in the topology.  \n                A link is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "link-ref",
-                "description" : null,
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/link/{link-id}/supporting-link/{link-ref}/link-ref",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : null,
-            "type" : "link-ref",
-            "nickname" : "GET-link-ref",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "link-id",
-                "description" : "The identifier of a link in the topology.  \n                A link is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "link-ref",
-                "description" : null,
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/node/{node-id}",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "The list of network nodes defined for the topology.",
-            "type" : "node",
-            "nickname" : "GET-node",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "node-id",
-                "description" : "The identifier of a node in the topology.  \n                A node is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/node/{node-id}/node-id",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "The identifier of a node in the topology.  \n                A node is specific to a topology to which it belongs.",
-            "type" : "node-id",
-            "nickname" : "GET-node-id",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "node-id",
-                "description" : "The identifier of a node in the topology.  \n                A node is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/node/{node-id}/supporting-node/{node-ref}",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "This list defines vertical layering information for nodes. \n                It allows to capture for any given node, which node (or nodes)\n                in the corresponding underlay topology it maps onto.  \n                A node can map to zero, one, or more nodes below it;\n                accordingly there can be zero, one, or more elements in the list.\n                If there are specific layering requirements, for example\n                specific to a particular type of topology that only allows\n                for certain layering relationships, the choice\n                below can be augmented with additional cases.\n                A list has been chosen rather than a leaf-list in order \n                to provide room for augmentations, e.g. for \n                statistics or priorization information associated with \n                supporting nodes.",
-            "type" : "supporting-node",
-            "nickname" : "GET-supporting-node",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "node-id",
-                "description" : "The identifier of a node in the topology.  \n                A node is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "node-ref",
-                "description" : null,
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/node/{node-id}/supporting-node/{node-ref}/node-ref",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : null,
-            "type" : "node-ref",
-            "nickname" : "GET-node-ref",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "node-id",
-                "description" : "The identifier of a node in the topology.  \n                A node is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "node-ref",
-                "description" : null,
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/node/{node-id}/termination-point/{tp-id}",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "A termination point can terminate a link.  \n                        Depending on the type of topology, a termination point could, \n                        for example, refer to a port or an interface.",
-            "type" : "termination-point",
-            "nickname" : "GET-termination-point",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "node-id",
-                "description" : "The identifier of a node in the topology.  \n                A node is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "tp-id",
-                "description" : null,
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/node/{node-id}/termination-point/{tp-id}/tp-id",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : null,
-            "type" : "tp-id",
-            "nickname" : "GET-tp-id",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "node-id",
-                "description" : "The identifier of a node in the topology.  \n                A node is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "tp-id",
-                "description" : null,
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/node/{node-id}/termination-point/{tp-id}/tp-ref",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "The leaf list identifies any termination points that the \n                termination point is dependent on, or maps onto.  \n                Those termination points will themselves be contained \n                in a supporting node.  \n                This dependency information can be inferred from \n                the dependencies between links.  For this reason, \n                this item is not separately configurable.  Hence no\n                corresponding constraint needs to be articulated.  \n                The corresponding information is simply provided by the\n                implementing system.",
-            "type" : "tp-ref",
-            "nickname" : "GET-tp-ref",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "node-id",
-                "description" : "The identifier of a node in the topology.  \n                A node is specific to a topology to which it belongs.",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "tp-id",
-                "description" : null,
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/topology-id",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-            "type" : "topology-id",
-            "nickname" : "GET-topology-id",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/topology-types",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "This container is used to identify the type, or types \n                    (as a topology can support several types simultaneously), \n                    of the topology.  \n                    Topology types are the subject of several integrity constraints \n                    that an implementing server can validate in order to \n                    maintain integrity of the datastore.  \n                    Topology types are indicated through separate data nodes; \n                    the set of topology types is expected to increase over time.\n                    To add support for a new topology, an augmenting module\n                    needs to augment this container with a new empty optional \n                    container to indicate the new topology type.  \n                    The use of a container allows to indicate a subcategorization\n                    of topology types.  \n                    The container SHALL NOT be augmented with any data nodes \n                    that serve a purpose other than identifying a particular \n                    topology type.  \n                ",
-            "type" : "topology-types",
-            "nickname" : "GET-topology-types",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/underlay-topology/{topology-ref}",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : "Identifies the topology, or topologies, that this topology\n                    is dependent on.",
-            "type" : "underlay-topology",
-            "nickname" : "GET-underlay-topology",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "topology-ref",
-                "description" : null,
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    }, {
-        "path" : "/operational/network-topology:network-topology/topology/{topology-id}/underlay-topology/{topology-ref}/topology-ref",
-        "operations" : [ {
-            "method" : "GET",
-            "summary" : null,
-            "notes" : null,
-            "type" : "topology-ref",
-            "nickname" : "GET-topology-ref",
-            "consumes" : null,
-            "parameters" : [ {
-                "name" : "topology-id",
-                "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            }, {
-                "name" : "topology-ref",
-                "description" : null,
-                "required" : false,
-                "type" : "string",
-                "paramType" : "path"
-            } ],
-            "responseMessages" : null
-        } ]
-    } ],
-    "models" : {
-        "underlay-topology" : {
-            "id" : "underlay-topology",
-            "$schema" : "http://json-schema.org/draft-04/schema",
-            "properties" : {
-                "topology-ref" : {
-                    "required" : false
-                }
-            },
-            "type" : "object"
-        },
-        "network-topology" : "{\n  \"id\": \"network-topology\",\n  \"$schema\": \"http://json-schema.org/draft-04/schema\",\n  \"properties\": {\"topology\": {\n    \"items\": {\"$ref\": \"topology\"},\n    \"description\": \"\\n                This is the model of an abstract topology.\\n                A topology contins nodes and links.  \\n                Each topology MUST be identified by\\n                unique topology-id for reason that a network could contain many\\n                topologies.\\n            \",\n    \"type\": \"array\"\n  }},\n  \"type\": \"object\"\n}",
-        "node" : {
-            "id" : "node",
-            "$schema" : "http://json-schema.org/draft-04/schema",
-            "properties" : {
-                "supporting-node" : {
-                    "items" : {
-                        "$ref" : "supporting-node"
-                    },
-                    "description" : "This list defines vertical layering information for nodes. \n                It allows to capture for any given node, which node (or nodes)\n                in the corresponding underlay topology it maps onto.  \n                A node can map to zero, one, or more nodes below it;\n                accordingly there can be zero, one, or more elements in the list.\n                If there are specific layering requirements, for example\n                specific to a particular type of topology that only allows\n                for certain layering relationships, the choice\n                below can be augmented with additional cases.\n                A list has been chosen rather than a leaf-list in order \n                to provide room for augmentations, e.g. for \n                statistics or priorization information associated with \n                supporting nodes.",
-                    "type" : "array"
-                },
-                "termination-point" : {
-                    "items" : {
-                        "$ref" : "termination-point"
-                    },
-                    "description" : "A termination point can terminate a link.  \n                        Depending on the type of topology, a termination point could, \n                        for example, refer to a port or an interface.",
-                    "type" : "array"
-                },
-                "node-id" : {
-                    "description" : "The identifier of a node in the topology.  \n                A node is specific to a topology to which it belongs.",
-                    "type" : "string",
-                    "required" : false
-                }
-            },
-            "type" : "object"
-        },
-        "supporting-node" : {
-            "id" : "supporting-node",
-            "$schema" : "http://json-schema.org/draft-04/schema",
-            "properties" : {
-                "node-ref" : {
-                    "required" : false
-                }
-            },
-            "type" : "object"
-        },
-        "link" : {
-            "id" : "link",
-            "$schema" : "http://json-schema.org/draft-04/schema",
-            "properties" : {
-                "source" : {
-                    "properties" : {
-                        "source-node" : {
-                            "description" : "Source node identifier, must be in same topology.",
-                            "required" : true
-                        },
-                        "source-tp" : {
-                            "description" : "Termination point within source node that terminates the link.",
-                            "required" : false
-                        }
-                    },
-                    "type" : "object"
-                },
-                "supporting-link" : {
-                    "items" : {
-                        "$ref" : "supporting-link"
-                    },
-                    "type" : "array"
-                },
-                "link-id" : {
-                    "description" : "The identifier of a link in the topology.  \n                A link is specific to a topology to which it belongs.",
-                    "type" : "string",
-                    "required" : false
-                },
-                "destination" : {
-                    "properties" : {
-                        "dest-node" : {
-                            "description" : "Destination node identifier, must be in same topology.",
-                            "required" : true
-                        },
-                        "dest-tp" : {
-                            "description" : "Termination point within destination node that terminates the link.",
-                            "required" : false
-                        }
-                    },
-                    "type" : "object"
-                }
-            },
-            "type" : "object"
-        },
-        "termination-point" : {
-            "id" : "termination-point",
-            "$schema" : "http://json-schema.org/draft-04/schema",
-            "properties" : {
-                "tp-ref" : {
-                    "items" : { },
-                    "description" : "The leaf list identifies any termination points that the \n                termination point is dependent on, or maps onto.  \n                Those termination points will themselves be contained \n                in a supporting node.  \n                This dependency information can be inferred from \n                the dependencies between links.  For this reason, \n                this item is not separately configurable.  Hence no\n                corresponding constraint needs to be articulated.  \n                The corresponding information is simply provided by the\n                implementing system.",
-                    "required" : false,
-                    "type" : "array"
-                },
-                "tp-id" : {
-                    "type" : "string",
-                    "required" : false
-                }
-            },
-            "type" : "object"
-        },
-        "topology" : {
-            "id" : "topology",
-            "$schema" : "http://json-schema.org/draft-04/schema",
-            "properties" : {
-                "underlay-topology" : {
-                    "items" : {
-                        "$ref" : "underlay-topology"
-                    },
-                    "description" : "Identifies the topology, or topologies, that this topology\n                    is dependent on.",
-                    "type" : "array"
-                },
-                "node" : {
-                    "items" : {
-                        "$ref" : "node"
-                    },
-                    "description" : "The list of network nodes defined for the topology.",
-                    "type" : "array"
-                },
-                "topology-types" : {
-                    "description" : "This container is used to identify the type, or types \n                    (as a topology can support several types simultaneously), \n                    of the topology.  \n                    Topology types are the subject of several integrity constraints \n                    that an implementing server can validate in order to \n                    maintain integrity of the datastore.  \n                    Topology types are indicated through separate data nodes; \n                    the set of topology types is expected to increase over time.\n                    To add support for a new topology, an augmenting module\n                    needs to augment this container with a new empty optional \n                    container to indicate the new topology type.  \n                    The use of a container allows to indicate a subcategorization\n                    of topology types.  \n                    The container SHALL NOT be augmented with any data nodes \n                    that serve a purpose other than identifying a particular \n                    topology type.  \n                ",
-                    "properties" : { },
-                    "type" : "object"
-                },
-                "topology-id" : {
-                    "description" : "\n                    It is presumed that a datastore will contain many topologies. To\n                    distinguish between topologies it is vital to have UNIQUE\n                    topology identifiers.\n                ",
-                    "type" : "string",
-                    "required" : false
-                },
-                "link" : {
-                    "items" : {
-                        "$ref" : "link"
-                    },
-                    "description" : "\n                    A Network Link connects a by Local (Source) node and\n                    a Remote (Destination) Network Nodes via a set of the \n                    nodes' termination points. \n                    As it is possible to have several links between the same\n                    source and destination nodes, and as a link could potentially\n                    be re-homed between termination points, to ensure that we \n                    would always know to distinguish between links, every link \n                    is identified by a dedicated link identifier.  \n                    Note that a link models a point-to-point link, not a multipoint\n                    link.  \n                    Layering dependencies on links in underlay topologies are\n                    not represented as the layering information of nodes and of \n                    termination points is sufficient.  \n                ",
-                    "type" : "array"
-                }
-            },
-            "type" : "object"
-        },
-        "supporting-link" : {
-            "id" : "supporting-link",
-            "$schema" : "http://json-schema.org/draft-04/schema",
-            "properties" : {
-                "link-ref" : {
-                    "required" : false
-                }
-            },
-            "type" : "object"
-        }
-    }
-}
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/resources/wadl.xml b/opendaylight/md-sal/sal-rest-docgen/src/test/resources/wadl.xml
deleted file mode 100644 (file)
index 7c3488f..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0"?>
-<application xmlns="http://wadl.dev.java.net/2009/02" xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"
-             xmlns:nt="urn:TBD:params:xml:ns:yang:network-topology">
-
-  <grammars>
-    <include href="network-topology.yang"/>
-    <include href="ietf-inet-types.yang"/>
-  </grammars>
-
-  <resources base="http://localhost:9998/restconf">
-    <resource path="operational">
-      <resource path="network-topology:network-topology">
-        <method name="GET">
-          <response>
-            <representation mediaType="application/xml" element="nt:network-topology"/>
-            <representation mediaType="text/xml" element="nt:network-topology"/>
-            <representation mediaType="application/json" element="nt:network-topology"/>
-            <representation mediaType="application/yang.data+xml" element="nt:network-topology"/>
-            <representation mediaType="application/yang.data+json" element="nt:network-topology"/>
-          </response>
-        </method>
-        <resource path="topology/{topology-id}">
-          <param required="true" style="template" name="topology-id" type="nt:topology-id"/>
-          <method name="GET">
-            <response>
-              <representation mediaType="application/xml" element="nt:topology"/>
-              <representation mediaType="text/xml" element="nt:topology"/>
-              <representation mediaType="application/json" element="nt:topology"/>
-              <representation mediaType="application/yang.data+xml" element="nt:topology"/>
-              <representation mediaType="application/yang.data+json" element="nt:topology"/>
-            </response>
-          </method>
-          <resource path="link/{link-id}">
-            <param required="true" style="template" name="link-id" type="nt:link-id"/>
-            <method name="GET">
-              <response>
-                <representation mediaType="application/xml" element="nt:link"/>
-                <representation mediaType="text/xml" element="nt:link"/>
-                <representation mediaType="application/json" element="nt:link"/>
-                <representation mediaType="application/yang.data+xml" element="nt:link"/>
-                <representation mediaType="application/yang.data+json" element="nt:link"/>
-              </response>
-            </method>
-            <resource path="destination">
-              <method name="GET">
-                <response>
-                  <representation mediaType="application/xml" element="nt:destination"/>
-                  <representation mediaType="text/xml" element="nt:destination"/>
-                  <representation mediaType="application/json" element="nt:destination"/>
-                  <representation mediaType="application/yang.data+xml" element="nt:destination"/>
-                  <representation mediaType="application/yang.data+json" element="nt:destination"/>
-                </response>
-              </method>
-            </resource>
-            <resource path="source">
-              <method name="GET">
-                <response>
-                  <representation mediaType="application/xml" element="nt:source"/>
-                  <representation mediaType="text/xml" element="nt:source"/>
-                  <representation mediaType="application/json" element="nt:source"/>
-                  <representation mediaType="application/yang.data+xml" element="nt:source"/>
-                  <representation mediaType="application/yang.data+json" element="nt:source"/>
-                </response>
-              </method>
-            </resource>
-            <resource path="supporting-link/{link-ref}">
-              <param required="true" style="template" name="link-ref" type="nt:link-ref"/>
-              <method name="GET">
-                <response>
-                  <representation mediaType="application/xml" element="nt:supporting-link"/>
-                  <representation mediaType="text/xml" element="nt:supporting-link"/>
-                  <representation mediaType="application/json" element="nt:supporting-link"/>
-                  <representation mediaType="application/yang.data+xml" element="nt:supporting-link"/>
-                  <representation mediaType="application/yang.data+json" element="nt:supporting-link"/>
-                </response>
-              </method>
-            </resource>
-          </resource>
-          <resource path="node/{node-id}">
-            <param required="true" style="template" name="node-id" type="nt:node-id"/>
-            <method name="GET">
-              <response>
-                <representation mediaType="application/xml" element="nt:node"/>
-                <representation mediaType="text/xml" element="nt:node"/>
-                <representation mediaType="application/json" element="nt:node"/>
-                <representation mediaType="application/yang.data+xml" element="nt:node"/>
-                <representation mediaType="application/yang.data+json" element="nt:node"/>
-              </response>
-            </method>
-            <resource path="supporting-node/{node-ref}">
-              <param required="true" style="template" name="node-ref" type="nt:node-ref"/>
-              <method name="GET">
-                <response>
-                  <representation mediaType="application/xml" element="nt:supporting-node"/>
-                  <representation mediaType="text/xml" element="nt:supporting-node"/>
-                  <representation mediaType="application/json" element="nt:supporting-node"/>
-                  <representation mediaType="application/yang.data+xml" element="nt:supporting-node"/>
-                  <representation mediaType="application/yang.data+json" element="nt:supporting-node"/>
-                </response>
-              </method>
-            </resource>
-            <resource path="termination-point/{tp-id}">
-              <param required="true" style="template" name="tp-id" type="nt:tp-id"/>
-              <method name="GET">
-                <response>
-                  <representation mediaType="application/xml" element="nt:termination-point"/>
-                  <representation mediaType="text/xml" element="nt:termination-point"/>
-                  <representation mediaType="application/json" element="nt:termination-point"/>
-                  <representation mediaType="application/yang.data+xml" element="nt:termination-point"/>
-                  <representation mediaType="application/yang.data+json" element="nt:termination-point"/>
-                </response>
-              </method>
-            </resource>
-          </resource>
-          <resource path="topology-types">
-            <method name="GET">
-              <response>
-                <representation mediaType="application/xml" element="nt:topology-types"/>
-                <representation mediaType="text/xml" element="nt:topology-types"/>
-                <representation mediaType="application/json" element="nt:topology-types"/>
-                <representation mediaType="application/yang.data+xml" element="nt:topology-types"/>
-                <representation mediaType="application/yang.data+json" element="nt:topology-types"/>
-              </response>
-            </method>
-          </resource>
-          <resource path="underlay-topology/{topology-ref}">
-            <param required="true" style="template" name="topology-ref" type="nt:topology-ref"/>
-            <method name="GET">
-              <response>
-                <representation mediaType="application/xml" element="nt:underlay-topology"/>
-                <representation mediaType="text/xml" element="nt:underlay-topology"/>
-                <representation mediaType="application/json" element="nt:underlay-topology"/>
-                <representation mediaType="application/yang.data+xml" element="nt:underlay-topology"/>
-                <representation mediaType="application/yang.data+json" element="nt:underlay-topology"/>
-              </response>
-            </method>
-          </resource>
-        </resource>
-      </resource>
-    </resource>
-  </resources>
-</application>
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/opflex.yang b/opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/opflex.yang
deleted file mode 100644 (file)
index 8e598dd..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-module opflex {
-    yang-version 1;
-
-    namespace "urn:opendaylight:groupbasedpolicy:opflex";
-    prefix "opflex";
-
-
-
-
-
-    description
-        "This module defines the group-based policy OpFlex renderer model.";
-
-    revision "2014-05-28" {
-        description
-            "Initial revision.";
-    }
-
-    typedef serialization {
-        description
-            "The serialization to use for OpFlex messages.";
-
-        type enumeration {
-            enum json {
-                description
-                "JSON 1.0 serialization.";
-            }
-            enum xml {
-                description
-                "XML serialization.";
-            }
-            enum binary {
-                description
-                "OpFlex binary serialization.";
-            }
-        }
-    }
-
-    // ******************
-    // Configuration Data
-    // ******************
-    leaf domain {
-        description
-            "The OpFlex administrative domain.";
-
-        config true;
-
-        type string;
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/toaster.yang b/opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/toaster.yang
deleted file mode 100644 (file)
index ffddc8c..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-module toaster {
-
-    yang-version 1;
-
-    namespace
-      "http://netconfcentral.org/ns/toaster";
-
-    prefix toast;
-
-    organization "Netconf Central";
-
-    contact
-      "Andy Bierman <andy@netconfcentral.org>";
-
-    description
-      "YANG version of the TOASTER-MIB.";
-
-    revision "2009-11-20" {
-      description
-        "Toaster module in progress.";
-    }
-
-    leaf domain {
-        description
-            "Toaster domain.";
-
-        config true;
-
-        type string;
-    }
-
-    identity toast-type {
-      description
-          "Base for all bread types supported by the toaster.
-           New bread types not listed here nay be added in the
-           future.";
-    }
-
-    identity white-bread {
-      base toast:toast-type;
-      description "White bread.";
-    }
-
-    identity wheat-bread {
-      base toast-type;
-      description "Wheat bread.";
-    }
-
-    identity wonder-bread {
-      base toast-type;
-      description "Wonder bread.";
-    }
-
-    identity frozen-waffle {
-      base toast-type;
-      description "Frozen waffle.";
-    }
-
-    identity frozen-bagel {
-      base toast-type;
-      description "Frozen bagel.";
-    }
-
-    identity hash-brown {
-      base toast-type;
-      description "Hash browned potatos.";
-    }
-
-    typedef DisplayString {
-      type string;
-      description
-        "YANG version of the SMIv2 DisplayString TEXTUAL-CONVENTION.";
-      reference
-        "RFC 2579, section 2.";
-
-    }
-
-    container toaster {
-      presence
-        "Indicates the toaster service is available";
-      description
-        "Top-level container for all toaster database objects.";
-
-      leaf testToasterBits {
-         type bits {
-             bit testbit1 {
-                 position 0;
-             }
-             bit testbit2 {
-                 position 1;
-             }
-         }
-         default "testbit2";
-     }
-
-     leaf testUnion {
-        type union {
-         type int32;
-         type string;
-        }
-
-     }
-
-     leaf-list allow-user  {
-          type string;
-          description "A list of user name patterns to allow";
-
-        }
-
-        choice how {
-             default interval;
-             case interval {
-                 leaf interval {
-                     type uint16;
-                     default 30;
-                     units minutes;
-                 }
-             }
-             case daily {
-                 leaf daily {
-                     type string;
-                 }
-                 leaf time-of-day {
-                     type string;
-                     units 24-hour-clock;
-                     default 1am;
-                 }
-             }
-             case manual {
-                 leaf manual {
-                     type string;
-                 }
-             }
-         }
-
-      leaf toasterManufacturer {
-        type DisplayString;
-        config false;
-        mandatory true;
-        description
-          "The name of the toaster's manufacturer. For instance,
-                Microsoft Toaster.";
-      }
-
-      leaf toasterModelNumber {
-        type DisplayString;
-        config false;
-        mandatory true;
-        description
-          "The name of the toaster's model. For instance,
-               Radiant Automatic.";
-      }
-
-      leaf toasterStatus {
-        type enumeration {
-          enum "up" {
-            value 1;
-            description
-              "The toaster knob position is up.
-                      No toast is being made now.";
-          }
-          enum "down" {
-            value 2;
-            description
-              "The toaster knob position is down.
-                      Toast is being made now.";
-          }
-        }
-        config false;
-        mandatory true;
-        description
-          "This variable indicates the current state of
-               the toaster.";
-      }
-    }
-
-    rpc make-toast {
-      description
-        "Make some toast.
-           The toastDone notification will be sent when
-           the toast is finished.
-           An 'in-use' error will be returned if toast
-           is already being made.
-           A 'resource-denied' error will be returned
-           if the toaster service is disabled.";
-      input {
-        leaf toasterDoneness {
-          type uint32 {
-            range "1 .. 10";
-          }
-          default '5';
-          description
-            "This variable controls how well-done is the
-                   ensuing toast. It should be on a scale of 1 to 10.
-                   Toast made at 10 generally is considered unfit
-                   for human consumption; toast made at 1 is warmed
-                   lightly.";
-        }
-
-        leaf toasterToastType {
-          type identityref {
-            base toast:toast-type;
-          }
-          default 'wheat-bread';
-          description
-            "This variable informs the toaster of the type of
-                   material that is being toasted. The toaster
-                   uses this information, combined with
-                   toasterDoneness, to compute for how
-                   long the material must be toasted to achieve
-                   the required doneness.";
-        }
-      }
-    }
-
-    rpc cancel-toast {
-      description
-        "Stop making toast, if any is being made.
-           A 'resource-denied' error will be returned
-           if the toaster service is disabled.";
-    }
-
-    notification toastDone {
-      description
-        "Indicates that the toast in progress has completed.";
-      leaf toastStatus {
-        type enumeration {
-          enum "done" {
-            value 0;
-            description "The toast is done.";
-          }
-          enum "cancelled" {
-            value 1;
-            description
-              "The toast was cancelled.";
-          }
-          enum "error" {
-            value 2;
-            description
-              "The toaster service was disabled or
-                     the toaster is broken.";
-          }
-        }
-        description
-          "Indicates the final toast status";
-      }
-    }
-  }
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/toaster_augmented.yang b/opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/toaster_augmented.yang
deleted file mode 100644 (file)
index 4db7897..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-module toaster-augmented {
-
-    yang-version 1;
-
-    namespace
-      "http://netconfcentral.org/ns/toaster/augmented";
-
-    prefix toast;
-    import toaster2 {prefix tst; revision-date 2009-11-20;}
-
-    revision "2014-7-14" {
-    }
-
-    augment "/tst:toaster/tst:toasterSlot" {
-        container slotInfo {
-            leaf numberOfToastPrepared {
-                type uint32;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/toaster_short.yang b/opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/toaster_short.yang
deleted file mode 100644 (file)
index 1a4d94d..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-  module toaster2 {
-
-    yang-version 1;
-
-    namespace
-      "http://netconfcentral.org/ns/toaster2";
-
-    prefix toast;
-
-    organization "Netconf Central";
-
-    contact
-      "Andy Bierman <andy@netconfcentral.org>";
-
-    description
-      "YANG version of the TOASTER-MIB.";
-
-    revision "2009-11-20" {
-      description
-        "Toaster module in progress.";
-    }
-
-
-    identity toast-type {
-      description
-        "Base for all bread types supported by the toaster.
-           New bread types not listed here nay be added in the
-           future.";
-    }
-
-    identity white-bread {
-      base toast:toast-type;
-      description "White bread.";
-    }
-
-    identity wheat-bread {
-      base toast-type;
-      description "Wheat bread.";
-    }
-
-    identity wonder-bread {
-      base toast-type;
-      description "Wonder bread.";
-    }
-
-    identity frozen-waffle {
-      base toast-type;
-      description "Frozen waffle.";
-    }
-
-    identity frozen-bagel {
-      base toast-type;
-      description "Frozen bagel.";
-    }
-
-    identity hash-brown {
-      base toast-type;
-      description "Hash browned potatos.";
-    }
-
-    typedef DisplayString {
-      type string {
-        length "0 .. 255";
-      }
-      description
-        "YANG version of the SMIv2 DisplayString TEXTUAL-CONVENTION.";
-      reference
-        "RFC 2579, section 2.";
-
-    }
-
-    container toaster {
-      presence
-        "Indicates the toaster service is available";
-      description
-        "Top-level container for all toaster database objects.";
-      leaf toasterManufacturer {
-        type DisplayString;
-        config false;
-        mandatory true;
-        description
-          "The name of the toaster's manufacturer. For instance,
-                Microsoft Toaster.";
-      }
-
-      list toasterSlot {
-        key "slotId";
-        leaf slotId {
-            type string;
-        }
-      }
-
-      leaf toasterModelNumber {
-        type DisplayString;
-        config false;
-        mandatory true;
-        description
-          "The name of the toaster's model. For instance,
-               Radiant Automatic.";
-      }
-
-      leaf toasterStatus {
-        type enumeration {
-          enum "up" {
-            value 1;
-            description
-              "The toaster knob position is up.
-                      No toast is being made now.";
-          }
-          enum "down" {
-            value 2;
-            description
-              "The toaster knob position is down.
-                      Toast is being made now.";
-          }
-        }
-        config false;
-        mandatory true;
-        description
-          "This variable indicates the current state of
-               the toaster.";
-      }
-
-      leaf darknessFactor {
-        type uint32;
-        config true;
-        default 1000;
-        description
-          "The darkness factor. Basically, the number of ms to multiple the doneness value by.";
-      }
-    }  // container toaster
-    
-    list lst {
-        container cont1 {
-            container cont11 {
-                leaf lf111 {
-                    type uint32;
-                }
-                leaf lf112 {
-                    type string;
-                }
-            }
-            list lst11 {
-                leaf lf111 {
-                    type string;
-                }
-            }
-        }
-        list lst1 {
-            key "key1 key2";
-            leaf key1 {
-                type int32;
-            }
-            leaf key2 {
-                type int8;
-            }
-            leaf lf11 {
-                type int16;
-            }
-        }
-        leaf lf1 {
-            type string;
-        }
-    }    
-
-    rpc make-toast {
-      description
-        "Make some toast.
-           The toastDone notification will be sent when
-           the toast is finished.
-           An 'in-use' error will be returned if toast
-           is already being made.
-           A 'resource-denied' error will be returned
-           if the toaster service is disabled.";
-      input {
-        leaf toasterDoneness {
-          type uint32 {
-            range "1 .. 10";
-          }
-          default '5';
-          description
-            "This variable controls how well-done is the
-                   ensuing toast. It should be on a scale of 1 to 10.
-                   Toast made at 10 generally is considered unfit
-                   for human consumption; toast made at 1 is warmed
-                   lightly.";
-        }
-
-        leaf toasterToastType {
-          type identityref {
-            base toast:toast-type;
-          }
-          default 'wheat-bread';
-          description
-            "This variable informs the toaster of the type of
-                   material that is being toasted. The toaster
-                   uses this information, combined with
-                   toasterDoneness, to compute for how
-                   long the material must be toasted to achieve
-                   the required doneness.";
-        }
-      }
-    }  // rpc make-toast
-
-    rpc cancel-toast {
-      description
-        "Stop making toast, if any is being made.
-           A 'resource-denied' error will be returned
-           if the toaster service is disabled.";
-    }  // rpc cancel-toast
-
-    rpc restock-toaster {
-        description
-          "Restocks the toaster with the amount of bread specified.";
-
-        input {
-            leaf amountOfBreadToStock {
-                type uint32;
-                description
-                  "Indicates the amount of bread to re-stock";
-            }
-        }
-    }
-
-    notification toasterOutOfBread {
-      description
-        "Indicates that the toaster has run of out bread.";
-    }  // notification toasterOutOfStock
-
-    notification toasterRestocked {
-      description
-        "Indicates that the toaster has run of out bread.";
-      leaf amountOfBread {
-        type uint32;
-        description
-          "Indicates the amount of bread that was re-stocked";
-      }
-    }  // notification toasterOutOfStock
-
-  }  // module toaster
diff --git a/opendaylight/md-sal/sal-restconf-broker/pom.xml b/opendaylight/md-sal/sal-restconf-broker/pom.xml
deleted file mode 100644 (file)
index 85805b6..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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>
-    <groupId>org.opendaylight.controller</groupId>
-    <artifactId>sal-parent</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
-  </parent>
-  <artifactId>sal-restconf-broker</artifactId>
-  <packaging>bundle</packaging>
-  <dependencies>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-binding-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-binding-config</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-binding-util</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-broker-impl</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-core-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>sal-remote</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>restconf-client-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>restconf-client-impl</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-    </dependency>
-  </dependencies>
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <extensions>true</extensions>
-        <configuration>
-          <instructions>
-            <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
-            <Import-Package>*</Import-Package>
-          </instructions>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-  <scm>
-    <connection>scm:git:http://git.opendaylight.org/gerrit/controller.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
-    <tag>HEAD</tag>
-    <url>https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL</url>
-  </scm>
-</project>
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/binding/impl/DataBrokerServiceImpl.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/binding/impl/DataBrokerServiceImpl.java
deleted file mode 100644 (file)
index d87e499..0000000
+++ /dev/null
@@ -1,58 +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.sal.restconf.binding.impl;
-
-import java.net.URL;
-import org.opendaylight.controller.sal.binding.api.data.DataBrokerService;
-import org.opendaylight.controller.sal.binding.api.data.DataChangeListener;
-import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.restconf.client.api.RestconfClientContext;
-import org.opendaylight.yangtools.restconf.client.api.RestconfClientContextFactory;
-import org.opendaylight.yangtools.restconf.client.api.UnsupportedProtocolException;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.SchemaContextHolder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DataBrokerServiceImpl implements DataBrokerService {
-
-    private static final Logger logger = LoggerFactory.getLogger(DataBrokerServiceImpl.class.toString());
-    private final RestconfClientContext restconfClientContext;
-    private final RestconfClientContextFactory restconfClientContextFactory = null;
-
-    public DataBrokerServiceImpl(URL baseUrl, SchemaContextHolder schemaContextHolder) throws UnsupportedProtocolException {
-        this.restconfClientContext = restconfClientContextFactory.getRestconfClientContext(baseUrl, schemaContextHolder);
-    }
-
-    @Override
-    public DataModificationTransaction beginTransaction() {
-        //TODO implementation using sal-remote
-        return null;
-    }
-
-    @Override
-    public DataObject readConfigurationData(InstanceIdentifier<? extends DataObject> path) {
-        //TODO implementation using restconf-client
-        return null;
-
-    }
-
-    @Override
-    public DataObject readOperationalData(InstanceIdentifier<? extends DataObject> path) {
-        //TODO implementation using restconf-client
-        return null;
-    }
-
-    @Override
-    public ListenerRegistration<DataChangeListener> registerDataChangeListener(InstanceIdentifier<? extends DataObject> path, DataChangeListener listener) {
-        //TODO implementation using restconf-client
-        return null;
-    }
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/SalRemoteServiceBroker.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/SalRemoteServiceBroker.java
deleted file mode 100644 (file)
index 0553b2f..0000000
+++ /dev/null
@@ -1,79 +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.sal.restconf.broker;
-
-
-import com.google.common.collect.ImmutableClassToInstanceMap;
-import org.opendaylight.controller.md.sal.binding.util.BindingContextUtils;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
-import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
-import org.opendaylight.controller.sal.binding.api.BindingAwareService;
-import org.opendaylight.controller.sal.binding.api.NotificationService;
-import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry;
-import org.opendaylight.controller.sal.binding.api.data.DataBrokerService;
-import org.opendaylight.controller.sal.restconf.broker.impl.RemoteServicesFactory;
-import org.opendaylight.yangtools.restconf.client.api.RestconfClientContext;
-import org.osgi.framework.BundleContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import static com.google.common.base.Preconditions.checkState;
-
-public class SalRemoteServiceBroker implements BindingAwareBroker,AutoCloseable {
-
-
-    private static final Logger logger = LoggerFactory.getLogger(SalRemoteServiceBroker.class.toString());
-    private ImmutableClassToInstanceMap<BindingAwareService> supportedConsumerServices;
-
-    private final String identifier;
-
-    private RpcConsumerRegistry rpcBroker;
-    private NotificationService notificationBroker;
-    private DataBrokerService dataBroker;
-    private final RemoteServicesFactory servicesFactory;
-
-    public SalRemoteServiceBroker(String instanceName,RestconfClientContext clientContext){
-        this.identifier = instanceName;
-        this.servicesFactory = new RemoteServicesFactory(clientContext);
-    }
-
-    public void start() {
-        logger.info("Starting Binding Aware Broker: {}", identifier);
-
-        supportedConsumerServices = ImmutableClassToInstanceMap.<BindingAwareService> builder()
-                .put(NotificationService.class, servicesFactory.getNotificationService()) //
-                .put(DataBrokerService.class,servicesFactory.getDataBrokerService() ) //
-                .put(RpcConsumerRegistry.class,servicesFactory.getRpcConsumerRegistry() ).build();
-    }
-
-    public ProviderContext registerProvider(BindingAwareProvider provider) {
-        throw new UnsupportedOperationException();
-    }
-    @Override
-    public void close() throws Exception {
-        //TODO decide if serviceFactory should close clientContext or it has to be closed by consumer
-    }
-    @Override
-    public ConsumerContext registerConsumer(BindingAwareConsumer consumer) {
-        checkState(supportedConsumerServices != null, "Broker is not initialized.");
-        return BindingContextUtils.createConsumerContextAndInitialize(consumer, supportedConsumerServices);
-    }
-
-    @Override
-    public ConsumerContext registerConsumer(BindingAwareConsumer consumer,
-            BundleContext ctx) {
-        return registerConsumer(consumer);
-    }
-
-    @Override
-    public ProviderContext registerProvider(BindingAwareProvider provider,
-            BundleContext ctx) {
-        return registerProvider(provider);
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/client/SalRemoteClient.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/client/SalRemoteClient.java
deleted file mode 100644 (file)
index 0044d36..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.broker.client;
-
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
-
-public interface SalRemoteClient extends AutoCloseable {
-
-    ConsumerContext registerConsumer();
-
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/client/SalRemoteClientDeployer.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/client/SalRemoteClientDeployer.java
deleted file mode 100644 (file)
index a1bb81b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.broker.client;
-
-import java.net.URL;
-
-public class SalRemoteClientDeployer {
-
-    public static SalRemoteClient createSalRemoteClient(final URL url) {
-        return new SalRemoteClientImpl(url);
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/client/SalRemoteClientImpl.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/client/SalRemoteClientImpl.java
deleted file mode 100644 (file)
index 7428b90..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2014 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.sal.restconf.broker.client;
-
-import com.google.common.base.Preconditions;
-import java.net.URL;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
-import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
-import org.opendaylight.controller.sal.restconf.broker.SalRemoteServiceBroker;
-import org.opendaylight.yangtools.restconf.client.RestconfClientFactory;
-import org.opendaylight.yangtools.restconf.client.api.RestconfClientContext;
-import org.opendaylight.yangtools.restconf.client.api.UnsupportedProtocolException;
-import org.opendaylight.yangtools.sal.binding.generator.impl.ModuleInfoBackedContext;
-import org.opendaylight.yangtools.yang.binding.util.BindingReflections;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaContextHolder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-class SalRemoteClientImpl implements SalRemoteClient, SchemaContextHolder {
-
-    private static final Logger logger = LoggerFactory.getLogger(SalRemoteClientImpl.class);
-
-    private final RestconfClientContext restconfClientContext;
-    private final SalRemoteServiceBroker salRemoteBroker;
-
-    private SchemaContext schemaContext;
-
-    public SalRemoteClientImpl(final URL url) {
-        Preconditions.checkNotNull(url);
-
-
-        final ModuleInfoBackedContext moduleInfo = ModuleInfoBackedContext.create();
-        moduleInfo.addModuleInfos(BindingReflections.loadModuleInfos());
-        schemaContext = moduleInfo.tryToCreateSchemaContext().get();
-        try {
-            this.restconfClientContext = new RestconfClientFactory().getRestconfClientContext(url,this);
-
-            this.salRemoteBroker = new SalRemoteServiceBroker("remote-broker", restconfClientContext);
-            this.salRemoteBroker.start();
-        } catch (UnsupportedProtocolException e) {
-            logger.error("Unsupported protocol {}.", url.getProtocol(), e);
-            throw new IllegalArgumentException("Unsupported protocol.", e);
-        }
-    }
-
-    @Override
-    public ConsumerContext registerConsumer() {
-        return this.salRemoteBroker.registerConsumer(new BindingAwareConsumer() {
-
-            @Override
-            public void onSessionInitialized(ConsumerContext session) {
-            }
-        }, null);
-    }
-
-    @Override
-    public SchemaContext getSchemaContext() {
-        return schemaContext;
-    }
-
-    @Override
-    public void close() throws Exception {
-        this.restconfClientContext.close();
-        this.salRemoteBroker.close();
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/event/RemoteDataChangeEvent.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/event/RemoteDataChangeEvent.java
deleted file mode 100644 (file)
index 9dfd262..0000000
+++ /dev/null
@@ -1,144 +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.sal.restconf.broker.event;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import javax.annotation.concurrent.ThreadSafe;
-
-import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.DataChangedNotification;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-@ThreadSafe
-public class RemoteDataChangeEvent implements DataChangeEvent<InstanceIdentifier<? extends DataObject>,DataObject> {
-    private final Map<InstanceIdentifier<?>, DataObject> createdConfig, createdOper, origConfig, origOper, updatedConfig, updatedOper;
-    private final Set<InstanceIdentifier<?>> removedConfig, removedOper;
-
-    public RemoteDataChangeEvent(DataChangedNotification dataChangedNotification) {
-        final Map<InstanceIdentifier<?>, DataObject> createdConfig = new HashMap<>();
-        final Map<InstanceIdentifier<?>, DataObject> createdOper = new HashMap<>();
-        final Map<InstanceIdentifier<?>, DataObject> origConfig = new HashMap<>();
-        final Map<InstanceIdentifier<?>, DataObject> origOper = new HashMap<>();
-        final Map<InstanceIdentifier<?>, DataObject> updatedConfig = new HashMap<>();
-        final Map<InstanceIdentifier<?>, DataObject> updatedOper = new HashMap<>();
-        final Set<InstanceIdentifier<?>> removedConfig = new HashSet<>();
-        final Set<InstanceIdentifier<?>> removedOper = new HashSet<>();
-
-        for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.data.changed.notification.DataChangeEvent d :dataChangedNotification.getDataChangeEvent()) {
-            switch (d.getOperation()) {
-            case Created:
-                switch (d.getStore()) {
-                case Config:
-                    createdConfig.put(d.getPath(), d);
-                    break;
-                case Operation:
-                    createdOper.put(d.getPath(), d);
-                    break;
-                }
-                break;
-            case Deleted:
-                switch (d.getStore()) {
-                case Config:
-                    removedConfig.add(d.getPath());
-                    break;
-                case Operation:
-                    removedOper.add(d.getPath());
-                    break;
-                }
-                break;
-            case Updated:
-                switch (d.getStore()) {
-                case Config:
-                    origConfig.put(d.getPath(), d);
-                    updatedConfig.put(d.getPath(), d);
-                    break;
-                case Operation:
-                    origOper.put(d.getPath(),d);
-                    updatedOper.put(d.getPath(),d);
-                    break;
-                }
-                break;
-            }
-        }
-
-        this.createdConfig = Collections.unmodifiableMap(createdConfig);
-        this.createdOper = Collections.unmodifiableMap(createdOper);
-        this.origConfig = Collections.unmodifiableMap(origConfig);
-        this.origOper = Collections.unmodifiableMap(origOper);
-        this.updatedConfig = Collections.unmodifiableMap(updatedConfig);
-        this.updatedOper = Collections.unmodifiableMap(updatedOper);
-        this.removedConfig = Collections.unmodifiableSet(removedConfig);
-        this.removedOper = Collections.unmodifiableSet(removedOper);
-    }
-
-    @Override
-    public DataObject getOriginalConfigurationSubtree() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public DataObject getOriginalOperationalSubtree() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public DataObject getUpdatedConfigurationSubtree() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public DataObject getUpdatedOperationalSubtree() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Map<InstanceIdentifier<?>, DataObject> getCreatedOperationalData() {
-        return createdOper;
-    }
-
-    @Override
-    public Map<InstanceIdentifier<?>, DataObject> getCreatedConfigurationData() {
-        return createdConfig;
-    }
-
-    @Override
-    public Map<InstanceIdentifier<?>, DataObject> getUpdatedOperationalData() {
-        return updatedOper;
-    }
-
-    @Override
-    public Map<InstanceIdentifier<?>, DataObject> getUpdatedConfigurationData() {
-        return updatedConfig;
-    }
-
-    @Override
-    public Set<InstanceIdentifier<?>> getRemovedConfigurationData() {
-        return removedConfig;
-    }
-
-    @Override
-    public Set<InstanceIdentifier<?>> getRemovedOperationalData() {
-        return removedOper;
-    }
-
-    @Override
-    public Map<InstanceIdentifier<?>, DataObject> getOriginalConfigurationData() {
-        return origConfig;
-    }
-
-    @Override
-    public Map<InstanceIdentifier<?>, DataObject> getOriginalOperationalData() {
-        return origOper;
-    }
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/DataBrokerServiceImpl.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/DataBrokerServiceImpl.java
deleted file mode 100644 (file)
index 003ad98..0000000
+++ /dev/null
@@ -1,110 +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.sal.restconf.broker.impl;
-
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-
-import org.opendaylight.controller.sal.binding.api.data.DataBrokerService;
-import org.opendaylight.controller.sal.binding.api.data.DataChangeListener;
-import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction;
-import org.opendaylight.controller.sal.restconf.broker.listeners.RemoteDataChangeNotificationListener;
-import org.opendaylight.controller.sal.restconf.broker.tools.RemoteStreamTools;
-import org.opendaylight.controller.sal.restconf.broker.transactions.RemoteDataModificationTransaction;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.BeginTransactionOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.CreateDataChangeEventSubscriptionInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.CreateDataChangeEventSubscriptionOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.SalRemoteService;
-import org.opendaylight.yangtools.concepts.AbstractListenerRegistration;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.restconf.client.api.RestconfClientContext;
-import org.opendaylight.yangtools.restconf.client.api.event.EventStreamInfo;
-import org.opendaylight.yangtools.restconf.client.api.event.ListenableEventStreamContext;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Optional;
-
-public class DataBrokerServiceImpl implements DataBrokerService  {
-
-    private static final Logger logger = LoggerFactory.getLogger(DataBrokerServiceImpl.class.toString());
-    private final RestconfClientContext restconfClientContext;
-    private final SalRemoteService salRemoteService;
-
-    public DataBrokerServiceImpl(RestconfClientContext restconfClientContext) {
-        this.restconfClientContext = restconfClientContext;
-        this.salRemoteService =  this.restconfClientContext.getRpcServiceContext(SalRemoteService.class).getRpcService();
-    }
-
-    @Override
-    public DataModificationTransaction beginTransaction() {
-        Future<RpcResult<BeginTransactionOutput>> rpcResultFuture = this.salRemoteService.beginTransaction();
-        //TODO finish yang model for proper remoteDataModificationTransaction setup
-        RemoteDataModificationTransaction remoteDataModificationTransaction = new RemoteDataModificationTransaction();
-        return remoteDataModificationTransaction;
-    }
-
-    @Override
-    public DataObject readConfigurationData(InstanceIdentifier<? extends DataObject> path) {
-        try {
-            Optional<DataObject> optDataObject = (Optional<DataObject>) this.restconfClientContext.getConfigurationDatastore().readData(path).get();
-            if (optDataObject.isPresent()){
-                return optDataObject.get();
-            }
-        } catch (InterruptedException e) {
-            logger.trace("Reading configuration data interrupted {}",e);
-        } catch (ExecutionException e) {
-            logger.trace("Reading configuration execution exception {}",e);
-        }
-        throw new IllegalStateException("No data to return.");
-    }
-
-    @Override
-    public DataObject readOperationalData(InstanceIdentifier<? extends DataObject> path) {
-        try {
-            Optional<DataObject> optDataObject = (Optional<DataObject>) this.restconfClientContext.getOperationalDatastore().readData(path).get();
-            if (optDataObject.isPresent()){
-                return optDataObject.get();
-            }
-        } catch (InterruptedException e) {
-            logger.trace("Reading configuration data interrupted {}",e);
-        } catch (ExecutionException e) {
-            logger.trace("Reading configuration execution exception {}",e);
-        }
-        throw new IllegalStateException("No data to return.");
-    }
-    @Override
-    public ListenerRegistration<DataChangeListener> registerDataChangeListener(InstanceIdentifier<? extends DataObject> path, DataChangeListener listener) {
-        CreateDataChangeEventSubscriptionInputBuilder inputBuilder = new CreateDataChangeEventSubscriptionInputBuilder();
-        Future<RpcResult<CreateDataChangeEventSubscriptionOutput>> rpcResultFuture =  salRemoteService.createDataChangeEventSubscription(inputBuilder.setPath(path).build());
-        String streamName = "";
-        try {
-            if (rpcResultFuture.get().isSuccessful()){
-                streamName = rpcResultFuture.get().getResult().getStreamName();
-            }
-        } catch (InterruptedException e) {
-            logger.trace("Interupted while getting rpc result due to {}",e);
-        } catch (ExecutionException e) {
-            logger.trace("Execution exception while getting rpc result due to {}",e);
-        }
-        final Map<String,EventStreamInfo> desiredEventStream = RemoteStreamTools.createEventStream(restconfClientContext,streamName);
-        ListenableEventStreamContext restConfListenableEventStreamContext = restconfClientContext.getEventStreamContext(desiredEventStream.get(streamName));
-        RemoteDataChangeNotificationListener remoteDataChangeNotificationListener = new RemoteDataChangeNotificationListener(listener);
-        final ListenerRegistration<?> reg = restConfListenableEventStreamContext.registerNotificationListener(remoteDataChangeNotificationListener);
-        return new AbstractListenerRegistration<DataChangeListener>(listener) {
-            @Override
-            protected void removeRegistration() {
-                reg.close();
-            }
-        };
-    }
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/NotificationServiceImpl.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/NotificationServiceImpl.java
deleted file mode 100644 (file)
index 192836e..0000000
+++ /dev/null
@@ -1,62 +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.sal.restconf.broker.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.opendaylight.controller.sal.binding.api.NotificationListener;
-import org.opendaylight.controller.sal.binding.api.NotificationService;
-import org.opendaylight.controller.sal.restconf.broker.listeners.RemoteNotificationListener;
-import org.opendaylight.controller.sal.restconf.broker.tools.RemoteStreamTools;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.QName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.SalRemoteService;
-import org.opendaylight.yangtools.concepts.AbstractListenerRegistration;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.restconf.client.api.RestconfClientContext;
-import org.opendaylight.yangtools.restconf.client.api.event.EventStreamInfo;
-import org.opendaylight.yangtools.yang.binding.Notification;
-
-public class NotificationServiceImpl implements NotificationService {
-    private final SalRemoteService salRemoteService;
-    private final RestconfClientContext restconfClientContext;
-
-    public NotificationServiceImpl(RestconfClientContext restconfClienetContext){
-        this.restconfClientContext = restconfClienetContext;
-        this.salRemoteService = this.restconfClientContext.getRpcServiceContext(SalRemoteService.class).getRpcService();
-    }
-
-    @Override
-    public <T extends Notification> ListenerRegistration<NotificationListener<T>> registerNotificationListener(Class<T> notificationType, NotificationListener<T> listener) {
-        //TODO implementation using sal-remote
-        List<QName> notifications = new ArrayList<QName>();
-        notifications.add(new QName(notificationType.toString()));
-        String notificationStreamName = RemoteStreamTools.createNotificationStream(salRemoteService, notifications);
-        final Map<String,EventStreamInfo> desiredEventStream = RemoteStreamTools.createEventStream(restconfClientContext, notificationStreamName);
-        RemoteNotificationListener<T> remoteNotificationListener = new RemoteNotificationListener<T>(listener);
-
-        final ListenerRegistration<?> listenerRegistration = restconfClientContext.getEventStreamContext(desiredEventStream.get(desiredEventStream.get(notificationStreamName)))
-                .registerNotificationListener(remoteNotificationListener);
-
-        return new AbstractListenerRegistration<NotificationListener<T>>(listener) {
-            @Override
-            protected void removeRegistration() {
-                listenerRegistration.close();
-            }
-        };
-    }
-
-    @Override
-    public ListenerRegistration<org.opendaylight.yangtools.yang.binding.NotificationListener> registerNotificationListener(org.opendaylight.yangtools.yang.binding.NotificationListener listener) {
-        //TODO implementation using sal-remote
-        String notificationStreamName = RemoteStreamTools.createNotificationStream(salRemoteService, null);
-        final Map<String,EventStreamInfo> desiredEventStream = RemoteStreamTools.createEventStream(restconfClientContext, notificationStreamName);
-        return restconfClientContext.getEventStreamContext(desiredEventStream.get(desiredEventStream.get(notificationStreamName))).registerNotificationListener(listener);
-    }
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/RemoteServicesFactory.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/RemoteServicesFactory.java
deleted file mode 100644 (file)
index 65ecd8b..0000000
+++ /dev/null
@@ -1,35 +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.sal.restconf.broker.impl;
-
-import org.opendaylight.controller.sal.binding.api.NotificationService;
-import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry;
-import org.opendaylight.controller.sal.binding.api.data.DataBrokerService;
-import org.opendaylight.yangtools.restconf.client.api.RestconfClientContext;
-
-public class RemoteServicesFactory {
-
-    private final RestconfClientContext restconfClientContext;
-
-    public RemoteServicesFactory(RestconfClientContext restconfClientContext){
-        this.restconfClientContext = restconfClientContext;
-    }
-
-    public DataBrokerService getDataBrokerService(){
-        return new DataBrokerServiceImpl(this.restconfClientContext);
-    }
-
-    public NotificationService getNotificationService(){
-        return  new NotificationServiceImpl(this.restconfClientContext);
-    }
-
-    public RpcConsumerRegistry getRpcConsumerRegistry(){
-        return new RpcConsumerRegistryImpl(this.restconfClientContext);
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/RpcConsumerRegistryImpl.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/RpcConsumerRegistryImpl.java
deleted file mode 100644 (file)
index 82342ac..0000000
+++ /dev/null
@@ -1,25 +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.sal.restconf.broker.impl;
-
-import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry;
-import org.opendaylight.yangtools.restconf.client.api.RestconfClientContext;
-import org.opendaylight.yangtools.yang.binding.RpcService;
-
-public class RpcConsumerRegistryImpl implements RpcConsumerRegistry {
-
-    private RestconfClientContext restconfClientContext;
-
-    public RpcConsumerRegistryImpl(RestconfClientContext restconfClientContext){
-        this.restconfClientContext = restconfClientContext;
-    }
-    @Override
-    public <T extends RpcService> T getRpcService(Class<T> module) {
-        return restconfClientContext.getRpcServiceContext(module).getRpcService();
-    }
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/RemoteDataChangeNotificationListener.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/RemoteDataChangeNotificationListener.java
deleted file mode 100644 (file)
index df72ac8..0000000
+++ /dev/null
@@ -1,27 +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.sal.restconf.broker.listeners;
-
-import org.opendaylight.controller.sal.binding.api.data.DataChangeListener;
-import org.opendaylight.controller.sal.restconf.broker.event.RemoteDataChangeEvent;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.DataChangedNotification;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.SalRemoteListener;
-
-public class RemoteDataChangeNotificationListener implements SalRemoteListener {
-
-
-    private final DataChangeListener dataChangeListener;
-
-    public RemoteDataChangeNotificationListener(DataChangeListener dataChangeListener){
-        this.dataChangeListener = dataChangeListener;
-    }
-    @Override
-    public void onDataChangedNotification(DataChangedNotification notification) {
-        this.dataChangeListener.onDataChanged(new RemoteDataChangeEvent(notification));
-    }
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/RemoteNotificationListener.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/RemoteNotificationListener.java
deleted file mode 100644 (file)
index 82fa2ae..0000000
+++ /dev/null
@@ -1,24 +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.sal.restconf.broker.listeners;
-
-import org.opendaylight.controller.sal.binding.api.NotificationListener;
-import org.opendaylight.yangtools.yang.binding.Notification;
-
-public class RemoteNotificationListener<T extends Notification> implements org.opendaylight.yangtools.yang.binding.NotificationListener {
-
-    NotificationListener<T> listener;
-
-    public RemoteNotificationListener(NotificationListener<T> listener){
-        this.listener = listener;
-    }
-    public NotificationListener<T> getListener() {
-        return this.listener;
-    }
-
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/SalNotificationListener.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/SalNotificationListener.java
deleted file mode 100644 (file)
index 3c4bbba..0000000
+++ /dev/null
@@ -1,24 +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.sal.restconf.broker.listeners;
-
-import org.opendaylight.controller.sal.binding.api.NotificationListener;
-import org.opendaylight.yangtools.yang.binding.Notification;
-
-
-public class SalNotificationListener<T extends Notification> implements NotificationListener<T> {
-    private NotificationListener<T> notificationListener;
-
-    public SalNotificationListener( NotificationListener<T> notificationListener){
-        this.notificationListener = notificationListener;
-    }
-    @Override
-    public void onNotification(Notification notification) {
-        this.notificationListener.onNotification((T)notification);
-    }
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/tools/RemoteStreamTools.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/tools/RemoteStreamTools.java
deleted file mode 100644 (file)
index 726f7f0..0000000
+++ /dev/null
@@ -1,71 +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.sal.restconf.broker.tools;
-
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.CreateNotificationStreamInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.CreateNotificationStreamOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.QName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.SalRemoteService;
-import org.opendaylight.yangtools.restconf.client.api.RestconfClientContext;
-import org.opendaylight.yangtools.restconf.client.api.event.EventStreamInfo;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RemoteStreamTools {
-    private static final Logger logger = LoggerFactory.getLogger(RemoteStreamTools.class.toString());
-
-    public static String createNotificationStream(SalRemoteService salRemoteService,List<QName> notifications){
-        CreateNotificationStreamInputBuilder notificationStreamInputBuilder = new CreateNotificationStreamInputBuilder();
-
-        if (null == notifications){
-            notificationStreamInputBuilder.setNotifications(notifications);
-        }
-
-        Future<RpcResult<CreateNotificationStreamOutput>> notificationStream = salRemoteService.createNotificationStream(notificationStreamInputBuilder.build());
-
-        String nofiticationStreamIdentifier = "";
-        try {
-            if (notificationStream.get().isSuccessful()){
-                nofiticationStreamIdentifier  = notificationStream.get().getResult().getNotificationStreamIdentifier();
-            }
-        } catch (InterruptedException e) {
-            logger.trace("Interrupted while resolving notification stream identifier due to {}",e);
-        } catch (ExecutionException e) {
-            logger.trace("Execution exception while resolving notification stream identifier due to {}",e);
-        }
-        return nofiticationStreamIdentifier;
-    }
-
-    public static Map<String,EventStreamInfo> createEventStream(RestconfClientContext restconfClientContext, String desiredStreamName){
-        ListenableFuture<Set<EventStreamInfo>> availableEventStreams = restconfClientContext.getAvailableEventStreams();
-        final Map<String,EventStreamInfo> desiredEventStream = new HashMap<String,EventStreamInfo>();
-
-        try {
-            Iterator<EventStreamInfo> it = availableEventStreams.get().iterator();
-            while (it.hasNext()){
-                if (it.next().getIdentifier().equals(desiredStreamName)){
-                    desiredEventStream.put(desiredStreamName,it.next());
-                }
-            }
-        } catch (InterruptedException e) {
-            logger.trace("Resolving of event stream interrupted due to  {}",e);
-        } catch (ExecutionException e) {
-            logger.trace("Resolving of event stream failed due to {}",e);
-        }
-        return desiredEventStream;
-    }
-}
diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/transactions/RemoteDataModificationTransaction.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/transactions/RemoteDataModificationTransaction.java
deleted file mode 100644 (file)
index c2ff3b8..0000000
+++ /dev/null
@@ -1,113 +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.sal.restconf.broker.transactions;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.Future;
-
-import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
-import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-
-public class RemoteDataModificationTransaction implements DataModificationTransaction {
-    //TODO implement this
-
-    @Override
-    public Object getIdentifier() {
-        return null;
-    }
-
-    @Override
-    public TransactionStatus getStatus() {
-        return null;
-    }
-
-    @Override
-    public void putOperationalData(InstanceIdentifier<? extends DataObject> path, DataObject data) {
-
-    }
-
-    @Override
-    public void putConfigurationData(InstanceIdentifier<? extends DataObject> path, DataObject data) {
-
-    }
-
-    @Override
-    public void removeOperationalData(InstanceIdentifier<? extends DataObject> path) {
-
-    }
-
-    @Override
-    public void removeConfigurationData(InstanceIdentifier<? extends DataObject> path) {
-
-    }
-
-    @Override
-    public Future<RpcResult<TransactionStatus>> commit() {
-        return null;
-    }
-
-    @Override
-    public ListenerRegistration<DataTransactionListener> registerListener(DataTransactionListener listener) {
-        return null;
-    }
-
-    @Override
-    public Map<InstanceIdentifier<? extends DataObject>, DataObject> getCreatedOperationalData() {
-        return null;
-    }
-
-    @Override
-    public Map<InstanceIdentifier<? extends DataObject>, DataObject> getCreatedConfigurationData() {
-        return null;
-    }
-
-    @Override
-    public Map<InstanceIdentifier<? extends DataObject>, DataObject> getUpdatedOperationalData() {
-        return null;
-    }
-
-    @Override
-    public Map<InstanceIdentifier<? extends DataObject>, DataObject> getUpdatedConfigurationData() {
-        return null;
-    }
-
-    @Override
-    public Set<InstanceIdentifier<? extends DataObject>> getRemovedConfigurationData() {
-        return null;
-    }
-
-    @Override
-    public Set<InstanceIdentifier<? extends DataObject>> getRemovedOperationalData() {
-        return null;
-    }
-
-    @Override
-    public Map<InstanceIdentifier<? extends DataObject>, DataObject> getOriginalConfigurationData() {
-        return null;
-    }
-
-    @Override
-    public Map<InstanceIdentifier<? extends DataObject>, DataObject> getOriginalOperationalData() {
-        return null;
-    }
-
-    @Override
-    public DataObject readOperationalData(InstanceIdentifier<? extends DataObject> path) {
-        return null;
-    }
-
-    @Override
-    public DataObject readConfigurationData(InstanceIdentifier<? extends DataObject> path) {
-        return null;
-    }
-}