From 62bbc88103ff9b26a2b88ccffeda0dba2294aa66 Mon Sep 17 00:00:00 2001 From: lresende Date: Sat, 2 May 2009 02:04:03 +0000 Subject: TUSCANY-2968 - Renaming new binding.http module to avoid confusion with the oasis draft, as we are not really implementing the whole spec but just following the wireFormat and operationSelector options implemented in binding.jms git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@770880 13f79535-47bb-0310-9956-ffa450edef68 --- .../binding-http-new-jsonrpc-runtime/LICENSE | 205 +++++ .../binding-http-new-jsonrpc-runtime/NOTICE | 6 + .../binding-http-new-jsonrpc-runtime/pom.xml | 138 ++++ .../provider/JSONRPCWireFormatInterceptor.java | 43 ++ .../provider/JSONRPCWireFormatProviderFactory.java | 58 ++ .../JSONRPCWireFormatReferenceProvider.java | 55 ++ .../provider/JSONRPCWireFormatServiceProvider.java | 57 ++ ....tuscany.sca.provider.WireFormatProviderFactory | 19 + .../src/test/java/bean/TestBean.java | 51 ++ .../src/test/java/echo/Echo.java | 62 ++ .../src/test/java/echo/EchoBusinessException.java | 29 + .../src/test/java/echo/EchoComponentImpl.java | 98 +++ .../jsonrpc/JSONRPCDataTypeTestCase.java | 206 +++++ .../jsonrpc/JSONRPCExceptionTestCase.java | 94 +++ .../wireformat/jsonrpc/JSONRPCServiceTestCase.java | 77 ++ .../src/test/resources/JSONRPCBinding.composite | 37 + .../modules/binding-http-new-jsonrpc/LICENSE | 205 +++++ .../modules/binding-http-new-jsonrpc/NOTICE | 6 + .../modules/binding-http-new-jsonrpc/pom.xml | 87 +++ .../jsonrpc/JSONRPCOperationSelector.java | 34 + .../jsonrpc/JSONRPCOperationSelectorFactory.java | 33 + .../impl/JSONRPCOperationSelectorFactoryImpl.java | 35 + .../jsonrpc/impl/JSONRPCOperationSelectorImpl.java | 44 ++ .../http/wireformat/jsonrpc/JSONRPCWireFormat.java | 35 + .../jsonrpc/JSONRPCWireFormatFactory.java | 33 + .../jsonrpc/impl/JSONRPCWireFormatFactoryImpl.java | 36 + .../jsonrpc/impl/JSONRPCWireFormatImpl.java | 44 ++ ...elector.jsonrpc.JSONRPCOperationSelectorFactory | 19 + ...ttp.wireformat.jsonrpc.JSONRPCWireFormatFactory | 19 + ...ca.contribution.processor.StAXArtifactProcessor | 20 + .../JSONRPCOperationSelectorProcessorTestCase.java | 104 +++ .../impl/JSONRPCWireFormatProcessorTestCase.java | 108 +++ .../modules/binding-http-new-runtime/LICENSE | 205 +++++ .../modules/binding-http-new-runtime/NOTICE | 6 + .../modules/binding-http-new-runtime/pom.xml | 120 +++ .../http/provider/HTTPBindingListenerServlet.java | 516 +++++++++++++ .../http/provider/HTTPBindingProviderFactory.java | 64 ++ .../http/provider/HTTPGetListenerServlet.java | 94 +++ .../http/provider/HTTPServiceBindingProvider.java | 189 +++++ .../http/provider/HTTPServiceListenerServlet.java | 136 ++++ .../sca/binding/http/util/HTTPHeadersParser.java | 50 ++ ...che.tuscany.sca.provider.BindingProviderFactory | 19 + .../sca/binding/http/HTTPBindingCacheTestCase.java | 855 +++++++++++++++++++++ .../sca/binding/http/HTTPBindingTestCase.java | 147 ++++ .../sca/binding/http/NotModifiedException.java | 44 ++ .../binding/http/PreconditionFailedException.java | 44 ++ .../sca/binding/http/TestBindingCacheImpl.java | 241 ++++++ .../tuscany/sca/binding/http/TestGetImpl.java | 37 + .../sca/binding/http/TestServiceCacheImpl.java | 61 ++ .../tuscany/sca/binding/http/TestServiceImpl.java | 61 ++ .../src/test/resources/content/test.html | 21 + .../src/test/resources/test.composite | 47 ++ .../src/test/resources/testCache.composite | 33 + .../sca-java-1.x/modules/binding-http-new/LICENSE | 205 +++++ .../sca-java-1.x/modules/binding-http-new/NOTICE | 6 + .../sca-java-1.x/modules/binding-http-new/pom.xml | 87 +++ .../tuscany/sca/binding/http/HTTPBinding.java | 32 + .../sca/binding/http/HTTPBindingFactory.java | 35 + .../tuscany/sca/binding/http/HTTPCacheContext.java | 257 +++++++ .../tuscany/sca/binding/http/HTTPHeader.java | 51 ++ .../binding/http/impl/HTTPBindingFactoryImpl.java | 36 + .../sca/binding/http/impl/HTTPBindingImpl.java | 137 ++++ .../sca/binding/http/xml/HTTPBindingProcessor.java | 166 ++++ ...che.tuscany.sca.binding.http.HTTPBindingFactory | 19 + ...ca.contribution.processor.StAXArtifactProcessor | 19 + .../http/xml/HTTPBindingProcessorTestCase.java | 109 +++ .../binding-http-oasis-jsonrpc-runtime/LICENSE | 205 ----- .../binding-http-oasis-jsonrpc-runtime/NOTICE | 6 - .../binding-http-oasis-jsonrpc-runtime/pom.xml | 138 ---- .../provider/JSONRPCWireFormatInterceptor.java | 43 -- .../provider/JSONRPCWireFormatProviderFactory.java | 58 -- .../JSONRPCWireFormatReferenceProvider.java | 55 -- .../provider/JSONRPCWireFormatServiceProvider.java | 57 -- ....tuscany.sca.provider.WireFormatProviderFactory | 19 - .../src/test/java/bean/TestBean.java | 51 -- .../src/test/java/echo/Echo.java | 62 -- .../src/test/java/echo/EchoBusinessException.java | 29 - .../src/test/java/echo/EchoComponentImpl.java | 98 --- .../jsonrpc/JSONRPCDataTypeTestCase.java | 206 ----- .../jsonrpc/JSONRPCExceptionTestCase.java | 94 --- .../wireformat/jsonrpc/JSONRPCServiceTestCase.java | 77 -- .../src/test/resources/JSONRPCBinding.composite | 37 - .../modules/binding-http-oasis-jsonrpc/LICENSE | 205 ----- .../modules/binding-http-oasis-jsonrpc/NOTICE | 6 - .../modules/binding-http-oasis-jsonrpc/pom.xml | 87 --- .../jsonrpc/JSONRPCOperationSelector.java | 34 - .../jsonrpc/JSONRPCOperationSelectorFactory.java | 33 - .../impl/JSONRPCOperationSelectorFactoryImpl.java | 35 - .../jsonrpc/impl/JSONRPCOperationSelectorImpl.java | 44 -- .../http/wireformat/jsonrpc/JSONRPCWireFormat.java | 35 - .../jsonrpc/JSONRPCWireFormatFactory.java | 33 - .../jsonrpc/impl/JSONRPCWireFormatFactoryImpl.java | 36 - .../jsonrpc/impl/JSONRPCWireFormatImpl.java | 44 -- ...elector.jsonrpc.JSONRPCOperationSelectorFactory | 19 - ...ttp.wireformat.jsonrpc.JSONRPCWireFormatFactory | 19 - ...ca.contribution.processor.StAXArtifactProcessor | 20 - .../JSONRPCOperationSelectorProcessorTestCase.java | 104 --- .../impl/JSONRPCWireFormatProcessorTestCase.java | 108 --- .../modules/binding-http-oasis-runtime/LICENSE | 205 ----- .../modules/binding-http-oasis-runtime/NOTICE | 6 - .../modules/binding-http-oasis-runtime/pom.xml | 120 --- .../http/provider/HTTPBindingListenerServlet.java | 516 ------------- .../http/provider/HTTPBindingProviderFactory.java | 64 -- .../http/provider/HTTPGetListenerServlet.java | 94 --- .../http/provider/HTTPServiceBindingProvider.java | 189 ----- .../http/provider/HTTPServiceListenerServlet.java | 136 ---- .../sca/binding/http/util/HTTPHeadersParser.java | 50 -- ...che.tuscany.sca.provider.BindingProviderFactory | 19 - .../sca/binding/http/HTTPBindingCacheTestCase.java | 855 --------------------- .../sca/binding/http/HTTPBindingTestCase.java | 147 ---- .../sca/binding/http/NotModifiedException.java | 44 -- .../binding/http/PreconditionFailedException.java | 44 -- .../sca/binding/http/TestBindingCacheImpl.java | 241 ------ .../tuscany/sca/binding/http/TestGetImpl.java | 37 - .../sca/binding/http/TestServiceCacheImpl.java | 61 -- .../tuscany/sca/binding/http/TestServiceImpl.java | 61 -- .../src/test/resources/content/test.html | 21 - .../src/test/resources/test.composite | 47 -- .../src/test/resources/testCache.composite | 33 - .../modules/binding-http-oasis/LICENSE | 205 ----- .../sca-java-1.x/modules/binding-http-oasis/NOTICE | 6 - .../modules/binding-http-oasis/pom.xml | 87 --- .../tuscany/sca/binding/http/HTTPBinding.java | 32 - .../sca/binding/http/HTTPBindingFactory.java | 35 - .../tuscany/sca/binding/http/HTTPCacheContext.java | 257 ------- .../tuscany/sca/binding/http/HTTPHeader.java | 51 -- .../binding/http/impl/HTTPBindingFactoryImpl.java | 36 - .../sca/binding/http/impl/HTTPBindingImpl.java | 137 ---- .../sca/binding/http/xml/HTTPBindingProcessor.java | 166 ---- ...che.tuscany.sca.binding.http.HTTPBindingFactory | 19 - ...ca.contribution.processor.StAXArtifactProcessor | 19 - .../http/xml/HTTPBindingProcessorTestCase.java | 109 --- branches/sca-java-1.x/modules/pom.xml | 8 +- 133 files changed, 6250 insertions(+), 6250 deletions(-) create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/LICENSE create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/NOTICE create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/pom.xml create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatProviderFactory.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatReferenceProvider.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.WireFormatProviderFactory create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/bean/TestBean.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/echo/Echo.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/echo/EchoBusinessException.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/echo/EchoComponentImpl.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCDataTypeTestCase.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCExceptionTestCase.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCServiceTestCase.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/LICENSE create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/NOTICE create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/pom.xml create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelector.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelectorFactory.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorFactoryImpl.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorImpl.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormat.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormatFactory.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatFactoryImpl.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatImpl.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelectorFactory create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormatFactory create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorProcessorTestCase.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatProcessorTestCase.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/LICENSE create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/NOTICE create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/pom.xml create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingListenerServlet.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingProviderFactory.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPGetListenerServlet.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceListenerServlet.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/util/HTTPHeadersParser.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingCacheTestCase.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingTestCase.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/NotModifiedException.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/PreconditionFailedException.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestBindingCacheImpl.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestGetImpl.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceCacheImpl.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceImpl.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/resources/content/test.html create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/resources/test.composite create mode 100644 branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/resources/testCache.composite create mode 100644 branches/sca-java-1.x/modules/binding-http-new/LICENSE create mode 100644 branches/sca-java-1.x/modules/binding-http-new/NOTICE create mode 100644 branches/sca-java-1.x/modules/binding-http-new/pom.xml create mode 100644 branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBindingFactory.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPCacheContext.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPHeader.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingFactoryImpl.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java create mode 100644 branches/sca-java-1.x/modules/binding-http-new/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.HTTPBindingFactory create mode 100644 branches/sca-java-1.x/modules/binding-http-new/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor create mode 100644 branches/sca-java-1.x/modules/binding-http-new/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/LICENSE delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/NOTICE delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/pom.xml delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatProviderFactory.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatReferenceProvider.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.WireFormatProviderFactory delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/bean/TestBean.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/echo/Echo.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/echo/EchoBusinessException.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/echo/EchoComponentImpl.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCDataTypeTestCase.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCExceptionTestCase.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCServiceTestCase.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/LICENSE delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/NOTICE delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/pom.xml delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelector.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelectorFactory.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorFactoryImpl.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorImpl.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormat.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormatFactory.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatFactoryImpl.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatImpl.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelectorFactory delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormatFactory delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorProcessorTestCase.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatProcessorTestCase.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/LICENSE delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/NOTICE delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/pom.xml delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingListenerServlet.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingProviderFactory.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPGetListenerServlet.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceListenerServlet.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/util/HTTPHeadersParser.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingCacheTestCase.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingTestCase.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/NotModifiedException.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/PreconditionFailedException.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestBindingCacheImpl.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestGetImpl.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceCacheImpl.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceImpl.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/resources/content/test.html delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/resources/test.composite delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/resources/testCache.composite delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/LICENSE delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/NOTICE delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/pom.xml delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBindingFactory.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPCacheContext.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPHeader.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingFactoryImpl.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.HTTPBindingFactory delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor delete mode 100644 branches/sca-java-1.x/modules/binding-http-oasis/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java (limited to 'branches/sca-java-1.x/modules') diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/LICENSE b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/LICENSE new file mode 100644 index 0000000000..8aa906c321 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/LICENSE @@ -0,0 +1,205 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/NOTICE b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/NOTICE new file mode 100644 index 0000000000..fdfa0e9faa --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/NOTICE @@ -0,0 +1,6 @@ +${pom.name} +Copyright (c) 2005 - 2008 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/pom.xml b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/pom.xml new file mode 100644 index 0000000000..fd862f918d --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/pom.xml @@ -0,0 +1,138 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-modules + 1.6-SNAPSHOT + ../pom.xml + + + tuscany-binding-http-oasis-jsonrpc-runtime + Apache Tuscany SCA HTTP Binding JSON-RPC Runtime + + + + org.apache.tuscany.sca + tuscany-assembly + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-assembly-xml + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-http-oasis-jsonrpc + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-core-spi + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-http + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-jetty + 1.6-SNAPSHOT + test + + + + org.apache.tuscany.sca + tuscany-databinding + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-databinding-json + 1.6-SNAPSHOT + + + + com.metaparadigm + json-rpc + 1.0 + + + + + org.apache.tuscany.sca + tuscany-host-embedded + 1.6-SNAPSHOT + test + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 1.6-SNAPSHOT + test + + + + junit + junit + 4.5 + test + + + + httpunit + httpunit + 1.6.1 + test + + + + + + + + + org.apache.felix + maven-bundle-plugin + + + + ${tuscany.version} + org.apache.tuscany.sca.binding.http.wireformat.jsonrpc + ${pom.name} + org.apache.tuscany.sca.binding.http.wireformat.jsonrpc + org.apache.tuscany.sca.assembly.xml;version="1.4", * + + + + + + diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java new file mode 100644 index 0000000000..68152b0321 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.provider; + +import org.apache.tuscany.sca.invocation.Interceptor; +import org.apache.tuscany.sca.invocation.Invoker; +import org.apache.tuscany.sca.invocation.Message; + +public class JSONRPCWireFormatInterceptor implements Interceptor { + + public Invoker getNext() { + // TODO Auto-generated method stub + return null; + } + + public void setNext(Invoker next) { + // TODO Auto-generated method stub + + } + + public Message invoke(Message msg) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatProviderFactory.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatProviderFactory.java new file mode 100644 index 0000000000..71ba4c913b --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatProviderFactory.java @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.provider; + +import org.apache.tuscany.sca.assembly.Binding; +import org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormat; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.provider.WireFormatProvider; +import org.apache.tuscany.sca.provider.WireFormatProviderFactory; +import org.apache.tuscany.sca.runtime.RuntimeComponent; +import org.apache.tuscany.sca.runtime.RuntimeComponentReference; +import org.apache.tuscany.sca.runtime.RuntimeComponentService; + + +/** + * @version $Rev$ $Date$ + */ +public class JSONRPCWireFormatProviderFactory implements WireFormatProviderFactory { + private ExtensionPointRegistry extensionPoints; + + public JSONRPCWireFormatProviderFactory(ExtensionPointRegistry extensionPoints) { + this.extensionPoints = extensionPoints; + } + + public WireFormatProvider createReferenceWireFormatProvider(RuntimeComponent component, + RuntimeComponentReference reference, + Binding binding) { + return new JSONRPCWireFormatReferenceProvider(extensionPoints, component, reference, binding); + } + + public WireFormatProvider createServiceWireFormatProvider(RuntimeComponent component, + RuntimeComponentService service, + Binding binding) { + return new JSONRPCWireFormatServiceProvider(extensionPoints, component, service, binding); + } + + public Class getModelType() { + return JSONRPCWireFormat.class; + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatReferenceProvider.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatReferenceProvider.java new file mode 100644 index 0000000000..5e1151dc95 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatReferenceProvider.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.provider; + +import org.apache.tuscany.sca.assembly.Binding; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.interfacedef.InterfaceContract; +import org.apache.tuscany.sca.invocation.Interceptor; +import org.apache.tuscany.sca.invocation.Phase; +import org.apache.tuscany.sca.provider.WireFormatProvider; +import org.apache.tuscany.sca.runtime.RuntimeComponent; +import org.apache.tuscany.sca.runtime.RuntimeComponentReference; + +/** + * @version $Rev$ $Date$ + */ +public class JSONRPCWireFormatReferenceProvider implements WireFormatProvider { + + public JSONRPCWireFormatReferenceProvider (ExtensionPointRegistry extensionPoints, + RuntimeComponent component, + RuntimeComponentReference reference, + Binding binding) { + + } + + public InterfaceContract configureWireFormatInterfaceContract(InterfaceContract interfaceContract) { + return null; + } + + public Interceptor createInterceptor() { + return null; + } + + public String getPhase() { + return Phase.REFERENCE_BINDING_WIREFORMAT; + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java new file mode 100644 index 0000000000..983e54c1a7 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.provider; + +import org.apache.tuscany.sca.assembly.Binding; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.interfacedef.InterfaceContract; +import org.apache.tuscany.sca.invocation.Interceptor; +import org.apache.tuscany.sca.invocation.Phase; +import org.apache.tuscany.sca.provider.WireFormatProvider; +import org.apache.tuscany.sca.runtime.RuntimeComponent; +import org.apache.tuscany.sca.runtime.RuntimeComponentService; + +/** + * @version $Rev$ $Date$ + */ +public class JSONRPCWireFormatServiceProvider implements WireFormatProvider { + + public JSONRPCWireFormatServiceProvider(ExtensionPointRegistry extensionPoints, + RuntimeComponent component, + RuntimeComponentService service, + Binding binding) { + + } + + public InterfaceContract configureWireFormatInterfaceContract(InterfaceContract interfaceContract) { + // TODO Auto-generated method stub + return null; + } + + public Interceptor createInterceptor() { + // TODO Auto-generated method stub + return null; + } + + public String getPhase() { + return Phase.SERVICE_BINDING_WIREFORMAT; + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.WireFormatProviderFactory b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.WireFormatProviderFactory new file mode 100644 index 0000000000..9b7d686ddd --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.WireFormatProviderFactory @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Implementation class for the wire format provider factory +org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.provider.JSONRPCWireFormatProviderFactory;model=org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormat \ No newline at end of file diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/bean/TestBean.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/bean/TestBean.java new file mode 100644 index 0000000000..4b159fb563 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/bean/TestBean.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package bean; + +public class TestBean { + private String testString; + private String[] testStringArray; + private int testInt; + + + public String getTestString() { + return testString; + } + + public void setTestString(String testString) { + this.testString = testString; + } + + public String[] getTestStringArray() { + return testStringArray; + } + + public void setStringArray(String[] stringArray) { + this.testStringArray = stringArray; + } + + public int getTestInt() { + return testInt; + } + + public void setTestInt(int testInt) { + this.testInt = testInt; + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/echo/Echo.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/echo/Echo.java new file mode 100644 index 0000000000..ba87f22cf6 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/echo/Echo.java @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package echo; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.osoa.sca.annotations.Remotable; + +import bean.TestBean; + +/** + * Interface of our sample JSONRPC service. + * + * @version $Rev$ $Date$ + */ +@Remotable +public interface Echo { + + String echo(String msg); + + void echoRuntimeException() throws RuntimeException; + + void echoBusinessException() throws EchoBusinessException; + + int echoInt(int param); + + boolean echoBoolean(boolean param); + + Map echoMap(HashMap map); + + TestBean echoBean(TestBean testBean); + + List echoList(ArrayList list); + + String [] echoArrayString(String[] stringArray); + + int [] echoArrayInt(int[] intArray); + + Set echoSet(HashSet set); + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/echo/EchoBusinessException.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/echo/EchoBusinessException.java new file mode 100644 index 0000000000..bf8c7d2c8a --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/echo/EchoBusinessException.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package echo; + +public class EchoBusinessException extends Exception { + private static final long serialVersionUID = 7234119326657905710L; + + public EchoBusinessException(String message) + { + super(message); + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/echo/EchoComponentImpl.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/echo/EchoComponentImpl.java new file mode 100644 index 0000000000..3e7b848221 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/echo/EchoComponentImpl.java @@ -0,0 +1,98 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package echo; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import bean.TestBean; + +/** + * A simple client component that uses a reference with an JSONRPC binding. + * + * @version $Rev$ $Date$ + */ +public class EchoComponentImpl implements Echo { + + public String echo(String msg) { + System.out.println("Echo: "+ msg); + return "echo: " + msg; + } + + public void echoBusinessException() throws EchoBusinessException { + throw new EchoBusinessException("Business Exception"); + + } + + public void echoRuntimeException() throws RuntimeException { + throw new RuntimeException("Runtime Exception"); + } + + public int echoInt(int param) { + int value = param; + return value; + } + + public boolean echoBoolean(boolean param) { + boolean value = param; + return value; + } + + public Map echoMap(HashMap param) { + Map map = new HashMap(); + map = param; + return map; + } + + public TestBean echoBean(TestBean testBean1) { + TestBean testBean = new TestBean(); + testBean.setTestString(testBean1.getTestString()); + testBean.setTestInt(testBean1.getTestInt()); + return testBean; + } + + public List echoList(ArrayList param){ + List list = new ArrayList(); + for(Iterator itr = param.iterator();itr.hasNext();) + { + list.add(itr.next()); + } + return list; + } + + public String[] echoArrayString(String[] stringArray) { + return stringArray; + } + + public int[] echoArrayInt(int[] intArray) { + return intArray; + } + + public Set echoSet(HashSet param){ + Set set = new HashSet(); + set = param; + return set; + + } +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCDataTypeTestCase.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCDataTypeTestCase.java new file mode 100644 index 0000000000..6b59aae03e --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCDataTypeTestCase.java @@ -0,0 +1,206 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc; + +import java.io.ByteArrayInputStream; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.host.embedded.SCADomain; +import org.json.JSONObject; +import org.junit.After; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +import com.meterware.httpunit.PostMethodWebRequest; +import com.meterware.httpunit.WebConversation; +import com.meterware.httpunit.WebRequest; +import com.meterware.httpunit.WebResponse; + +/** + * @version $Rev$ $Date$ + */ +public class JSONRPCDataTypeTestCase { + + private static final String SERVICE_PATH = "/EchoService"; + private static final String SERVICE_URL = "http://localhost:8085/SCADomain" + SERVICE_PATH; + private SCADomain domain; + + //@Before + public void setUp() throws Exception { + domain = SCADomain.newInstance("JSONRPCBinding.composite"); + } + + //@After + public void tearDown() throws Exception { + domain.close(); + } + + //@Test + @Ignore("Work in progress") + public void testInt() throws Exception { + JSONObject jsonRequest = new JSONObject( + "{ \"method\": \"echoInt\", \"params\": [12345], \"id\": 4}"); + + WebConversation wc = new WebConversation(); + WebRequest request = new PostMethodWebRequest(SERVICE_URL, + new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + + JSONObject jsonResp = new JSONObject(response.getText()); + + Assert.assertEquals(12345, jsonResp.getInt("result")); + } + + //@Test + @Ignore("Work in progress") + public void testBoolean() throws Exception { + JSONObject jsonRequest = new JSONObject( + "{ \"method\": \"echoBoolean\", \"params\": [true], \"id\": 5}"); + + WebConversation wc = new WebConversation(); + WebRequest request = new PostMethodWebRequest(SERVICE_URL, + new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + + JSONObject jsonResp = new JSONObject(response.getText()); + + Assert.assertEquals(true, jsonResp.getBoolean("result")); + } + + //@Test + @Ignore("Work in progress") + public void testMap() throws Exception { + JSONObject jsonRequest = new JSONObject( + "{ \"method\": \"echoMap\", \"params\": [ {\"javaClass\": \"java.util.HashMap\", \"map\": { \"Binding\": \"JSON-RPC\"}}], \"id\": 6}"); + + WebConversation wc = new WebConversation(); + WebRequest request = new PostMethodWebRequest(SERVICE_URL, + new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + + JSONObject jsonResp = new JSONObject(response.getText()); + + Assert.assertEquals("JSON-RPC", jsonResp.getJSONObject("result").getJSONObject("map").getString("Binding")); + } + + //@Test + @Ignore("Work in progress") + public void testBean() throws Exception { + JSONObject jsonRequest = new JSONObject( + "{ \"method\": \"echoBean\", \"params\": [ {\"javaClass\": \"bean.TestBean\", \"testString\": \"JSON-RPC\", \"testInt\":1234}], \"id\": 7}"); + + WebConversation wc = new WebConversation(); + WebRequest request = new PostMethodWebRequest(SERVICE_URL, + new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + + JSONObject jsonResp = new JSONObject(response.getText()); + + Assert.assertEquals("JSON-RPC", jsonResp.getJSONObject("result").getString("testString")); + } + + //@Test + @Ignore("Work in progress") + public void testList() throws Exception { + JSONObject jsonRequest = new JSONObject( + "{ \"method\": \"echoList\", \"params\": [ {\"javaClass\": \"java.util.ArrayList\", \"list\": [0,1,2,3,4]}], \"id\": 8}"); + + WebConversation wc = new WebConversation(); + WebRequest request = new PostMethodWebRequest(SERVICE_URL, + new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + + JSONObject jsonResp = new JSONObject(response.getText()); + + Assert.assertEquals(0, jsonResp.getJSONObject("result").getJSONArray("list").get(0)); + } + + //@Test + @Ignore("Work in progress") + public void testArrayString() throws Exception { + JSONObject jsonRequest = new JSONObject( + "{\"params\":[[\"1\",\"2\"]],\"method\":\"echoArrayString\",\"id\":9}"); + + WebConversation wc = new WebConversation(); + WebRequest request = new PostMethodWebRequest(SERVICE_URL, + new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + + JSONObject jsonResp = new JSONObject(response.getText()); + + Assert.assertEquals(1, jsonResp.getJSONArray("result").getInt(0)); + } + + + //@Test + @Ignore("Work in progress") + public void testArrayInt() throws Exception { + JSONObject jsonRequest = new JSONObject( + "{\"params\":[[1,2]],\"method\":\"echoArrayInt\",\"id\":10}"); + + WebConversation wc = new WebConversation(); + WebRequest request = new PostMethodWebRequest(SERVICE_URL, + new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + + JSONObject jsonResp = new JSONObject(response.getText()); + + Assert.assertEquals(1, jsonResp.getJSONArray("result").getInt(0)); + } + + + //@Test + @Ignore("Work in progress") + public void testSet() throws Exception { + JSONObject jsonRequest = new JSONObject( + "{ \"method\": \"echoSet\", \"params\": [ {\"javaClass\": \"java.util.HashSet\", \"set\": {\"1\": \"red\", \"2\": \"blue\"}}],\"id\": 11}"); + + WebConversation wc = new WebConversation(); + WebRequest request = new PostMethodWebRequest(SERVICE_URL, + new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + + JSONObject jsonResp = new JSONObject(response.getText()); + + Assert.assertEquals("red", jsonResp.getJSONObject("result").getJSONObject("set").getString("red")); + } + + @Test + public void testDummy() throws Exception { + + } +} \ No newline at end of file diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCExceptionTestCase.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCExceptionTestCase.java new file mode 100644 index 0000000000..b652f742b0 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCExceptionTestCase.java @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc; + +import java.io.ByteArrayInputStream; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.host.embedded.SCADomain; +import org.json.JSONObject; +import org.junit.After; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +import com.meterware.httpunit.PostMethodWebRequest; +import com.meterware.httpunit.WebConversation; +import com.meterware.httpunit.WebRequest; +import com.meterware.httpunit.WebResponse; + +/** + * @version $Rev$ $Date$ + */ +public class JSONRPCExceptionTestCase{ + + private static final String SERVICE_PATH = "/EchoService"; + + private static final String SERVICE_URL = "http://localhost:8085/SCADomain" + SERVICE_PATH; + + private SCADomain domain; + + //@Before + public void setUp() throws Exception { + domain = SCADomain.newInstance("JSONRPCBinding.composite"); + } + + //@After + public void tearDown() throws Exception { + domain.close(); + } + + //@Test + @Ignore("Work in progress") + public void testRuntimeException() throws Exception{ + JSONObject jsonRequest = new JSONObject("{ \"method\": \"echoRuntimeException\", \"params\": [], \"id\": 2}"); + + WebConversation wc = new WebConversation(); + WebRequest request = new PostMethodWebRequest( SERVICE_URL, new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")),"application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + + JSONObject jsonErr = new JSONObject(response.getText()).getJSONObject("error"); + + Assert.assertEquals("Runtime Exception", jsonErr.getString("msg")); + } + + //@Test + @Ignore("Work in progress") + public void testBusinessException() throws Exception{ + JSONObject jsonRequest = new JSONObject("{ \"method\": \"echoBusinessException\", \"params\": [], \"id\": 3}"); + + WebConversation wc = new WebConversation(); + WebRequest request = new PostMethodWebRequest( SERVICE_URL, new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")),"application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + + JSONObject jsonErr = new JSONObject(response.getText()).getJSONObject("error"); + + Assert.assertEquals("Business Exception", jsonErr.getString("msg")); + } + + @Test + public void testDummy() throws Exception { + + } +} \ No newline at end of file diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCServiceTestCase.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCServiceTestCase.java new file mode 100644 index 0000000000..b9608115be --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCServiceTestCase.java @@ -0,0 +1,77 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc; + +import java.io.ByteArrayInputStream; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.host.embedded.SCADomain; +import org.json.JSONObject; +import org.junit.After; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +import com.meterware.httpunit.PostMethodWebRequest; +import com.meterware.httpunit.WebConversation; +import com.meterware.httpunit.WebRequest; +import com.meterware.httpunit.WebResponse; + +/** + * @version $Rev$ $Date$ + */ +public class JSONRPCServiceTestCase { + + private static final String SERVICE_PATH = "/EchoService"; + + private static final String SERVICE_URL = "http://localhost:8085/SCADomain" + SERVICE_PATH; + + private SCADomain domain; + + //@Before + public void setUp() throws Exception { + domain = SCADomain.newInstance("JSONRPCBinding.composite"); + } + + //@After + public void tearDown() throws Exception { + domain.close(); + } + + //@Test + @Ignore("Work in progress") + public void testJSONRPCBinding() throws Exception { + JSONObject jsonRequest = new JSONObject("{ \"method\": \"echo\", \"params\": [\"Hello JSON-RPC\"], \"id\": 1}"); + + WebConversation wc = new WebConversation(); + WebRequest request = new PostMethodWebRequest( SERVICE_URL, new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")),"application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + + JSONObject jsonResp = new JSONObject(response.getText()); + Assert.assertEquals("echo: Hello JSON-RPC", jsonResp.getString("result")); + } + + @Test + public void testDummy() throws Exception { + + } +} \ No newline at end of file diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite new file mode 100644 index 0000000000..692918fa69 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/LICENSE b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/LICENSE new file mode 100644 index 0000000000..8aa906c321 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/LICENSE @@ -0,0 +1,205 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/NOTICE b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/NOTICE new file mode 100644 index 0000000000..fdfa0e9faa --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/NOTICE @@ -0,0 +1,6 @@ +${pom.name} +Copyright (c) 2005 - 2008 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/pom.xml b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/pom.xml new file mode 100644 index 0000000000..8841f56a86 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/pom.xml @@ -0,0 +1,87 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-modules + 1.6-SNAPSHOT + ../pom.xml + + + tuscany-binding-http-oasis-jsonrpc + Apache Tuscany SCA HTTP Binding JSON-RPC Model + + + + org.apache.tuscany.sca + tuscany-assembly + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-assembly-xml + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-http-oasis + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 1.6-SNAPSHOT + test + + + + junit + junit + 4.5 + test + + + + + + + + + org.apache.felix + maven-bundle-plugin + + + + ${tuscany.version} + org.apache.tuscany.sca.binding.http.wireformat.jsonrpc + ${pom.name} + org.apache.tuscany.sca.binding.http.wireformat.jsonrpc + org.apache.tuscany.sca.assembly.xml;version="1.4", * + + + + + + + diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelector.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelector.java new file mode 100644 index 0000000000..3a203312b2 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelector.java @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.operationselector.jsonrpc; + +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.assembly.OperationSelector; +import org.apache.tuscany.sca.assembly.xml.Constants; + +/** + * @version $Rev$ $Date$ + */ +public interface JSONRPCOperationSelector extends OperationSelector { + public static final QName OPERATION_SELECTOR_HTTP_JSONRPC_QNAME = new QName(Constants.SCA10_NS, "wireFormat.jsonrpc"); + + QName getSchemaName(); +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelectorFactory.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelectorFactory.java new file mode 100644 index 0000000000..89e9924c5f --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelectorFactory.java @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.operationselector.jsonrpc; + + +/** + * @version $Rev$ $Date$ + */ +public interface JSONRPCOperationSelectorFactory { + + /** + * Create a new JSON RPC Operation Selector + * @return + */ + JSONRPCOperationSelector createJSONRPCOperationSelector(); +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorFactoryImpl.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorFactoryImpl.java new file mode 100644 index 0000000000..807de0302f --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorFactoryImpl.java @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.impl; + +import org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelector; +import org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelectorFactory; + +/** +* +* @version $Rev$ $Date$ +*/ +public class JSONRPCOperationSelectorFactoryImpl implements JSONRPCOperationSelectorFactory { + + public JSONRPCOperationSelector createJSONRPCOperationSelector() { + return new JSONRPCOperationSelectorImpl(); + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorImpl.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorImpl.java new file mode 100644 index 0000000000..475d4dc0a1 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorImpl.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.impl; + +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelector; + +/** +* +* @version $Rev$ $Date$ +*/ +public class JSONRPCOperationSelectorImpl implements JSONRPCOperationSelector { + + public QName getSchemaName() { + return JSONRPCOperationSelector.OPERATION_SELECTOR_HTTP_JSONRPC_QNAME; + } + + public boolean isUnresolved() { + return false; + } + + public void setUnresolved(boolean unresolved) { + + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormat.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormat.java new file mode 100644 index 0000000000..749119b215 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormat.java @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc; + +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.assembly.WireFormat; +import org.apache.tuscany.sca.assembly.xml.Constants; + +/** +* +* @version $Rev$ $Date$ +*/ +public interface JSONRPCWireFormat extends WireFormat { + public static final QName WIRE_FORMAT_HTTP_JSONRPC_QNAME = new QName(Constants.SCA10_NS, "wireFormat.jsonrpc"); + + QName getSchemaName(); +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormatFactory.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormatFactory.java new file mode 100644 index 0000000000..2ae24142a4 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormatFactory.java @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc; + +/** + * + * @version $Rev$ $Date$ + */ +public interface JSONRPCWireFormatFactory { + + /** + * Create a new JSONRPC Wire Format + * @return + */ + JSONRPCWireFormat createJSONRPCWireFormat(); +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatFactoryImpl.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatFactoryImpl.java new file mode 100644 index 0000000000..21705736b0 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatFactoryImpl.java @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.impl; + +import org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormat; +import org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormatFactory; + + +/** +* +* @version $Rev$ $Date$ +*/ +public class JSONRPCWireFormatFactoryImpl implements JSONRPCWireFormatFactory { + + public JSONRPCWireFormat createJSONRPCWireFormat() { + return new JSONRPCWireFormatImpl(); + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatImpl.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatImpl.java new file mode 100644 index 0000000000..2fdbfc3e52 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatImpl.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.impl; + +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormat; + +/** +* +* @version $Rev$ $Date$ +*/ +public class JSONRPCWireFormatImpl implements JSONRPCWireFormat { + + public QName getSchemaName() { + return WIRE_FORMAT_HTTP_JSONRPC_QNAME; + } + + public boolean isUnresolved() { + return false; + } + + public void setUnresolved(boolean unresolved) { + + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelectorFactory b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelectorFactory new file mode 100644 index 0000000000..76203fbc11 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelectorFactory @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Implementation class for model factory +org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.impl.JSONRPCOperationSelectorFactoryImpl diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormatFactory b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormatFactory new file mode 100644 index 0000000000..3f72dd5a67 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormatFactory @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Implementation class for model factory +org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.impl.JSONRPCWireFormatFactoryImpl diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor new file mode 100644 index 0000000000..17a340c06c --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor @@ -0,0 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Implementation class for the artifact processor extension +org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.0#wireFormat.jsonrpc,model=org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormat,factory=org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormatFactory +org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.0#operationSelector.jsonrpc,model=org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelector,factory=org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelectorFactory \ No newline at end of file diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorProcessorTestCase.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorProcessorTestCase.java new file mode 100644 index 0000000000..f86f580cf6 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorProcessorTestCase.java @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.impl; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.StringReader; + +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLStreamReader; + +import org.apache.tuscany.sca.assembly.Composite; +import org.apache.tuscany.sca.assembly.OperationSelector; +import org.apache.tuscany.sca.binding.http.HTTPBinding; +import org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelector; +import org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint; +import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor; +import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; +import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; +import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; +import org.apache.tuscany.sca.core.UtilityExtensionPoint; +import org.apache.tuscany.sca.monitor.Monitor; +import org.apache.tuscany.sca.monitor.MonitorFactory; +import org.apache.tuscany.sca.monitor.impl.DefaultMonitorFactoryImpl; +import org.junit.BeforeClass; +import org.junit.Test; + + +/** +* JSON RPC operation selector processor tests +* +* @version $Rev$ $Date$ +*/ +public class JSONRPCOperationSelectorProcessorTestCase { + + public static final String COMPOSITE_WITH_OPERATION_SELECTOR = + "" + + "" + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + ""; + + private static XMLInputFactory inputFactory; + private static StAXArtifactProcessor staxProcessor; + private static Monitor monitor; + + @BeforeClass + public static void setUp() throws Exception { + DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry(); + inputFactory = XMLInputFactory.newInstance(); + // Create a monitor + UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class); + MonitorFactory monitorFactory = new DefaultMonitorFactoryImpl(); + if (monitorFactory != null) { + monitor = monitorFactory.createMonitor(); + utilities.addUtility(monitorFactory); + } + StAXArtifactProcessorExtensionPoint staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint(extensionPoints); + staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, null, monitor); + + } + + /** + * Tests the APIs: + * public OperationSelector getOperationSelector(); + * + * @throws Exception + */ + @Test + public void testWireFormat() throws Exception { + XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(COMPOSITE_WITH_OPERATION_SELECTOR)); + + Composite composite = (Composite)staxProcessor.read(reader); + HTTPBinding binding = (HTTPBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); + assertNotNull(binding); + + OperationSelector operationSelector = binding.getOperationSelector(); + assertEquals(JSONRPCOperationSelector.class, operationSelector.getClass().getInterfaces()[0]); + } +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatProcessorTestCase.java b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatProcessorTestCase.java new file mode 100644 index 0000000000..8d08f2a450 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatProcessorTestCase.java @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.impl; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.StringReader; + +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLStreamReader; + +import org.apache.tuscany.sca.assembly.Composite; +import org.apache.tuscany.sca.assembly.WireFormat; +import org.apache.tuscany.sca.binding.http.HTTPBinding; +import org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormat; +import org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint; +import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor; +import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; +import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; +import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; +import org.apache.tuscany.sca.core.UtilityExtensionPoint; +import org.apache.tuscany.sca.monitor.Monitor; +import org.apache.tuscany.sca.monitor.MonitorFactory; +import org.apache.tuscany.sca.monitor.impl.DefaultMonitorFactoryImpl; +import org.junit.BeforeClass; +import org.junit.Test; + + +/** +* JSON RPC wire format processor tests +* +* @version $Rev$ $Date$ +*/ +public class JSONRPCWireFormatProcessorTestCase { + + public static final String COMPOSITE_WITH_WIRE_FORMAT = + "" + + "" + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + ""; + + private static XMLInputFactory inputFactory; + private static StAXArtifactProcessor staxProcessor; + private static Monitor monitor; + + @BeforeClass + public static void setUp() throws Exception { + DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry(); + inputFactory = XMLInputFactory.newInstance(); + // Create a monitor + UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class); + MonitorFactory monitorFactory = new DefaultMonitorFactoryImpl(); + if (monitorFactory != null) { + monitor = monitorFactory.createMonitor(); + utilities.addUtility(monitorFactory); + } + StAXArtifactProcessorExtensionPoint staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint(extensionPoints); + staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, null, monitor); + + } + + /** + * Tests the APIs: + * public WireFormat getRequstWireFormat(); + * public WireFormat getResponseWireFormat(); + * + * @throws Exception + */ + @Test + public void testWireFormat() throws Exception { + XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(COMPOSITE_WITH_WIRE_FORMAT)); + + Composite composite = (Composite)staxProcessor.read(reader); + HTTPBinding binding = (HTTPBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); + assertNotNull(binding); + + WireFormat requestWireFormat = binding.getRequestWireFormat(); + assertEquals(JSONRPCWireFormat.class, requestWireFormat.getClass().getInterfaces()[0]); + + WireFormat responseWireFormat = binding.getResponseWireFormat(); + assertEquals(JSONRPCWireFormat.class, responseWireFormat.getClass().getInterfaces()[0]); + } +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/LICENSE b/branches/sca-java-1.x/modules/binding-http-new-runtime/LICENSE new file mode 100644 index 0000000000..8aa906c321 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/LICENSE @@ -0,0 +1,205 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/NOTICE b/branches/sca-java-1.x/modules/binding-http-new-runtime/NOTICE new file mode 100644 index 0000000000..fdfa0e9faa --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/NOTICE @@ -0,0 +1,6 @@ +${pom.name} +Copyright (c) 2005 - 2008 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/pom.xml b/branches/sca-java-1.x/modules/binding-http-new-runtime/pom.xml new file mode 100644 index 0000000000..f2d66847ea --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/pom.xml @@ -0,0 +1,120 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-modules + 1.6-SNAPSHOT + ../pom.xml + + + tuscany-binding-http-oasis-runtime + Apache Tuscany SCA HTTP OASIS Binding Runtime + + + + org.apache.tuscany.sca + tuscany-binding-http-oasis + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-policy-security-http + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-core-spi + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-http + 1.6-SNAPSHOT + + + + javax.servlet + servlet-api + 2.5 + provided + + + + org.apache.tuscany.sca + tuscany-host-embedded + 1.6-SNAPSHOT + test + + + + org.apache.tuscany.sca + tuscany-host-jetty + 1.6-SNAPSHOT + test + + + + org.apache.tuscany.sca + tuscany-implementation-resource-runtime + 1.6-SNAPSHOT + test + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 1.6-SNAPSHOT + test + + + + junit + junit + 4.5 + test + + + + + + + + + org.apache.felix + maven-bundle-plugin + + + + ${tuscany.version} + org.apache.tuscany.sca.binding.http.runtime + ${pom.name} + org.apache.tuscany.sca.binding.http* + + + + + + + diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingListenerServlet.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingListenerServlet.java new file mode 100644 index 0000000000..12f1143e3a --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingListenerServlet.java @@ -0,0 +1,516 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.provider; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLDecoder; +import java.text.ParseException; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.assembly.Binding; +import org.apache.tuscany.sca.binding.http.HTTPCacheContext; +import org.apache.tuscany.sca.binding.http.util.HTTPHeadersParser; +import org.apache.tuscany.sca.invocation.Invoker; +import org.apache.tuscany.sca.invocation.Message; +import org.apache.tuscany.sca.invocation.MessageFactory; +import org.apache.tuscany.sca.policy.Intent; +import org.apache.tuscany.sca.policy.PolicySet; +import org.apache.tuscany.sca.policy.PolicySetAttachPoint; +import org.apache.tuscany.sca.policy.authentication.basic.BasicAuthenticationPolicy; + +/** + * Servlet responsible for dispatching HTTP requests to the + * target component implementation. + * + * @version $Rev$ $Date$ + */ +public class HTTPBindingListenerServlet extends HttpServlet { + private static final long serialVersionUID = 2865466417329430610L; + + private static final QName AUTEHTICATION_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0","authentication"); + + transient private Binding binding; + + transient private boolean requiresAuthentication = false; + transient private BasicAuthenticationPolicy basicAuthenticationPolicy = null; + + private MessageFactory messageFactory; + private Invoker getInvoker; + private Invoker conditionalGetInvoker; + private Invoker putInvoker; + private Invoker conditionalPutInvoker; + private Invoker postInvoker; + private Invoker conditionalPostInvoker; + private Invoker deleteInvoker; + private Invoker conditionalDeleteInvoker; + + /** + * Constructs a new HTTPServiceListenerServlet. + */ + public HTTPBindingListenerServlet(Binding binding, MessageFactory messageFactory) { + this.binding = binding; + this.messageFactory = messageFactory; + + + // find out which policies are active + if (binding instanceof PolicySetAttachPoint) { + List intents = ((PolicySetAttachPoint)binding).getRequiredIntents(); + for(Intent intent : intents) { + if(intent.getName().equals(AUTEHTICATION_INTENT)) { + requiresAuthentication = true; + } + } + + + List policySets = ((PolicySetAttachPoint)binding).getApplicablePolicySets(); + for (PolicySet ps : policySets) { + for (Object p : ps.getPolicies()) { + if (BasicAuthenticationPolicy.class.isInstance(p)) { + basicAuthenticationPolicy = (BasicAuthenticationPolicy)p; + } else { + // etc. check for other types of policy being present + } + } + } + } + } + + + @Override + protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + if(requiresAuthentication) { + if(! hasAuthorization(request, response)) { + response.setHeader("WWW-Authenticate", "BASIC realm=\"Tuscany\""); + response.sendError(HttpServletResponse.SC_UNAUTHORIZED); + } + } + + super.service(request, response); + } + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + // Get the request path + String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8"); + if (path.length() ==0) { + // Redirect to a URL ending with / to make relative hrefs work + // relative to the served resource. + response.sendRedirect(request.getRequestURL().append('/').toString()); + return; + } + + // Invoke the get operation on the service implementation + Message requestMessage = messageFactory.createMessage(); + + //store http headers to message + requestMessage.getHeaders().addAll(HTTPHeadersParser.getHeaders(request)); + + String id = path.substring(1); + + Message responseMessage = null; + HTTPCacheContext cacheContext = null; + try { + cacheContext = HTTPCacheContext.getCacheContextFromRequest(request); + } catch (ParseException e) { + } + + // Route message based on availability of cache info and cache methods + if (( cacheContext != null ) && (cacheContext.isEnabled()) && (conditionalGetInvoker != null )) { + requestMessage.setBody(new Object[] {id, cacheContext}); + responseMessage = conditionalGetInvoker.invoke(requestMessage); + } else { + requestMessage.setBody(new Object[] {id}); + responseMessage = getInvoker.invoke(requestMessage); + } + if (responseMessage.isFault()) { + Object body = responseMessage.getBody(); + + int index = -1; + if ( -1 < (index = body.getClass().getName().indexOf( "NotModifiedException")) ) { + if ( index > -1 ) + response.sendError( HttpServletResponse.SC_NOT_MODIFIED, body.toString().substring( index )); + else + response.sendError( HttpServletResponse.SC_NOT_MODIFIED ); + return; + } else if ( -1 < (index = body.getClass().getName().indexOf( "PreconditionFailedException")) ) { + if ( index > -1 ) + response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED, body.toString().substring( index )); + else + response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED ); + return; + } + + throw new ServletException((Throwable)responseMessage.getBody()); + } + + // Write the response from the service implementation to the response + // output stream + InputStream is = (InputStream)responseMessage.getBody(); + OutputStream os = response.getOutputStream(); + byte[] buffer = new byte[2048]; + for (;;) { + int n = is.read(buffer); + if (n <= 0) + break; + os.write(buffer, 0, n); + } + os.flush(); + os.close(); + } + + @Override + protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + // Get the request path + String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8"); + if (path.length() ==0) { + // Redirect to a URL ending with / to make relative hrefs work + // relative to the served resource. + response.sendRedirect(request.getRequestURL().append('/').toString()); + return; + } + + // Invoke the get operation on the service implementation + Message requestMessage = messageFactory.createMessage(); + String id = path.substring(1); + + Message responseMessage = null; + HTTPCacheContext cacheContext = null; + try { + cacheContext = HTTPCacheContext.getCacheContextFromRequest(request); + } catch (ParseException e) { + } + + // Route message based on availability of cache info and cache methods + if (( cacheContext != null ) && (cacheContext.isEnabled()) && (conditionalDeleteInvoker != null )) { + requestMessage.setBody(new Object[] {id, cacheContext}); + responseMessage = conditionalDeleteInvoker.invoke(requestMessage); + } else { + requestMessage.setBody(new Object[] {id}); + responseMessage = deleteInvoker.invoke(requestMessage); + } + if (responseMessage.isFault()) { + Object body = responseMessage.getBody(); + + int index = -1; + if ( -1 < (index = body.getClass().getName().indexOf( "NotModifiedException")) ) { + if ( index > -1 ) + response.sendError( HttpServletResponse.SC_NOT_MODIFIED, body.toString().substring( index )); + else + response.sendError( HttpServletResponse.SC_NOT_MODIFIED ); + return; + } else if ( -1 < (index = body.getClass().getName().indexOf( "PreconditionFailedException")) ) { + if ( index > -1 ) + response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED, body.toString().substring( index )); + else + response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED ); + return; + } + + throw new ServletException((Throwable)responseMessage.getBody()); + } + + // Write the response from the service implementation to the response + // output stream + InputStream is = (InputStream)responseMessage.getBody(); + OutputStream os = response.getOutputStream(); + byte[] buffer = new byte[2048]; + for (;;) { + int n = is.read(buffer); + if (n <= 0) + break; + os.write(buffer, 0, n); + } + os.flush(); + os.close(); + } + + @Override + protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + // Get the request path + String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8"); + if (path.length() ==0) { + // Redirect to a URL ending with / to make relative hrefs work + // relative to the served resource. + response.sendRedirect(request.getRequestURL().append('/').toString()); + return; + } + + // Invoke the get operation on the service implementation + Message requestMessage = messageFactory.createMessage(); + String id = path.substring(1); + + Message responseMessage = null; + HTTPCacheContext cacheContext = null; + try { + cacheContext = HTTPCacheContext.getCacheContextFromRequest(request); + } catch (ParseException e) { + } + + // Route message based on availability of cache info and cache methods + if (( cacheContext != null ) && (cacheContext.isEnabled()) && (conditionalPutInvoker != null )) { + requestMessage.setBody(new Object[] {id, cacheContext}); + responseMessage = conditionalPutInvoker.invoke(requestMessage); + } else { + requestMessage.setBody(new Object[] {id}); + responseMessage = putInvoker.invoke(requestMessage); + } + if (responseMessage.isFault()) { + Object body = responseMessage.getBody(); + + int index = -1; + if ( -1 < (index = body.getClass().getName().indexOf( "NotModifiedException")) ) { + if ( index > -1 ) + response.sendError( HttpServletResponse.SC_NOT_MODIFIED, body.toString().substring( index )); + else + response.sendError( HttpServletResponse.SC_NOT_MODIFIED ); + return; + } else if ( -1 < (index = body.getClass().getName().indexOf( "PreconditionFailedException")) ) { + if ( index > -1 ) + response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED, body.toString().substring( index )); + else + response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED ); + return; + } + + throw new ServletException((Throwable)responseMessage.getBody()); + } + + // Write the response from the service implementation to the response + // output stream + InputStream is = (InputStream)responseMessage.getBody(); + OutputStream os = response.getOutputStream(); + byte[] buffer = new byte[2048]; + for (;;) { + int n = is.read(buffer); + if (n <= 0) + break; + os.write(buffer, 0, n); + } + os.flush(); + os.close(); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + // Get the request path + String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8"); + if (path.length() ==0) { + // Redirect to a URL ending with / to make relative hrefs work + // relative to the served resource. + response.sendRedirect(request.getRequestURL().append('/').toString()); + return; + } + + // Invoke the get operation on the service implementation + Message requestMessage = messageFactory.createMessage(); + // String id = path.substring(1); + + Message responseMessage = null; + HTTPCacheContext cacheContext = null; + try { + cacheContext = HTTPCacheContext.getCacheContextFromRequest(request); + } catch (ParseException e) { + } + + // Route message based on availability of cache info and cache methods + if (( cacheContext != null ) && (cacheContext.isEnabled()) && (conditionalPostInvoker != null )) { + requestMessage.setBody(new Object[] {cacheContext}); + responseMessage = conditionalPostInvoker.invoke(requestMessage); + } else { + requestMessage.setBody(new Object[] {}); + responseMessage = postInvoker.invoke(requestMessage); + } + if (responseMessage.isFault()) { + Object body = responseMessage.getBody(); + + int index = -1; + if ( -1 < (index = body.getClass().getName().indexOf( "NotModifiedException")) ) { + if ( index > -1 ) + response.sendError( HttpServletResponse.SC_NOT_MODIFIED, body.toString().substring( index )); + else + response.sendError( HttpServletResponse.SC_NOT_MODIFIED ); + return; + } else if ( -1 < (index = body.getClass().getName().indexOf( "PreconditionFailedException")) ) { + if ( index > -1 ) + response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED, body.toString().substring( index )); + else + response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED ); + return; + } + + throw new ServletException((Throwable)responseMessage.getBody()); + } + + + // Test if the ETag and LastModified are returned as a cache context. + Object body = responseMessage.getBody(); + if ( body.getClass() == HTTPCacheContext.class ) { + // Transfer to header if so. + HTTPCacheContext cc = (HTTPCacheContext)responseMessage.getBody(); + if (( cc != null ) && ( cc.isEnabled() )) { + String eTag = cc.getETag(); + if ( eTag != null ) + response.setHeader( "ETag", cc.getETag() ); + String lastModified = cc.getLastModified(); + if ( lastModified != null) + response.setHeader( "LastModified", cc.getLastModified() ); + } + } + } + + /** + * @return the getInvoker + */ + public Invoker getGetInvoker() { + return getInvoker; + } + + /** + * @param getInvoker the getInvoker to set + */ + public void setGetInvoker(Invoker getInvoker) { + this.getInvoker = getInvoker; + } + + /** + * @return the conditionalGetInvoker + */ + public Invoker getConditionalGetInvoker() { + return conditionalGetInvoker; + } + + /** + * @param conditionalGetInvoker the conditionalGetInvoker to set + */ + public void setConditionalGetInvoker(Invoker conditionalGetInvoker) { + this.conditionalGetInvoker = conditionalGetInvoker; + } + + /** + * @return the putInvoker + */ + public Invoker getPutInvoker() { + return putInvoker; + } + + /** + * @param putInvoker the putInvoker to set + */ + public void setPutInvoker(Invoker putInvoker) { + this.putInvoker = putInvoker; + } + + /** + * @return the conditionalPutInvoker + */ + public Invoker getConditionalPutInvoker() { + return conditionalPutInvoker; + } + + /** + * @param conditionalPutInvoker the conditionalPutInvoker to set + */ + public void setConditionalPutInvoker(Invoker conditionalPutInvoker) { + this.conditionalPutInvoker = conditionalPutInvoker; + } + + /** + * @return the postInvoker + */ + public Invoker getPostInvoker() { + return postInvoker; + } + + /** + * @param postInvoker the postInvoker to set + */ + public void setPostInvoker(Invoker postInvoker) { + this.postInvoker = postInvoker; + } + + /** + * @return the conditionalPostInvoker + */ + public Invoker getConditionalPostInvoker() { + return conditionalPostInvoker; + } + + /** + * @param conditionalPostInvoker the conditionalPostInvoker to set + */ + public void setConditionalPostInvoker(Invoker conditionalPostInvoker) { + this.conditionalPostInvoker = conditionalPostInvoker; + } + + /** + * @return the deleteInvoker + */ + public Invoker getDeleteInvoker() { + return deleteInvoker; + } + + /** + * @param deleteInvoker the deleteInvoker to set + */ + public void setDeleteInvoker(Invoker deleteInvoker) { + this.deleteInvoker = deleteInvoker; + } + + /** + * @return the conditionalDeleteInvoker + */ + public Invoker getConditionalDeleteInvoker() { + return conditionalDeleteInvoker; + } + + /** + * @param conditionalDeleteInvoker the conditionalDeleteInvoker to set + */ + public void setConditionalDeleteInvoker(Invoker conditionalDeleteInvoker) { + this.conditionalDeleteInvoker = conditionalDeleteInvoker; + } + + + /** + * Utility Methods related to Policy + */ + + + private boolean hasAuthorization(HttpServletRequest request, ServletResponse response) { + boolean result = false; + if(request.getHeader("Authorization") != null) { + result = true; + } + + return result; + } + + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingProviderFactory.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingProviderFactory.java new file mode 100644 index 0000000000..fccd10f3cd --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingProviderFactory.java @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.provider; + +import org.apache.tuscany.sca.binding.http.HTTPBinding; +import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.host.http.ServletHost; +import org.apache.tuscany.sca.host.http.ServletHostExtensionPoint; +import org.apache.tuscany.sca.invocation.MessageFactory; +import org.apache.tuscany.sca.provider.BindingProviderFactory; +import org.apache.tuscany.sca.provider.ReferenceBindingProvider; +import org.apache.tuscany.sca.provider.ServiceBindingProvider; +import org.apache.tuscany.sca.runtime.RuntimeComponent; +import org.apache.tuscany.sca.runtime.RuntimeComponentReference; +import org.apache.tuscany.sca.runtime.RuntimeComponentService; + + +/** + * Factory for HTTP binding providers. + * + * @version $Rev$ $Date$ + */ +public class HTTPBindingProviderFactory implements BindingProviderFactory { + + private MessageFactory messageFactory; + private ServletHost servletHost; + + public HTTPBindingProviderFactory(ExtensionPointRegistry extensionPoints) { + ServletHostExtensionPoint servletHosts = extensionPoints.getExtensionPoint(ServletHostExtensionPoint.class); + this.servletHost = servletHosts.getServletHosts().get(0); + ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class); + messageFactory = modelFactories.getFactory(MessageFactory.class); + } + + public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, RuntimeComponentReference reference, HTTPBinding binding) { + return null; + } + + public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, RuntimeComponentService service, HTTPBinding binding) { + return new HTTPServiceBindingProvider(component, service, binding, messageFactory, servletHost); + } + + public Class getModelType() { + return HTTPBinding.class; + } +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPGetListenerServlet.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPGetListenerServlet.java new file mode 100644 index 0000000000..e20d420d49 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPGetListenerServlet.java @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.provider; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLDecoder; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.tuscany.sca.invocation.Invoker; +import org.apache.tuscany.sca.invocation.Message; +import org.apache.tuscany.sca.invocation.MessageFactory; + +/** + * Servlet responsible for dispatching HTTP GET requests to the + * target component implementation. + * + * @version $Rev$ $Date$ + */ +public class HTTPGetListenerServlet extends HttpServlet { + private static final long serialVersionUID = 2865466417329430610L; + + private MessageFactory messageFactory; + private Invoker getInvoker; + + /** + * Constructs a new HTTPServiceListenerServlet. + */ + public HTTPGetListenerServlet(Invoker getInvoker, MessageFactory messageFactory) { + this.getInvoker = getInvoker; + this.messageFactory = messageFactory; + } + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + // Get the request path + String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8"); + if (path.length() ==0) { + + // Redirect to a URL ending with / to make relative hrefs work + // relative to the served resource. + response.sendRedirect(request.getRequestURL().append('/').toString()); + return; + } + + // Invoke the get operation on the service implementation + Message requestMessage = messageFactory.createMessage(); + String id = path.substring(1); + requestMessage.setBody(new Object[] {id}); + Message responseMessage = getInvoker.invoke(requestMessage); + if (responseMessage.isFault()) { + throw new ServletException((Throwable)responseMessage.getBody()); + } + + // Write the response from the service implementation to the response + // output stream + InputStream is = (InputStream)responseMessage.getBody(); + OutputStream os = response.getOutputStream(); + byte[] buffer = new byte[2048]; + for (;;) { + int n = is.read(buffer); + if (n <= 0) + break; + os.write(buffer, 0, n); + } + os.flush(); + os.close(); + + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java new file mode 100644 index 0000000000..6e01ac5f9f --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java @@ -0,0 +1,189 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.provider; + +import java.util.List; + +import javax.servlet.Servlet; +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.binding.http.HTTPBinding; +import org.apache.tuscany.sca.host.http.SecurityContext; +import org.apache.tuscany.sca.host.http.ServletHost; +import org.apache.tuscany.sca.interfacedef.InterfaceContract; +import org.apache.tuscany.sca.interfacedef.Operation; +import org.apache.tuscany.sca.invocation.InvocationChain; +import org.apache.tuscany.sca.invocation.Invoker; +import org.apache.tuscany.sca.invocation.MessageFactory; +import org.apache.tuscany.sca.policy.Intent; +import org.apache.tuscany.sca.policy.PolicySet; +import org.apache.tuscany.sca.policy.PolicySetAttachPoint; +import org.apache.tuscany.sca.policy.authentication.AuthenticationConfigurationPolicy; +import org.apache.tuscany.sca.policy.confidentiality.ConfidentialityPolicy; +import org.apache.tuscany.sca.provider.ServiceBindingProvider; +import org.apache.tuscany.sca.runtime.RuntimeComponent; +import org.apache.tuscany.sca.runtime.RuntimeComponentService; +import org.apache.tuscany.sca.runtime.RuntimeWire; + +/** + * Implementation of an HTTP binding provider. + * + * @version $Rev$ $Date$ + */ +public class HTTPServiceBindingProvider implements ServiceBindingProvider { + private static final QName AUTEHTICATION_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0","authentication"); + private static final QName CONFIDENTIALITY_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0","confidentiality"); + + private RuntimeComponentService service; + private HTTPBinding binding; + private MessageFactory messageFactory; + + private ServletHost servletHost; + private String servletMapping; + private HTTPBindingListenerServlet bindingListenerServlet; + + public HTTPServiceBindingProvider(RuntimeComponent component, + RuntimeComponentService service, + HTTPBinding binding, + MessageFactory messageFactory, + ServletHost servletHost) { + this.service = service; + this.binding = binding; + this.messageFactory = messageFactory; + this.servletHost = servletHost; + } + + public void start() { + // Get the invokers for the supported operations + RuntimeComponentService componentService = (RuntimeComponentService) service; + RuntimeWire wire = componentService.getRuntimeWire(binding); + Servlet servlet = null; + bindingListenerServlet = new HTTPBindingListenerServlet(binding, messageFactory ); + for (InvocationChain invocationChain : wire.getInvocationChains()) { + Operation operation = invocationChain.getTargetOperation(); + String operationName = operation.getName(); + if (operationName.equals("get")) { + Invoker getInvoker = invocationChain.getHeadInvoker(); + bindingListenerServlet.setGetInvoker(getInvoker); + servlet = bindingListenerServlet; + } else if (operationName.equals("conditionalGet")) { + Invoker conditionalGetInvoker = invocationChain.getHeadInvoker(); + bindingListenerServlet.setConditionalGetInvoker(conditionalGetInvoker); + servlet = bindingListenerServlet; + } else if (operationName.equals("delete")) { + Invoker deleteInvoker = invocationChain.getHeadInvoker(); + bindingListenerServlet.setDeleteInvoker(deleteInvoker); + servlet = bindingListenerServlet; + } else if (operationName.equals("conditionalDelete")) { + Invoker conditionalDeleteInvoker = invocationChain.getHeadInvoker(); + bindingListenerServlet.setConditionalDeleteInvoker(conditionalDeleteInvoker); + servlet = bindingListenerServlet; + } else if (operationName.equals("put")) { + Invoker putInvoker = invocationChain.getHeadInvoker(); + bindingListenerServlet.setPutInvoker(putInvoker); + servlet = bindingListenerServlet; + } else if (operationName.equals("conditionalPut")) { + Invoker conditionalPutInvoker = invocationChain.getHeadInvoker(); + bindingListenerServlet.setConditionalPutInvoker(conditionalPutInvoker); + servlet = bindingListenerServlet; + } else if (operationName.equals("post")) { + Invoker postInvoker = invocationChain.getHeadInvoker(); + bindingListenerServlet.setPostInvoker(postInvoker); + servlet = bindingListenerServlet; + } else if (operationName.equals("conditionalPost")) { + Invoker conditionalPostInvoker = invocationChain.getHeadInvoker(); + bindingListenerServlet.setConditionalPostInvoker(conditionalPostInvoker); + servlet = bindingListenerServlet; + } else if (operationName.equals("service")) { + Invoker serviceInvoker = invocationChain.getHeadInvoker(); + servlet = new HTTPServiceListenerServlet(binding, serviceInvoker, messageFactory); + break; + } + } + if (servlet == null) { + throw new IllegalStateException("No get or service method found on the service"); + } + + // Create our HTTP service listener Servlet and register it with the + // Servlet host + servletMapping = binding.getURI(); + if (!servletMapping.endsWith("/")) { + servletMapping += "/"; + } + if (!servletMapping.endsWith("*")) { + servletMapping += "*"; + } + + + SecurityContext securityContext = new SecurityContext(); + boolean isConfidentialityRequired = false; + boolean isAuthenticationRequired = false; + + + // find out which policies are active + if (binding instanceof PolicySetAttachPoint) { + List intents = ((PolicySetAttachPoint)binding).getRequiredIntents(); + for(Intent intent : intents) { + if (intent.getName().equals(AUTEHTICATION_INTENT)) { + isAuthenticationRequired = true; + } else if (intent.getName().equals(CONFIDENTIALITY_INTENT)) { + isConfidentialityRequired = true; + } + } + + List policySets = ((PolicySetAttachPoint)binding).getApplicablePolicySets(); + for (PolicySet ps : policySets) { + for (Object p : ps.getPolicies()) { + if (ConfidentialityPolicy.class.isInstance(p) && isConfidentialityRequired) { + //Handle enabling and configuring SSL + ConfidentialityPolicy confidentialityPolicy = (ConfidentialityPolicy)p; + + securityContext.setSSLEnabled(true); + securityContext.setSSLProperties(confidentialityPolicy.toProperties()); + } else if(AuthenticationConfigurationPolicy.class.isInstance(p) && isAuthenticationRequired) { + // Handle authentication and user configuration + AuthenticationConfigurationPolicy authenticationConfiguration = (AuthenticationConfigurationPolicy)p; + + securityContext.setAuthenticationEnabled(true); + securityContext.getUsers().clear(); + securityContext.getUsers().addAll(authenticationConfiguration.getUsers()); + } + } + } + } + + + servletHost.addServletMapping(servletMapping, servlet, securityContext); + } + + public void stop() { + // Unregister the Servlet from the Servlet host + servletHost.removeServletMapping(servletMapping); + } + + public InterfaceContract getBindingInterfaceContract() { + return null; + } + + public boolean supportsOneWayInvocation() { + return false; + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceListenerServlet.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceListenerServlet.java new file mode 100644 index 0000000000..493255655d --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceListenerServlet.java @@ -0,0 +1,136 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.provider; + +import java.io.IOException; +import java.util.List; + +import javax.servlet.Servlet; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.assembly.Binding; +import org.apache.tuscany.sca.invocation.Invoker; +import org.apache.tuscany.sca.invocation.Message; +import org.apache.tuscany.sca.invocation.MessageFactory; +import org.apache.tuscany.sca.policy.Intent; +import org.apache.tuscany.sca.policy.PolicySet; +import org.apache.tuscany.sca.policy.PolicySetAttachPoint; +import org.apache.tuscany.sca.policy.authentication.basic.BasicAuthenticationPolicy; + +/** + * Servlet responsible for dispatching HTTP service requests to the + * target component implementation. + * + * @version $Rev$ $Date$ + */ +public class HTTPServiceListenerServlet implements Servlet { + private static final QName AUTEHTICATION_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0","authentication"); + + transient private Binding binding; + transient private ServletConfig config; + transient private MessageFactory messageFactory; + transient private Invoker serviceInvoker; + + transient private boolean requiresAuthentication = false; + transient private BasicAuthenticationPolicy basicAuthenticationPolicy = null; + + /** + * Constructs a new HTTPServiceListenerServlet. + */ + public HTTPServiceListenerServlet(Binding binding, Invoker serviceInvoker, MessageFactory messageFactory) { + this.binding = binding; + this.serviceInvoker = serviceInvoker; + this.messageFactory = messageFactory; + + // find out which policies are active + if (binding instanceof PolicySetAttachPoint) { + List intents = ((PolicySetAttachPoint)binding).getRequiredIntents(); + for(Intent intent : intents) { + if(intent.getName().equals(AUTEHTICATION_INTENT)) { + requiresAuthentication = true; + } + } + + + List policySets = ((PolicySetAttachPoint)binding).getApplicablePolicySets(); + for (PolicySet ps : policySets) { + for (Object p : ps.getPolicies()) { + if (BasicAuthenticationPolicy.class.isInstance(p)) { + basicAuthenticationPolicy = (BasicAuthenticationPolicy)p; + } else { + // etc. check for other types of policy being present + } + } + } + } + } + + public ServletConfig getServletConfig() { + return config; + } + + public String getServletInfo() { + return ""; + } + + public void init(ServletConfig config) throws ServletException { + this.config = config; + } + + public void destroy() { + + } + + public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { + + if(requiresAuthentication) { + if(! hasAuthenticationHeader((HttpServletRequest)request, (HttpServletResponse)response)) { + ((HttpServletResponse)response).sendError(HttpServletResponse.SC_UNAUTHORIZED); + } + } + + // Dispatch the service interaction to the service invoker + Message requestMessage = messageFactory.createMessage(); + requestMessage.setBody(new Object[]{request, response}); + Message responseMessage = serviceInvoker.invoke(requestMessage); + if (responseMessage.isFault()) { + // Turn a fault into an exception + //throw new ServletException((Throwable)responseMessage.getBody()); + Throwable e = (Throwable)responseMessage.getBody(); + ((HttpServletResponse)response).sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString()); + } + } + + + private boolean hasAuthenticationHeader(HttpServletRequest request, ServletResponse response) { + boolean result = false; + if(request.getHeader("Authorization") != null) { + result = true; + } + + return result; + } +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/util/HTTPHeadersParser.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/util/HTTPHeadersParser.java new file mode 100644 index 0000000000..1fe4600e31 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/java/org/apache/tuscany/sca/binding/http/util/HTTPHeadersParser.java @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.util; + +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.tuscany.sca.binding.http.HTTPHeader; + +public class HTTPHeadersParser { + + /** + * Parse http request headers to a map + * + * @param request + * @return + */ + public static List getHeaders(HttpServletRequest request) { + List headers = new ArrayList(); + + Enumeration headerNames = request.getHeaderNames(); + while (headerNames.hasMoreElements()) { + String headerName = (String) headerNames.nextElement(); + Object headerValue = request.getHeader(headerName); + HTTPHeader header = new HTTPHeader(headerName, headerValue); + headers.add(header); + } + return headers; + } +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory new file mode 100644 index 0000000000..0fa8d44c08 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Implementation class for the binding extension +org.apache.tuscany.sca.binding.http.provider.HTTPBindingProviderFactory;model=org.apache.tuscany.sca.binding.http.HTTPBinding diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingCacheTestCase.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingCacheTestCase.java new file mode 100644 index 0000000000..bb5f6d5a8b --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingCacheTestCase.java @@ -0,0 +1,855 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.binding.http; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.Socket; +import java.text.MessageFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +import junit.framework.TestCase; + +import org.apache.tuscany.sca.host.embedded.SCADomain; + +/** + * HTTP binding unit tests. + * + * @version $Rev$ $Date$ + */ +public class HTTPBindingCacheTestCase extends TestCase { + // RFC 822 date time + protected static final SimpleDateFormat dateFormat = new SimpleDateFormat( + "EEE, dd MMM yyyy HH:mm:ss Z"); + + // Request with no predicates in header. + private static final String REQUEST1 = "{0} /httpbinding/{1} HTTP/1.0\n" + + "Host: localhost\n" + "Content-Type: text/xml\n" + + "Connection: close\n" + "Content-Length: {2}" + "\n\n{3}"; + + // Request with predicates in header + private static final String REQUEST2 = "{0} /httpbinding/{1} HTTP/1.0\n" + + "Host: localhost\n" + "Content-Type: text/xml\n" + "{2}: {3}\n" // predicate (If-Match, If-None-Match, If-Modified-Since, If-NotModified-Since): value (date or ETag) + + "Connection: close\n" + "Content-Length: {4}" + "\n\n{5}"; + + private static final int HTTP_PORT = 8085; + + private SCADomain scaDomain; + + @Override + protected void setUp() throws Exception { + scaDomain = SCADomain.newInstance("testCache.composite"); + } + + @Override + protected void tearDown() throws Exception { + scaDomain.close(); + } + + /** + * Test invoking a POJO get method implementation using the HTTP binding. + * @throws Exception + */ + public void testGet() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST1, "GET", index, content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + assertTrue(document.indexOf("

item=" + index) != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalGetIfModifiedNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "GET", index, + "If-Modified-Since", dateFormat.format(new Date(0)), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + assertTrue(document.indexOf("

item=" + index) != -1); + // Should return code 304 Not Modified. + // assertTrue(document.indexOf("HTTP/1.1 304") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalGetIfModifiedPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "GET", index, + "If-Modified-Since", dateFormat.format(new Date(0)), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("

item=" + index) != -1); + // Should return code 304 Not Modified. + assertTrue(document.indexOf("HTTP/1.1 304") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalGetIfUnmodifiedNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "GET", index, + "If-Unmodified-Since", dateFormat.format(new Date()), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + assertTrue(document.indexOf("

item=" + index) != -1); + // Should return code 304 Not Modified. + // assertTrue(document.indexOf("HTTP/1.1 304") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalGetIfUnmodifiedPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "GET", index, + "If-Unmodified-Since", dateFormat.format(new Date(0)), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("

item=" + index) != -1); + // Should return code 412 PreconditionFailed. + assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalGetIfMatchNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "GET", index, + "If-Match", "eTagXXX", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("

item=" + index) != -1); + // Should return code 412 precondition failed. + assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalGetIfMatchPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "GET", index, + "If-Match", "eTagXXX", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + assertTrue(document.indexOf("

item=" + index) != -1); + // Should return code 412 PreconditionFailed. + // assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalGetIfNoneMatchNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "GET", index, + "If-None-Match", "eTagXXX", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + assertTrue(document.indexOf("

item=" + index) != -1); + // Should return code 412 precondition failed. + // assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalGetIfNoneMatchPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "GET", index, + "If-None-Match", "eTagXXX", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("

item=" + index) != -1); + // Should return code 412 PreconditionFailed. + assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a POJO get method implementation using the HTTP binding. + * @throws Exception + */ + public void testDelete() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST1, "DELETE", index, + content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + assertTrue(document.indexOf("deleted item=" + index) != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalDeleteIfModifiedNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "DELETE", index, + "If-Modified-Since", dateFormat.format(new Date(0)), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + assertTrue(document.indexOf("deleted item=" + index) != -1); + // Should return code 304 Not Modified. + // assertTrue(document.indexOf("HTTP/1.1 304") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalDeleteIfModifiedPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "DELETE", index, + "If-Modified-Since", dateFormat.format(new Date(0)), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("deleted item=" + index) != -1); + // Should return code 304 Not Modified. + assertTrue(document.indexOf("HTTP/1.1 304") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalDeleteIfUnmodifiedNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "DELETE", index, + "If-Unmodified-Since", dateFormat.format(new Date()), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + assertTrue(document.indexOf("deleted item=" + index) != -1); + // Should return code 304 Not Modified. + // assertTrue(document.indexOf("HTTP/1.1 304") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalDeleteIfUnmodifiedPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "DELETE", index, + "If-Unmodified-Since", dateFormat.format(new Date(0)), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("deleted item=" + index) != -1); + // Should return code 412 PreconditionFailed. + assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalDeleteIfMatchNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "DELETE", index, + "If-Match", "eTagXXX", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("deleted item=" + index) != -1); + // Should return code 412 precondition failed. + assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalDeleteIfMatchPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "DELETE", index, + "If-Match", "eTagXXX", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + assertTrue(document.indexOf("deleted item=" + index) != -1); + // Should return code 412 PreconditionFailed. + // assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalDeleteIfNoneMatchNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "DELETE", index, + "If-None-Match", "eTagXXX", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + assertTrue(document.indexOf("deleted item=" + index) != -1); + // Should return code 412 precondition failed. + // assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalDeleteIfNoneMatchPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "DELETE", index, + "If-None-Match", "eTagXXX", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("deleted item=" + index) != -1); + // Should return code 412 PreconditionFailed. + assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a POJO get method implementation using the HTTP binding. + * @throws Exception + */ + public void testPost() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST1, "POST", index, content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + assertTrue(document.indexOf("HTTP/1.1 200 OK") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPostIfModifiedNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "POST", index, + "If-Modified-Since", dateFormat.format(new Date()), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return code 200 OK + // assertTrue(document.indexOf("posted item=" + index) != -1); + assertTrue(document.indexOf("HTTP/1.1 200 OK") != -1); + // Should return code 304 Not Modified. + // assertTrue(document.indexOf("HTTP/1.1 304") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPostIfModifiedPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "POST", index, + "If-Modified-Since", dateFormat.format(new Date(0)), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("posted item=" + index) != -1); + // Should return code 304 Not Modified. + assertTrue(document.indexOf("HTTP/1.1 304") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPostIfUnmodifiedNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "POST", index, + "If-Unmodified-Since", dateFormat.format(new Date()), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return code 200 OK + assertTrue(document.indexOf("HTTP/1.1 200 OK") != -1); + // Should return code 304 Not Modified. + // assertTrue(document.indexOf("HTTP/1.1 304") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPostIfUnmodifiedPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "POST", index, + "If-Unmodified-Since", dateFormat.format(new Date(0)), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("posted item=" + index) != -1); + // Should return code 412 PreconditionFailed. + assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPostIfMatchNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "POST", index, + "If-Match", "eTagMatch", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return code 200 OK. + assertTrue(document.indexOf("HTTP/1.1 200 OK") != -1); + // Should return code 412 precondition failed. + // assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPostIfMatchPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat + .format(REQUEST2, "POST", index, "If-Match", "eTagNoneMatch", + content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("posted item=" + index) != -1); + // Should return code 412 PreconditionFailed. + assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPostIfNoneMatchNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "POST", index, + "If-None-Match", "eTagNoneMatch", content.getBytes().length, + content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return code 200 OK + assertTrue(document.indexOf("HTTP/1.1 200 OK") != -1); + // Should return code 412 precondition failed. + // assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPostIfNoneMatchPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "POST", index, + "If-None-Match", "eTagMatch", content.getBytes().length, + content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("posted item=" + index) != -1); + // Should return code 412 PreconditionFailed. + assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a POJO get method implementation using the HTTP binding. + * @throws Exception + */ + public void testPut() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST1, "PUT", index, content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + assertTrue(document.indexOf("updated item=" + index) != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPutIfModifiedNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "PUT", index, + "If-Modified-Since", dateFormat.format(new Date(0)), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + assertTrue(document.indexOf("updated item=" + index) != -1); + // Should return code 304 Not Modified. + // assertTrue(document.indexOf("HTTP/1.1 304") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPutIfModifiedPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "PUT", index, + "If-Modified-Since", dateFormat.format(new Date(0)), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("updated item=" + index) != -1); + // Should return code 304 Not Modified. + assertTrue(document.indexOf("HTTP/1.1 304") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPutIfUnmodifiedNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "PUT", index, + "If-Unmodified-Since", dateFormat.format(new Date()), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + assertTrue(document.indexOf("updated item=" + index) != -1); + // Should return code 304 Not Modified. + // assertTrue(document.indexOf("HTTP/1.1 304") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPutIfUnmodifiedPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "PUT", index, + "If-Unmodified-Since", dateFormat.format(new Date(0)), content + .getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("updated item=" + index) != -1); + // Should return code 412 PreconditionFailed. + assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPutIfMatchNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "PUT", index, + "If-Match", "eTagXXX", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("updated item=" + index) != -1); + // Should return code 412 precondition failed. + assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPutIfMatchPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "PUT", index, + "If-Match", "eTagXXX", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + assertTrue(document.indexOf("updated item=" + index) != -1); + // Should return code 412 PreconditionFailed. + // assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPutIfNoneMatchNegative() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 1; + String content = ""; + String request = MessageFormat.format(REQUEST2, "PUT", index, + "If-None-Match", "eTagXXX", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + assertTrue(document.indexOf("updated item=" + index) != -1); + // Should return code 412 precondition failed. + // assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Test invoking a conditional method implementation using the HTTP binding. + * @throws Exception + */ + public void testConditionalPutIfNoneMatchPositive() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String content = ""; + String request = MessageFormat.format(REQUEST2, "PUT", index, + "If-None-Match", "eTagXXX", content.getBytes().length, content); + os.write(request.getBytes()); + os.flush(); + + String document = read(client); + // Should return item + // assertTrue(document.indexOf("updated item=" + index) != -1); + // Should return code 412 PreconditionFailed. + assertTrue(document.indexOf("HTTP/1.1 412") != -1); + } + + /** + * Read response stream from the given socket. + * @param socket + * @return + * @throws IOException + */ + private static String read(Socket socket) throws IOException { + BufferedReader reader = null; + try { + reader = new BufferedReader(new InputStreamReader(socket + .getInputStream())); + StringBuffer sb = new StringBuffer(); + String str; + while ((str = reader.readLine()) != null) { + sb.append(str); + } + return sb.toString(); + } finally { + if (reader != null) { + reader.close(); + } + } + } +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingTestCase.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingTestCase.java new file mode 100644 index 0000000000..e5cad080a6 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingTestCase.java @@ -0,0 +1,147 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.binding.http; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.Socket; +import java.text.MessageFormat; + +import junit.framework.TestCase; + +import org.apache.tuscany.sca.host.embedded.SCADomain; + +/** + * HTTP binding unit tests. + * + * @version $Rev$ $Date$ + */ +public class HTTPBindingTestCase extends TestCase { + + private static final String REQUEST1_HEADER = + "GET /httpservice/test HTTP/1.0\n" + "Host: localhost\n" + + "Content-Type: text/xml\n" + + "Connection: close\n" + + "Content-Length: "; + private static final String REQUEST1_CONTENT = ""; + private static final String REQUEST1 = + REQUEST1_HEADER + REQUEST1_CONTENT.getBytes().length + "\n\n" + REQUEST1_CONTENT; + + private static final String REQUEST2_HEADER = + "GET /webcontent/test.html HTTP/1.0\n" + "Host: localhost\n" + + "Content-Type: text/xml\n" + + "Connection: close\n" + + "Content-Length: "; + private static final String REQUEST2_CONTENT = ""; + private static final String REQUEST2 = + REQUEST2_HEADER + REQUEST2_CONTENT.getBytes().length + "\n\n" + REQUEST2_CONTENT; + + private static final String REQUEST3_HEADER = + "GET /httpget/{0} HTTP/1.0\n" + "Host: localhost\n" + + "Content-Type: text/xml\n" + + "Connection: close\n" + + "Content-Length: "; + private static final String REQUEST3_CONTENT = ""; + private static final String REQUEST3 = + REQUEST3_HEADER + REQUEST3_CONTENT.getBytes().length + "\n\n" + REQUEST3_CONTENT; + + private static final int HTTP_PORT = 8085; + + private SCADomain scaDomain; + + @Override + protected void setUp() throws Exception { + scaDomain = SCADomain.newInstance("test.composite"); + } + + @Override + protected void tearDown() throws Exception { + scaDomain.close(); + } + + /** + * Test invoking a POJO service implementation using the HTTP binding. + * @throws Exception + */ + public void testServiceImplementation() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + os.write(REQUEST1.getBytes()); + os.flush(); + + String document = read(client); + assertTrue(document.indexOf("

hey") != -1); + } + + /** + * Test invoking a POJO get method implementation using the HTTP binding. + * @throws Exception + */ + public void testGetImplementation() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + int index = 0; + String request = MessageFormat.format( REQUEST3, index ); + os.write( request.getBytes()); + os.flush(); + + String document = read(client); + assertTrue(document.indexOf("

item=" + index) != -1); + } + + /** + * Test getting a static resource provided using the HTTP binding. + * @throws Exception + */ + public void testStaticResourceImplementation() throws Exception { + Socket client = new Socket("127.0.0.1", HTTP_PORT); + OutputStream os = client.getOutputStream(); + os.write(REQUEST2.getBytes()); + os.flush(); + + String document = read(client); + assertTrue(document.indexOf("

hello") != -1); + } + + /** + * Read response stream from the given socket. + * @param socket + * @return + * @throws IOException + */ + private static String read(Socket socket) throws IOException { + BufferedReader reader = null; + try { + reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); + StringBuffer sb = new StringBuffer(); + String str; + while ((str = reader.readLine()) != null) { + sb.append(str); + } + return sb.toString(); + } finally { + if (reader != null) { + reader.close(); + } + } + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/NotModifiedException.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/NotModifiedException.java new file mode 100644 index 0000000000..1d6efea2a1 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/NotModifiedException.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http; + +/** + * Indicates that a resource was not modified. + * + * @version $Rev$ $Date$ + */ +public class NotModifiedException extends Exception { + private static final long serialVersionUID = -5046027674128627383L; + + public NotModifiedException() { + } + + public NotModifiedException(String message) { + super(message); + } + + public NotModifiedException(Throwable cause) { + super(cause); + } + + public NotModifiedException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/PreconditionFailedException.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/PreconditionFailedException.java new file mode 100644 index 0000000000..5728899ebe --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/PreconditionFailedException.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http; + +/** + * Indicates that a resource was not modified. + * + * @version $Rev$ $Date$ + */ +public class PreconditionFailedException extends Exception { + private static final long serialVersionUID = -5046027674128627383L; + + public PreconditionFailedException() { + } + + public PreconditionFailedException(String message) { + super(message); + } + + public PreconditionFailedException(Throwable cause) { + super(cause); + } + + public PreconditionFailedException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestBindingCacheImpl.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestBindingCacheImpl.java new file mode 100644 index 0000000000..f2456f3175 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestBindingCacheImpl.java @@ -0,0 +1,241 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.util.Date; + +/** + * Test service implementation that implements a various conditional HTTP + * methods. For testing, the id==0 items are very old (Date(0)), not modified, + * and always match ETags and the id==1 items are always brand new (Date()), + * modified, and never match ETags. Using these ids one can test the + * LastModified and ETag headers of the requests. + * + * @version $Rev$ $Date$ + */ +public class TestBindingCacheImpl { + + /** + * Implements the HTTP get method of the collection implementation. + * @param id + * @return + */ + public InputStream get(String id) { + return new ByteArrayInputStream( + ("

item=" + id + "").getBytes()); + } + + /** + * Implements the HTTP conditional get method of the collection implementation. + * @param id + * @return + */ + public InputStream conditionalGet(String id, HTTPCacheContext cacheContext) + throws NotModifiedException, PreconditionFailedException { + + if (cacheContext != null) { + if (cacheContext.ifModifiedSince) { + if ((id.equals("1")) + && (0 > cacheContext.lastModifiedDate + .compareTo(new Date()))) + throw new NotModifiedException("item 1 was modified on " + + new Date()); + } + if (cacheContext.ifUnmodifiedSince) { + if ((id.equals("0")) + && (0 > cacheContext.lastModifiedDate + .compareTo(new Date()))) + throw new PreconditionFailedException( + "item 0 was modified on " + new Date(0)); + } + if (cacheContext.ifMatch) { + if (id.equals("1")) + throw new PreconditionFailedException( + "item 1 eTag does not match " + + cacheContext.getETag()); + } + if (cacheContext.ifNoneMatch) { + if (id.equals("0")) + throw new PreconditionFailedException( + "item 0 eTag matches " + cacheContext.getETag()); + } + } + return new ByteArrayInputStream( + ("

item=" + id + "").getBytes()); + } + + /** + * Implements the HTTP delete method of the collection implementation. + * @param id + * @return + */ + public InputStream delete(String id) { + return new ByteArrayInputStream( + ("

deleted item=" + id + "") + .getBytes()); + } + + /** + * Implements the HTTP conditional delete method of the collection implementation. + * @param id + * @return + */ + public InputStream conditionalDelete(String id, HTTPCacheContext cacheContext) + throws NotModifiedException, PreconditionFailedException { + + if (cacheContext != null) { + if (cacheContext.ifModifiedSince) { + if ((id.equals("1")) + && (0 > cacheContext.lastModifiedDate + .compareTo(new Date()))) + throw new NotModifiedException("item 1 was modified on " + + new Date()); + } + if (cacheContext.ifUnmodifiedSince) { + if ((id.equals("0")) + && (0 > cacheContext.lastModifiedDate + .compareTo(new Date()))) + throw new PreconditionFailedException( + "item 0 was modified on " + new Date(0)); + } + if (cacheContext.ifMatch) { + if (id.equals("1")) + throw new PreconditionFailedException( + "item 1 eTag does not match " + + cacheContext.getETag()); + } + if (cacheContext.ifNoneMatch) { + if (id.equals("0")) + throw new PreconditionFailedException( + "item 0 eTag matches " + cacheContext.getETag()); + } + } + return new ByteArrayInputStream( + ("

deleted item=" + id + "") + .getBytes()); + } + + /** + * Implements the HTTP post method of the collection implementation. + * @param id + * @return + */ + public InputStream post() { + int id = (new java.util.Random()).nextInt(Integer.MAX_VALUE); + return new ByteArrayInputStream( + ("

posted item=" + id + "") + .getBytes()); + } + + /** + * Implements the HTTP conditional post method of the collection implementation. + * @param id + * @return + */ + public HTTPCacheContext conditionalPost(HTTPCacheContext cacheContext) + throws NotModifiedException, PreconditionFailedException { + String id = "" + (new java.util.Random()).nextInt(Integer.MAX_VALUE); + + if (cacheContext != null) { + if (cacheContext.ifModifiedSince) { + if (0 >= cacheContext.lastModifiedDate.compareTo(new Date(0))) + throw new NotModifiedException("item was modified on " + + new Date()); + } + if (cacheContext.ifUnmodifiedSince) { + if ((0 >= cacheContext.lastModifiedDate.compareTo(new Date(0)))) + throw new PreconditionFailedException( + "item was modified on " + new Date(0)); + } + if (cacheContext.ifMatch) { + if (cacheContext.getETag().equalsIgnoreCase("ETagNoneMatch")) + throw new PreconditionFailedException( + "item eTag does not match " + + cacheContext.getETag()); + } + if (cacheContext.ifNoneMatch) { + if (cacheContext.getETag().equalsIgnoreCase("ETagMatch")) + throw new PreconditionFailedException("item eTag matches " + + cacheContext.getETag()); + } + } + + // Return the ETag and LastModfied fields by serialize to a byte array + HTTPCacheContext returnContext = new HTTPCacheContext(); + returnContext.setETag( "ETag" + (new java.util.Random()).nextInt(Integer.MAX_VALUE) ); + returnContext.setLastModified( new Date() ); + return returnContext; + } + + /** + * Implements the HTTP update/put method of the collection implementation. + * @param id + * @return + */ + public InputStream put(String id) { + return new ByteArrayInputStream( + ("

updated item=" + id + "") + .getBytes()); + } + + /** + * Implements the HTTP conditional update/put method of the collection implementation. + * @param id + * @return + */ + public InputStream conditionalPut(String id, HTTPCacheContext cacheContext) + throws NotModifiedException, PreconditionFailedException { + + if (cacheContext != null) { + if (cacheContext.ifModifiedSince) { + if ((id.equals("1")) + && (0 > cacheContext.lastModifiedDate + .compareTo(new Date()))) + throw new NotModifiedException("item 1 was modified on " + + new Date()); + } + if (cacheContext.ifUnmodifiedSince) { + if ((id.equals("0")) + && (0 > cacheContext.lastModifiedDate + .compareTo(new Date()))) + throw new PreconditionFailedException( + "item 0 was modified on " + new Date(0)); + } + if (cacheContext.ifMatch) { + if (id.equals("1")) + throw new PreconditionFailedException( + "item 1 eTag does not match " + + cacheContext.getETag()); + } + if (cacheContext.ifNoneMatch) { + if (id.equals("0")) + throw new PreconditionFailedException( + "item 0 eTag matches " + cacheContext.getETag()); + } + } + + return new ByteArrayInputStream( + ("

updated item=" + id + "") + .getBytes()); + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestGetImpl.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestGetImpl.java new file mode 100644 index 0000000000..333bacbab3 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestGetImpl.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; + +/** + * Test service implementation that implements a get method. + * + * @version $Rev$ $Date$ + */ +public class TestGetImpl { + + public InputStream get(String id) { + return new ByteArrayInputStream(("

item=" + id + "").getBytes()); + + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceCacheImpl.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceCacheImpl.java new file mode 100644 index 0000000000..ed846c1127 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceCacheImpl.java @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http; + +import java.io.IOException; + +import javax.servlet.Servlet; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +import org.osoa.sca.annotations.Service; + +/** + * Test service implementation. + * + * @version $Rev$ $Date$ + */ + +@Service(Servlet.class) +public class TestServiceCacheImpl implements Servlet { + + public void init(ServletConfig config) throws ServletException { + } + + public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { + //HttpServletResponse httpResponse = (HttpServletResponse)response; + response.getOutputStream().print("

hey"); + } + + public void destroy() { + } + + public ServletConfig getServletConfig() { + return null; + } + + public String getServletInfo() { + return null; + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceImpl.java b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceImpl.java new file mode 100644 index 0000000000..11945c8cd1 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceImpl.java @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http; + +import java.io.IOException; + +import javax.servlet.Servlet; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +import org.osoa.sca.annotations.Service; + +/** + * Test service implementation. + * + * @version $Rev$ $Date$ + */ + +@Service(Servlet.class) +public class TestServiceImpl implements Servlet { + + public void init(ServletConfig config) throws ServletException { + } + + public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { + //HttpServletResponse httpResponse = (HttpServletResponse)response; + response.getOutputStream().print("

hey"); + } + + public void destroy() { + } + + public ServletConfig getServletConfig() { + return null; + } + + public String getServletInfo() { + return null; + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/resources/content/test.html b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/resources/content/test.html new file mode 100644 index 0000000000..f4b79d7f01 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/resources/content/test.html @@ -0,0 +1,21 @@ + + +

hello + \ No newline at end of file diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/resources/test.composite b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/resources/test.composite new file mode 100644 index 0000000000..62c4af4e22 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/resources/test.composite @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/resources/testCache.composite b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/resources/testCache.composite new file mode 100644 index 0000000000..d805402c4f --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new-runtime/src/test/resources/testCache.composite @@ -0,0 +1,33 @@ + + + + + + + + + + + + diff --git a/branches/sca-java-1.x/modules/binding-http-new/LICENSE b/branches/sca-java-1.x/modules/binding-http-new/LICENSE new file mode 100644 index 0000000000..8aa906c321 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/LICENSE @@ -0,0 +1,205 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + diff --git a/branches/sca-java-1.x/modules/binding-http-new/NOTICE b/branches/sca-java-1.x/modules/binding-http-new/NOTICE new file mode 100644 index 0000000000..fdfa0e9faa --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/NOTICE @@ -0,0 +1,6 @@ +${pom.name} +Copyright (c) 2005 - 2008 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + diff --git a/branches/sca-java-1.x/modules/binding-http-new/pom.xml b/branches/sca-java-1.x/modules/binding-http-new/pom.xml new file mode 100644 index 0000000000..4b067656b8 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/pom.xml @@ -0,0 +1,87 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-modules + 1.6-SNAPSHOT + ../pom.xml + + + tuscany-binding-http-oasis + Apache Tuscany SCA HTTP OASIS Binding Model + + + + org.apache.tuscany.sca + tuscany-assembly + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-interface-java-xml + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-data-api + 1.6-SNAPSHOT + + + + javax.servlet + servlet-api + 2.5 + provided + + + + junit + junit + 4.5 + test + + + + + + + + + org.apache.felix + maven-bundle-plugin + + + + ${tuscany.version} + org.apache.tuscany.sca.binding.http + ${pom.name} + org.apache.tuscany.sca.binding.http* + org.apache.tuscany.sca.assembly.xml;version="1.4", * + + + + + + + diff --git a/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java new file mode 100644 index 0000000000..7005385afb --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http; + +import org.apache.tuscany.sca.assembly.BindingRRB; + + +/** + * HTTP binding model. + * + * @version $Rev$ $Date$ +*/ +public interface HTTPBinding extends BindingRRB { + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBindingFactory.java b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBindingFactory.java new file mode 100644 index 0000000000..e66896c68e --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBindingFactory.java @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http; + +/** + * Factory for the HTTP binding model. + * + * @version $Rev$ $Date$ + */ +public interface HTTPBindingFactory { + + /** + * Creates a new HTTP binding. + * @return a new HTTP binding + */ + HTTPBinding createHTTPBinding(); + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPCacheContext.java b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPCacheContext.java new file mode 100644 index 0000000000..fb9242c26c --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPCacheContext.java @@ -0,0 +1,257 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import javax.servlet.http.HttpServletRequest; + +/** + * A class to store cache settings for Atom and HTTP requests and responses. + * + * Predicates are statements that work in conjunction with + * ETags and LastModified dates to determine if a precondition + * or postcondition is satisfied. + * See HTTP specification for how predicates wrk: + * http://tools.ietf.org/html/rfc2616 + * Example predicates in HTTP include If-Match, If-None-Match, + * If-Modified-Since, If-Unmodified-Since, If-Range. + + */ +public class HTTPCacheContext { + public static final SimpleDateFormat RFC822DateFormat = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss Z" ); // RFC 822 date time + + public boolean enabled; + public String eTag; + public String lastModified; + public Date lastModifiedDate; + public boolean ifModifiedSince; + public boolean ifUnmodifiedSince; + public boolean ifMatch; + public boolean ifNoneMatch; + public boolean ifRange; + + /** + * An ETag is a unique ID for an item. It changes when + * a field in the item or the update date changes. + * See HTTP specification for how ETags work: + * http://tools.ietf.org/html/rfc2616 + * @return the eTag + */ + public String getETag() { + return eTag; + } + /** + * @param tag the eTag to set + */ + public void setETag(String tag) { + eTag = tag; + enabled = true; + } + /** + * The LastModified date is the time the item was last + * changed. See HTTP specification for how ETags work: + * http://tools.ietf.org/html/rfc2616 + * @return the lastModified + */ + public String getLastModified() { + return lastModified; + } + /** + * The LastModified date is the time the item was last + * changed. See HTTP specification for how ETags work: + * http://tools.ietf.org/html/rfc2616 + * @return the lastModified + */ + public Date getLastModifiedAsDate() { + return lastModifiedDate; + } + /** + * @param lastModified the lastModified to set + */ + public void setLastModified(String lastModified) throws java.text.ParseException { + this.lastModified = lastModified; + // Catch date formatting on input to help debugging. + lastModifiedDate = RFC822DateFormat.parse( lastModified ); + enabled = true; + } + + /** + * @param lastModified the lastModified to set + */ + public void setLastModified(Date updated) { + this.lastModified = RFC822DateFormat.format( updated ); + lastModifiedDate = updated; + enabled = true; + } + + /** + * @return the ifModifedSince + */ + public boolean isIfModifiedSince() { + return ifModifiedSince; + } + /** + * @param ifModifedSince the ifModifedSince to set + */ + public void setIfModifiedSince(boolean ifModifiedSince) { + this.ifModifiedSince = ifModifiedSince; + if ( ifModifiedSince ) + enabled = true; + } + /** + * @return the ifUnModifiedSince + */ + public boolean isIfUnmodifiedSince() { + return ifUnmodifiedSince; + } + /** + * @param ifUnModifiedSince the ifUnModifiedSince to set + */ + public void setIfUnmodifiedSince(boolean ifUnmodifiedSince) { + this.ifUnmodifiedSince = ifUnmodifiedSince; + if ( ifUnmodifiedSince ) + enabled = true; + } + /** + * @return the ifMatch + */ + public boolean isIfMatch() { + return ifMatch; + } + /** + * @param ifMatch the ifMatch to set + */ + public void setIfMatch(boolean ifMatch) { + this.ifMatch = ifMatch; + if ( ifMatch ) + enabled = true; + } + /** + * @return the ifNoneMatch + */ + public boolean isIfNoneMatch() { + return ifNoneMatch; + } + /** + * @param ifNoneMatch the ifNoneMatch to set + */ + public void setIfNoneMatch(boolean ifNoneMatch) { + this.ifNoneMatch = ifNoneMatch; + if ( ifNoneMatch ) + enabled = true; + } + /** + * @return the ifRange + */ + public boolean isIfRange() { + return ifRange; + } + /** + * @param ifRange the ifRange to set + */ + public void setIfRange(boolean ifRange) { + this.ifRange = ifRange; + if ( ifRange ) + enabled = true; + } + + public String toString() { + final String PREDPREFIX = ", predicates="; + StringBuffer sb = new StringBuffer(PREDPREFIX); + if ( ifMatch || ifNoneMatch || ifModifiedSince || ifUnmodifiedSince || ifRange ) { + if ( ifMatch ) { + if ( sb.length() > PREDPREFIX.length() ) sb.append( ", "); + sb.append("If-Match"); + } + if ( ifNoneMatch ) { + if ( sb.length() > PREDPREFIX.length() ) sb.append( ", "); + sb.append("If-None-Match"); + } + if ( ifModifiedSince ) { + if ( sb.length() > PREDPREFIX.length() ) sb.append( ", "); + sb.append("If-Modified-Since"); + } + if ( ifUnmodifiedSince ) { + if ( sb.length() > PREDPREFIX.length() ) sb.append( ", "); + sb.append("If-UnModified-Since"); + } + if ( ifRange ) { + if ( sb.length() > PREDPREFIX.length() ) sb.append( ", "); + sb.append("If-Range"); + } + } else { + sb.append("null"); + } + + return "eTag=" + eTag + ", lastModified=" + lastModified + + sb.toString(); + } + + /** + * Gets the cache context information (ETag, LastModified, predicates) from the Http request. + * @param request + * @return + */ + public static HTTPCacheContext getCacheContextFromRequest( HttpServletRequest request ) throws java.text.ParseException { + HTTPCacheContext context = new HTTPCacheContext(); + + String eTag = request.getHeader( "If-Match" ); + if ( eTag != null ) { + context.setETag( eTag ); + context.setIfMatch( true ); + } + eTag = request.getHeader( "If-None-Match" ); + if ( eTag != null ) { + context.setETag( eTag ); + context.setIfNoneMatch( true ); + } + String lastModifiedString = request.getHeader( "If-Modified-Since" ); + if ( lastModifiedString != null ) { + context.setLastModified( lastModifiedString ); + context.setIfModifiedSince( true ); + } + lastModifiedString = request.getHeader( "If-Unmodified-Since" ); + if ( lastModifiedString != null ) { + context.setLastModified( lastModifiedString ); + context.setIfUnmodifiedSince( true ); + } + lastModifiedString = request.getHeader( "If-Range" ); + if ( lastModifiedString != null ) { + context.setLastModified( lastModifiedString ); + context.setIfRange( true ); + } + return context; + } + /** + * Enabled is true whenever ETag, LastModified, or predicate is set. + * @return the enabled + */ + public boolean isEnabled() { + return enabled; + } + /** + * @param enabled the enabled to set + */ + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } +} diff --git a/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPHeader.java b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPHeader.java new file mode 100644 index 0000000000..69e44cf35c --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/HTTPHeader.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http; + +public class HTTPHeader { + private String name; + private Object value; + + public HTTPHeader() { + + } + + public HTTPHeader(String name, Object value) { + this.name = name; + this.value = value; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Object getValue() { + return value; + } + + public void setValue(Object value) { + this.value = value; + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingFactoryImpl.java b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingFactoryImpl.java new file mode 100644 index 0000000000..678cd1a426 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingFactoryImpl.java @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.impl; + +import org.apache.tuscany.sca.binding.http.HTTPBinding; +import org.apache.tuscany.sca.binding.http.HTTPBindingFactory; + +/** + * Factory for the HTTP binding model. + * + * @version $Rev$ $Date$ + */ +public class HTTPBindingFactoryImpl implements HTTPBindingFactory { + + public HTTPBinding createHTTPBinding() { + return new HTTPBindingImpl(); + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java new file mode 100644 index 0000000000..242f3c6d48 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java @@ -0,0 +1,137 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.tuscany.sca.assembly.OperationSelector; +import org.apache.tuscany.sca.assembly.WireFormat; +import org.apache.tuscany.sca.binding.http.HTTPBinding; +import org.apache.tuscany.sca.policy.Intent; +import org.apache.tuscany.sca.policy.IntentAttachPointType; +import org.apache.tuscany.sca.policy.PolicySet; +import org.apache.tuscany.sca.policy.PolicySetAttachPoint; + + +/** + * Implementation of the HTTP binding model. + * + * @version $Rev$ $Date$ + */ +class HTTPBindingImpl implements HTTPBinding, PolicySetAttachPoint { + + private String name; + private String uri; + + private WireFormat wireFormat; + private OperationSelector operationSelector; + + private List requiredIntents = new ArrayList(); + private List policySets = new ArrayList(); + private IntentAttachPointType intentAttachPointType; + private List applicablePolicySets = new ArrayList(); + + public String getName() { + return name; + } + + public String getURI() { + return uri; + } + + public void setName(String name) { + this.name = name; + } + + public void setURI(String uri) { + this.uri = uri; + } + + public boolean isUnresolved() { + return false; + } + + public void setUnresolved(boolean unresolved) { + // The sample binding is always resolved + } + + // Wireformat and Operation selection + + public WireFormat getRequestWireFormat() { + return wireFormat; + } + + public void setRequestWireFormat(WireFormat wireFormat) { + this.wireFormat = wireFormat; + } + + public WireFormat getResponseWireFormat() { + return wireFormat; + } + + public void setResponseWireFormat(WireFormat wireFormat) { + this.wireFormat = wireFormat; + } + + public OperationSelector getOperationSelector() { + return operationSelector; + } + + public void setOperationSelector(OperationSelector operationSelector) { + this.operationSelector = operationSelector; + } + + //Policy related getters/setters + + public List getPolicySets() { + return policySets; + } + + public List getRequiredIntents() { + return requiredIntents; + } + + public IntentAttachPointType getType() { + return intentAttachPointType; + } + + public void setType(IntentAttachPointType intentAttachPointType) { + this.intentAttachPointType = intentAttachPointType; + } + + public void setPolicySets(List policySets) { + this.policySets = policySets; + } + + public void setRequiredIntents(List intents) { + this.requiredIntents = intents; + } + + public List getApplicablePolicySets() { + return applicablePolicySets; + } + + @Override + public Object clone() throws CloneNotSupportedException { + return super.clone(); + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java new file mode 100644 index 0000000000..874c23c7e0 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java @@ -0,0 +1,166 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.xml; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +import org.apache.tuscany.sca.assembly.OperationSelector; +import org.apache.tuscany.sca.assembly.WireFormat; +import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl; +import org.apache.tuscany.sca.assembly.xml.Constants; +import org.apache.tuscany.sca.binding.http.HTTPBinding; +import org.apache.tuscany.sca.binding.http.HTTPBindingFactory; +import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; +import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor; +import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; +import org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessor; +import org.apache.tuscany.sca.contribution.resolver.ModelResolver; +import org.apache.tuscany.sca.contribution.service.ContributionReadException; +import org.apache.tuscany.sca.contribution.service.ContributionResolveException; +import org.apache.tuscany.sca.contribution.service.ContributionWriteException; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.monitor.Monitor; +import org.apache.tuscany.sca.monitor.Problem; +import org.apache.tuscany.sca.monitor.Problem.Severity; + +public class HTTPBindingProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor { + private static final String BINDING_HTTP = "binding.http"; + private static final QName BINDING_HTTP_QNAME = new QName(Constants.SCA10_TUSCANY_NS, BINDING_HTTP); + + private static final String NAME = "name"; + private static final String URI = "uri"; + + private HTTPBindingFactory httpBindingFactory; + private StAXArtifactProcessor extensionProcessor; + private StAXAttributeProcessor extensionAttributeProcessor; + private Monitor monitor; + + public HTTPBindingProcessor(ExtensionPointRegistry extensionPoints, + StAXArtifactProcessor extensionProcessor, + StAXAttributeProcessor extensionAttributeProcessor, + Monitor monitor) { + ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class); + this.httpBindingFactory = modelFactories.getFactory(HTTPBindingFactory.class); + this.extensionProcessor = (StAXArtifactProcessor)extensionProcessor; + this.extensionAttributeProcessor = extensionAttributeProcessor; + this.monitor = monitor; + } + + public QName getArtifactType() { + return BINDING_HTTP_QNAME; + } + + public Class getModelType() { + return HTTPBinding.class; + } + + public HTTPBinding read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException { + HTTPBinding httpBinding = httpBindingFactory.createHTTPBinding(); + + while(reader.hasNext()) { + QName elementName = null; + int event = reader.getEventType(); + switch (event) { + case START_ELEMENT: + elementName = reader.getName(); + + if (BINDING_HTTP_QNAME.equals(elementName)) { + String name = getString(reader, NAME); + if(name != null) { + httpBinding.setName(name); + } + + String uri = getString(reader, URI); + if (uri != null) { + httpBinding.setURI(uri); + } + } else { + // Read an extension element + Object extension = extensionProcessor.read(reader); + if (extension != null) { + if (extension instanceof WireFormat) { + httpBinding.setRequestWireFormat((WireFormat)extension); + } else if(extension instanceof OperationSelector) { + httpBinding.setOperationSelector((OperationSelector)extension); + } + } + } + + } + + if (event == END_ELEMENT && BINDING_HTTP_QNAME.equals(reader.getName())) { + break; + } + + // Read the next element + if (reader.hasNext()) { + reader.next(); + } + } + + return httpBinding; + } + + public void write(HTTPBinding httpBinding, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException { + //writer.writeStartElement(Constants.SCA10_NS, BINDING_HTTP); + + writeStart(writer, BINDING_HTTP_QNAME.getNamespaceURI(), BINDING_HTTP_QNAME.getLocalPart()); + + // Write binding name + if (httpBinding.getName() != null) { + writer.writeAttribute(NAME, httpBinding.getName()); + } + + // Write binding URI + if (httpBinding.getURI() != null) { + writer.writeAttribute(URI, httpBinding.getURI()); + } + + writeEnd(writer); + //writer.writeEndElement(); + } + + + public void resolve(HTTPBinding model, ModelResolver resolver) throws ContributionResolveException { + // Should not need to do anything here for now... + + } + + /** + * Report a error. + * + * @param problems + * @param message + * @param model + */ + private void error(String message, Object model, Object... messageParameters) { + if (monitor != null) { + Problem problem = new ProblemImpl(this.getClass().getName(), "binding-http-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters); + monitor.problem(problem); + } + } + +} diff --git a/branches/sca-java-1.x/modules/binding-http-new/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.HTTPBindingFactory b/branches/sca-java-1.x/modules/binding-http-new/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.HTTPBindingFactory new file mode 100644 index 0000000000..44da6b166c --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.HTTPBindingFactory @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Implementation class for model factory +org.apache.tuscany.sca.binding.http.impl.HTTPBindingFactoryImpl diff --git a/branches/sca-java-1.x/modules/binding-http-new/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor b/branches/sca-java-1.x/modules/binding-http-new/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor new file mode 100644 index 0000000000..ac004e826a --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Implementation class for the artifact processor extension +org.apache.tuscany.sca.binding.http.xml.HTTPBindingProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.0#binding.http,model=org.apache.tuscany.sca.binding.http.HTTPBinding,factory=org.apache.tuscany.sca.binding.http.HTTPBindingFactory diff --git a/branches/sca-java-1.x/modules/binding-http-new/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java b/branches/sca-java-1.x/modules/binding-http-new/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java new file mode 100644 index 0000000000..b19935c1e0 --- /dev/null +++ b/branches/sca-java-1.x/modules/binding-http-new/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java @@ -0,0 +1,109 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.binding.http.xml; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.ByteArrayOutputStream; +import java.io.StringReader; + +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLOutputFactory; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +import org.apache.tuscany.sca.binding.http.HTTPBinding; +import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor; +import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; +import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; +import org.apache.tuscany.sca.core.UtilityExtensionPoint; +import org.apache.tuscany.sca.monitor.Monitor; +import org.apache.tuscany.sca.monitor.MonitorFactory; +import org.apache.tuscany.sca.monitor.impl.DefaultMonitorFactoryImpl; +import org.junit.BeforeClass; +import org.junit.Test; + + +/** + * @version $Rev$ $Date$ + */ +public class HTTPBindingProcessorTestCase { + private static final String XML = ""; + + private static XMLInputFactory inputFactory; + private static XMLOutputFactory outputFactory; + + private static Monitor monitor; + + private static ExtensibleStAXArtifactProcessor staxProcessor; + private static HTTPBindingProcessor httpBindingProcessor; + + @BeforeClass + public static void setUp() throws Exception { + inputFactory = XMLInputFactory.newInstance(); + + outputFactory = XMLOutputFactory.newInstance(); + outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE); + + DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry(); + // Create a monitor + UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class); + MonitorFactory monitorFactory = new DefaultMonitorFactoryImpl(); + if (monitorFactory != null) { + monitor = monitorFactory.createMonitor(); + utilities.addUtility(monitorFactory); + } + + StAXArtifactProcessorExtensionPoint staxProcessors = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class); + staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, XMLOutputFactory.newInstance(), null); + + httpBindingProcessor = new HTTPBindingProcessor(extensionPoints, staxProcessor, null, monitor); + } + + + /** + * Read and Write a composite using the HTTP Binding + * + * @throws Exception + */ + @Test + public void testReadWriteCompositeWithHTTPBinding() throws Exception { + + XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(XML)); + reader.next(); + + HTTPBinding httpBinding = (HTTPBinding) httpBindingProcessor.read(reader); + assertNotNull(httpBinding); + reader.close(); + + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + XMLStreamWriter writer = outputFactory.createXMLStreamWriter(bos); + writer.setDefaultNamespace("http://www.osoa.org/xmlns/sca/1.0"); + httpBindingProcessor.write(httpBinding, writer); + writer.writeEndDocument(); + + // used for debug comparison + System.out.println(XML); + System.out.println(bos.toString()); + + assertEquals(XML, bos.toString()); + } +} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/LICENSE b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/LICENSE deleted file mode 100644 index 8aa906c321..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/NOTICE b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/NOTICE deleted file mode 100644 index fdfa0e9faa..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name} -Copyright (c) 2005 - 2008 The Apache Software Foundation - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/pom.xml b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/pom.xml deleted file mode 100644 index fd862f918d..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/pom.xml +++ /dev/null @@ -1,138 +0,0 @@ - - - - 4.0.0 - - org.apache.tuscany.sca - tuscany-modules - 1.6-SNAPSHOT - ../pom.xml - - - tuscany-binding-http-oasis-jsonrpc-runtime - Apache Tuscany SCA HTTP Binding JSON-RPC Runtime - - - - org.apache.tuscany.sca - tuscany-assembly - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-assembly-xml - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-binding-http-oasis-jsonrpc - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-core-spi - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-host-http - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-host-jetty - 1.6-SNAPSHOT - test - - - - org.apache.tuscany.sca - tuscany-databinding - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-databinding-json - 1.6-SNAPSHOT - - - - com.metaparadigm - json-rpc - 1.0 - - - - - org.apache.tuscany.sca - tuscany-host-embedded - 1.6-SNAPSHOT - test - - - - org.apache.tuscany.sca - tuscany-implementation-java-runtime - 1.6-SNAPSHOT - test - - - - junit - junit - 4.5 - test - - - - httpunit - httpunit - 1.6.1 - test - - - - - - - - - org.apache.felix - maven-bundle-plugin - - - - ${tuscany.version} - org.apache.tuscany.sca.binding.http.wireformat.jsonrpc - ${pom.name} - org.apache.tuscany.sca.binding.http.wireformat.jsonrpc - org.apache.tuscany.sca.assembly.xml;version="1.4", * - - - - - - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java deleted file mode 100644 index 68152b0321..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatInterceptor.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.provider; - -import org.apache.tuscany.sca.invocation.Interceptor; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.Message; - -public class JSONRPCWireFormatInterceptor implements Interceptor { - - public Invoker getNext() { - // TODO Auto-generated method stub - return null; - } - - public void setNext(Invoker next) { - // TODO Auto-generated method stub - - } - - public Message invoke(Message msg) { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatProviderFactory.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatProviderFactory.java deleted file mode 100644 index 71ba4c913b..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatProviderFactory.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.provider; - -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormat; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.provider.WireFormatProvider; -import org.apache.tuscany.sca.provider.WireFormatProviderFactory; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - - -/** - * @version $Rev$ $Date$ - */ -public class JSONRPCWireFormatProviderFactory implements WireFormatProviderFactory { - private ExtensionPointRegistry extensionPoints; - - public JSONRPCWireFormatProviderFactory(ExtensionPointRegistry extensionPoints) { - this.extensionPoints = extensionPoints; - } - - public WireFormatProvider createReferenceWireFormatProvider(RuntimeComponent component, - RuntimeComponentReference reference, - Binding binding) { - return new JSONRPCWireFormatReferenceProvider(extensionPoints, component, reference, binding); - } - - public WireFormatProvider createServiceWireFormatProvider(RuntimeComponent component, - RuntimeComponentService service, - Binding binding) { - return new JSONRPCWireFormatServiceProvider(extensionPoints, component, service, binding); - } - - public Class getModelType() { - return JSONRPCWireFormat.class; - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatReferenceProvider.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatReferenceProvider.java deleted file mode 100644 index 5e1151dc95..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatReferenceProvider.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.provider; - -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.interfacedef.InterfaceContract; -import org.apache.tuscany.sca.invocation.Interceptor; -import org.apache.tuscany.sca.invocation.Phase; -import org.apache.tuscany.sca.provider.WireFormatProvider; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; - -/** - * @version $Rev$ $Date$ - */ -public class JSONRPCWireFormatReferenceProvider implements WireFormatProvider { - - public JSONRPCWireFormatReferenceProvider (ExtensionPointRegistry extensionPoints, - RuntimeComponent component, - RuntimeComponentReference reference, - Binding binding) { - - } - - public InterfaceContract configureWireFormatInterfaceContract(InterfaceContract interfaceContract) { - return null; - } - - public Interceptor createInterceptor() { - return null; - } - - public String getPhase() { - return Phase.REFERENCE_BINDING_WIREFORMAT; - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java deleted file mode 100644 index 983e54c1a7..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/provider/JSONRPCWireFormatServiceProvider.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.provider; - -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.interfacedef.InterfaceContract; -import org.apache.tuscany.sca.invocation.Interceptor; -import org.apache.tuscany.sca.invocation.Phase; -import org.apache.tuscany.sca.provider.WireFormatProvider; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - -/** - * @version $Rev$ $Date$ - */ -public class JSONRPCWireFormatServiceProvider implements WireFormatProvider { - - public JSONRPCWireFormatServiceProvider(ExtensionPointRegistry extensionPoints, - RuntimeComponent component, - RuntimeComponentService service, - Binding binding) { - - } - - public InterfaceContract configureWireFormatInterfaceContract(InterfaceContract interfaceContract) { - // TODO Auto-generated method stub - return null; - } - - public Interceptor createInterceptor() { - // TODO Auto-generated method stub - return null; - } - - public String getPhase() { - return Phase.SERVICE_BINDING_WIREFORMAT; - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.WireFormatProviderFactory b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.WireFormatProviderFactory deleted file mode 100644 index 9b7d686ddd..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.WireFormatProviderFactory +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -# Implementation class for the wire format provider factory -org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.provider.JSONRPCWireFormatProviderFactory;model=org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormat \ No newline at end of file diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/bean/TestBean.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/bean/TestBean.java deleted file mode 100644 index 4b159fb563..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/bean/TestBean.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package bean; - -public class TestBean { - private String testString; - private String[] testStringArray; - private int testInt; - - - public String getTestString() { - return testString; - } - - public void setTestString(String testString) { - this.testString = testString; - } - - public String[] getTestStringArray() { - return testStringArray; - } - - public void setStringArray(String[] stringArray) { - this.testStringArray = stringArray; - } - - public int getTestInt() { - return testInt; - } - - public void setTestInt(int testInt) { - this.testInt = testInt; - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/echo/Echo.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/echo/Echo.java deleted file mode 100644 index ba87f22cf6..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/echo/Echo.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package echo; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.osoa.sca.annotations.Remotable; - -import bean.TestBean; - -/** - * Interface of our sample JSONRPC service. - * - * @version $Rev$ $Date$ - */ -@Remotable -public interface Echo { - - String echo(String msg); - - void echoRuntimeException() throws RuntimeException; - - void echoBusinessException() throws EchoBusinessException; - - int echoInt(int param); - - boolean echoBoolean(boolean param); - - Map echoMap(HashMap map); - - TestBean echoBean(TestBean testBean); - - List echoList(ArrayList list); - - String [] echoArrayString(String[] stringArray); - - int [] echoArrayInt(int[] intArray); - - Set echoSet(HashSet set); - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/echo/EchoBusinessException.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/echo/EchoBusinessException.java deleted file mode 100644 index bf8c7d2c8a..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/echo/EchoBusinessException.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package echo; - -public class EchoBusinessException extends Exception { - private static final long serialVersionUID = 7234119326657905710L; - - public EchoBusinessException(String message) - { - super(message); - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/echo/EchoComponentImpl.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/echo/EchoComponentImpl.java deleted file mode 100644 index 3e7b848221..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/echo/EchoComponentImpl.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package echo; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import bean.TestBean; - -/** - * A simple client component that uses a reference with an JSONRPC binding. - * - * @version $Rev$ $Date$ - */ -public class EchoComponentImpl implements Echo { - - public String echo(String msg) { - System.out.println("Echo: "+ msg); - return "echo: " + msg; - } - - public void echoBusinessException() throws EchoBusinessException { - throw new EchoBusinessException("Business Exception"); - - } - - public void echoRuntimeException() throws RuntimeException { - throw new RuntimeException("Runtime Exception"); - } - - public int echoInt(int param) { - int value = param; - return value; - } - - public boolean echoBoolean(boolean param) { - boolean value = param; - return value; - } - - public Map echoMap(HashMap param) { - Map map = new HashMap(); - map = param; - return map; - } - - public TestBean echoBean(TestBean testBean1) { - TestBean testBean = new TestBean(); - testBean.setTestString(testBean1.getTestString()); - testBean.setTestInt(testBean1.getTestInt()); - return testBean; - } - - public List echoList(ArrayList param){ - List list = new ArrayList(); - for(Iterator itr = param.iterator();itr.hasNext();) - { - list.add(itr.next()); - } - return list; - } - - public String[] echoArrayString(String[] stringArray) { - return stringArray; - } - - public int[] echoArrayInt(int[] intArray) { - return intArray; - } - - public Set echoSet(HashSet param){ - Set set = new HashSet(); - set = param; - return set; - - } -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCDataTypeTestCase.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCDataTypeTestCase.java deleted file mode 100644 index 6b59aae03e..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCDataTypeTestCase.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc; - -import java.io.ByteArrayInputStream; - -import junit.framework.Assert; - -import org.apache.tuscany.sca.host.embedded.SCADomain; -import org.json.JSONObject; -import org.junit.After; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; - -import com.meterware.httpunit.PostMethodWebRequest; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebRequest; -import com.meterware.httpunit.WebResponse; - -/** - * @version $Rev$ $Date$ - */ -public class JSONRPCDataTypeTestCase { - - private static final String SERVICE_PATH = "/EchoService"; - private static final String SERVICE_URL = "http://localhost:8085/SCADomain" + SERVICE_PATH; - private SCADomain domain; - - //@Before - public void setUp() throws Exception { - domain = SCADomain.newInstance("JSONRPCBinding.composite"); - } - - //@After - public void tearDown() throws Exception { - domain.close(); - } - - //@Test - @Ignore("Work in progress") - public void testInt() throws Exception { - JSONObject jsonRequest = new JSONObject( - "{ \"method\": \"echoInt\", \"params\": [12345], \"id\": 4}"); - - WebConversation wc = new WebConversation(); - WebRequest request = new PostMethodWebRequest(SERVICE_URL, - new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); - WebResponse response = wc.getResource(request); - - Assert.assertEquals(200, response.getResponseCode()); - - JSONObject jsonResp = new JSONObject(response.getText()); - - Assert.assertEquals(12345, jsonResp.getInt("result")); - } - - //@Test - @Ignore("Work in progress") - public void testBoolean() throws Exception { - JSONObject jsonRequest = new JSONObject( - "{ \"method\": \"echoBoolean\", \"params\": [true], \"id\": 5}"); - - WebConversation wc = new WebConversation(); - WebRequest request = new PostMethodWebRequest(SERVICE_URL, - new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); - WebResponse response = wc.getResource(request); - - Assert.assertEquals(200, response.getResponseCode()); - - JSONObject jsonResp = new JSONObject(response.getText()); - - Assert.assertEquals(true, jsonResp.getBoolean("result")); - } - - //@Test - @Ignore("Work in progress") - public void testMap() throws Exception { - JSONObject jsonRequest = new JSONObject( - "{ \"method\": \"echoMap\", \"params\": [ {\"javaClass\": \"java.util.HashMap\", \"map\": { \"Binding\": \"JSON-RPC\"}}], \"id\": 6}"); - - WebConversation wc = new WebConversation(); - WebRequest request = new PostMethodWebRequest(SERVICE_URL, - new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); - WebResponse response = wc.getResource(request); - - Assert.assertEquals(200, response.getResponseCode()); - - JSONObject jsonResp = new JSONObject(response.getText()); - - Assert.assertEquals("JSON-RPC", jsonResp.getJSONObject("result").getJSONObject("map").getString("Binding")); - } - - //@Test - @Ignore("Work in progress") - public void testBean() throws Exception { - JSONObject jsonRequest = new JSONObject( - "{ \"method\": \"echoBean\", \"params\": [ {\"javaClass\": \"bean.TestBean\", \"testString\": \"JSON-RPC\", \"testInt\":1234}], \"id\": 7}"); - - WebConversation wc = new WebConversation(); - WebRequest request = new PostMethodWebRequest(SERVICE_URL, - new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); - WebResponse response = wc.getResource(request); - - Assert.assertEquals(200, response.getResponseCode()); - - JSONObject jsonResp = new JSONObject(response.getText()); - - Assert.assertEquals("JSON-RPC", jsonResp.getJSONObject("result").getString("testString")); - } - - //@Test - @Ignore("Work in progress") - public void testList() throws Exception { - JSONObject jsonRequest = new JSONObject( - "{ \"method\": \"echoList\", \"params\": [ {\"javaClass\": \"java.util.ArrayList\", \"list\": [0,1,2,3,4]}], \"id\": 8}"); - - WebConversation wc = new WebConversation(); - WebRequest request = new PostMethodWebRequest(SERVICE_URL, - new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); - WebResponse response = wc.getResource(request); - - Assert.assertEquals(200, response.getResponseCode()); - - JSONObject jsonResp = new JSONObject(response.getText()); - - Assert.assertEquals(0, jsonResp.getJSONObject("result").getJSONArray("list").get(0)); - } - - //@Test - @Ignore("Work in progress") - public void testArrayString() throws Exception { - JSONObject jsonRequest = new JSONObject( - "{\"params\":[[\"1\",\"2\"]],\"method\":\"echoArrayString\",\"id\":9}"); - - WebConversation wc = new WebConversation(); - WebRequest request = new PostMethodWebRequest(SERVICE_URL, - new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); - WebResponse response = wc.getResource(request); - - Assert.assertEquals(200, response.getResponseCode()); - - JSONObject jsonResp = new JSONObject(response.getText()); - - Assert.assertEquals(1, jsonResp.getJSONArray("result").getInt(0)); - } - - - //@Test - @Ignore("Work in progress") - public void testArrayInt() throws Exception { - JSONObject jsonRequest = new JSONObject( - "{\"params\":[[1,2]],\"method\":\"echoArrayInt\",\"id\":10}"); - - WebConversation wc = new WebConversation(); - WebRequest request = new PostMethodWebRequest(SERVICE_URL, - new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); - WebResponse response = wc.getResource(request); - - Assert.assertEquals(200, response.getResponseCode()); - - JSONObject jsonResp = new JSONObject(response.getText()); - - Assert.assertEquals(1, jsonResp.getJSONArray("result").getInt(0)); - } - - - //@Test - @Ignore("Work in progress") - public void testSet() throws Exception { - JSONObject jsonRequest = new JSONObject( - "{ \"method\": \"echoSet\", \"params\": [ {\"javaClass\": \"java.util.HashSet\", \"set\": {\"1\": \"red\", \"2\": \"blue\"}}],\"id\": 11}"); - - WebConversation wc = new WebConversation(); - WebRequest request = new PostMethodWebRequest(SERVICE_URL, - new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")), "application/json"); - WebResponse response = wc.getResource(request); - - Assert.assertEquals(200, response.getResponseCode()); - - JSONObject jsonResp = new JSONObject(response.getText()); - - Assert.assertEquals("red", jsonResp.getJSONObject("result").getJSONObject("set").getString("red")); - } - - @Test - public void testDummy() throws Exception { - - } -} \ No newline at end of file diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCExceptionTestCase.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCExceptionTestCase.java deleted file mode 100644 index b652f742b0..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCExceptionTestCase.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc; - -import java.io.ByteArrayInputStream; - -import junit.framework.Assert; - -import org.apache.tuscany.sca.host.embedded.SCADomain; -import org.json.JSONObject; -import org.junit.After; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; - -import com.meterware.httpunit.PostMethodWebRequest; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebRequest; -import com.meterware.httpunit.WebResponse; - -/** - * @version $Rev$ $Date$ - */ -public class JSONRPCExceptionTestCase{ - - private static final String SERVICE_PATH = "/EchoService"; - - private static final String SERVICE_URL = "http://localhost:8085/SCADomain" + SERVICE_PATH; - - private SCADomain domain; - - //@Before - public void setUp() throws Exception { - domain = SCADomain.newInstance("JSONRPCBinding.composite"); - } - - //@After - public void tearDown() throws Exception { - domain.close(); - } - - //@Test - @Ignore("Work in progress") - public void testRuntimeException() throws Exception{ - JSONObject jsonRequest = new JSONObject("{ \"method\": \"echoRuntimeException\", \"params\": [], \"id\": 2}"); - - WebConversation wc = new WebConversation(); - WebRequest request = new PostMethodWebRequest( SERVICE_URL, new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")),"application/json"); - WebResponse response = wc.getResource(request); - - Assert.assertEquals(200, response.getResponseCode()); - - JSONObject jsonErr = new JSONObject(response.getText()).getJSONObject("error"); - - Assert.assertEquals("Runtime Exception", jsonErr.getString("msg")); - } - - //@Test - @Ignore("Work in progress") - public void testBusinessException() throws Exception{ - JSONObject jsonRequest = new JSONObject("{ \"method\": \"echoBusinessException\", \"params\": [], \"id\": 3}"); - - WebConversation wc = new WebConversation(); - WebRequest request = new PostMethodWebRequest( SERVICE_URL, new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")),"application/json"); - WebResponse response = wc.getResource(request); - - Assert.assertEquals(200, response.getResponseCode()); - - JSONObject jsonErr = new JSONObject(response.getText()).getJSONObject("error"); - - Assert.assertEquals("Business Exception", jsonErr.getString("msg")); - } - - @Test - public void testDummy() throws Exception { - - } -} \ No newline at end of file diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCServiceTestCase.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCServiceTestCase.java deleted file mode 100644 index b9608115be..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCServiceTestCase.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc; - -import java.io.ByteArrayInputStream; - -import junit.framework.Assert; - -import org.apache.tuscany.sca.host.embedded.SCADomain; -import org.json.JSONObject; -import org.junit.After; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; - -import com.meterware.httpunit.PostMethodWebRequest; -import com.meterware.httpunit.WebConversation; -import com.meterware.httpunit.WebRequest; -import com.meterware.httpunit.WebResponse; - -/** - * @version $Rev$ $Date$ - */ -public class JSONRPCServiceTestCase { - - private static final String SERVICE_PATH = "/EchoService"; - - private static final String SERVICE_URL = "http://localhost:8085/SCADomain" + SERVICE_PATH; - - private SCADomain domain; - - //@Before - public void setUp() throws Exception { - domain = SCADomain.newInstance("JSONRPCBinding.composite"); - } - - //@After - public void tearDown() throws Exception { - domain.close(); - } - - //@Test - @Ignore("Work in progress") - public void testJSONRPCBinding() throws Exception { - JSONObject jsonRequest = new JSONObject("{ \"method\": \"echo\", \"params\": [\"Hello JSON-RPC\"], \"id\": 1}"); - - WebConversation wc = new WebConversation(); - WebRequest request = new PostMethodWebRequest( SERVICE_URL, new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")),"application/json"); - WebResponse response = wc.getResource(request); - - Assert.assertEquals(200, response.getResponseCode()); - - JSONObject jsonResp = new JSONObject(response.getText()); - Assert.assertEquals("echo: Hello JSON-RPC", jsonResp.getString("result")); - } - - @Test - public void testDummy() throws Exception { - - } -} \ No newline at end of file diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite deleted file mode 100644 index 692918fa69..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc-runtime/src/test/resources/JSONRPCBinding.composite +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/LICENSE b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/LICENSE deleted file mode 100644 index 8aa906c321..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/NOTICE b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/NOTICE deleted file mode 100644 index fdfa0e9faa..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name} -Copyright (c) 2005 - 2008 The Apache Software Foundation - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/pom.xml b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/pom.xml deleted file mode 100644 index 8841f56a86..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/pom.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - 4.0.0 - - org.apache.tuscany.sca - tuscany-modules - 1.6-SNAPSHOT - ../pom.xml - - - tuscany-binding-http-oasis-jsonrpc - Apache Tuscany SCA HTTP Binding JSON-RPC Model - - - - org.apache.tuscany.sca - tuscany-assembly - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-assembly-xml - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-binding-http-oasis - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-implementation-java-runtime - 1.6-SNAPSHOT - test - - - - junit - junit - 4.5 - test - - - - - - - - - org.apache.felix - maven-bundle-plugin - - - - ${tuscany.version} - org.apache.tuscany.sca.binding.http.wireformat.jsonrpc - ${pom.name} - org.apache.tuscany.sca.binding.http.wireformat.jsonrpc - org.apache.tuscany.sca.assembly.xml;version="1.4", * - - - - - - - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelector.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelector.java deleted file mode 100644 index 3a203312b2..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelector.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.operationselector.jsonrpc; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.OperationSelector; -import org.apache.tuscany.sca.assembly.xml.Constants; - -/** - * @version $Rev$ $Date$ - */ -public interface JSONRPCOperationSelector extends OperationSelector { - public static final QName OPERATION_SELECTOR_HTTP_JSONRPC_QNAME = new QName(Constants.SCA10_NS, "wireFormat.jsonrpc"); - - QName getSchemaName(); -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelectorFactory.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelectorFactory.java deleted file mode 100644 index 89e9924c5f..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/JSONRPCOperationSelectorFactory.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.operationselector.jsonrpc; - - -/** - * @version $Rev$ $Date$ - */ -public interface JSONRPCOperationSelectorFactory { - - /** - * Create a new JSON RPC Operation Selector - * @return - */ - JSONRPCOperationSelector createJSONRPCOperationSelector(); -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorFactoryImpl.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorFactoryImpl.java deleted file mode 100644 index 807de0302f..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorFactoryImpl.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.impl; - -import org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelector; -import org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelectorFactory; - -/** -* -* @version $Rev$ $Date$ -*/ -public class JSONRPCOperationSelectorFactoryImpl implements JSONRPCOperationSelectorFactory { - - public JSONRPCOperationSelector createJSONRPCOperationSelector() { - return new JSONRPCOperationSelectorImpl(); - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorImpl.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorImpl.java deleted file mode 100644 index 475d4dc0a1..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorImpl.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.impl; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelector; - -/** -* -* @version $Rev$ $Date$ -*/ -public class JSONRPCOperationSelectorImpl implements JSONRPCOperationSelector { - - public QName getSchemaName() { - return JSONRPCOperationSelector.OPERATION_SELECTOR_HTTP_JSONRPC_QNAME; - } - - public boolean isUnresolved() { - return false; - } - - public void setUnresolved(boolean unresolved) { - - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormat.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormat.java deleted file mode 100644 index 749119b215..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormat.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.WireFormat; -import org.apache.tuscany.sca.assembly.xml.Constants; - -/** -* -* @version $Rev$ $Date$ -*/ -public interface JSONRPCWireFormat extends WireFormat { - public static final QName WIRE_FORMAT_HTTP_JSONRPC_QNAME = new QName(Constants.SCA10_NS, "wireFormat.jsonrpc"); - - QName getSchemaName(); -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormatFactory.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormatFactory.java deleted file mode 100644 index 2ae24142a4..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/JSONRPCWireFormatFactory.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc; - -/** - * - * @version $Rev$ $Date$ - */ -public interface JSONRPCWireFormatFactory { - - /** - * Create a new JSONRPC Wire Format - * @return - */ - JSONRPCWireFormat createJSONRPCWireFormat(); -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatFactoryImpl.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatFactoryImpl.java deleted file mode 100644 index 21705736b0..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatFactoryImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.impl; - -import org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormat; -import org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormatFactory; - - -/** -* -* @version $Rev$ $Date$ -*/ -public class JSONRPCWireFormatFactoryImpl implements JSONRPCWireFormatFactory { - - public JSONRPCWireFormat createJSONRPCWireFormat() { - return new JSONRPCWireFormatImpl(); - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatImpl.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatImpl.java deleted file mode 100644 index 2fdbfc3e52..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatImpl.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.impl; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormat; - -/** -* -* @version $Rev$ $Date$ -*/ -public class JSONRPCWireFormatImpl implements JSONRPCWireFormat { - - public QName getSchemaName() { - return WIRE_FORMAT_HTTP_JSONRPC_QNAME; - } - - public boolean isUnresolved() { - return false; - } - - public void setUnresolved(boolean unresolved) { - - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelectorFactory b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelectorFactory deleted file mode 100644 index 76203fbc11..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelectorFactory +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -# Implementation class for model factory -org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.impl.JSONRPCOperationSelectorFactoryImpl diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormatFactory b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormatFactory deleted file mode 100644 index 3f72dd5a67..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormatFactory +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -# Implementation class for model factory -org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.impl.JSONRPCWireFormatFactoryImpl diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor deleted file mode 100644 index 17a340c06c..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor +++ /dev/null @@ -1,20 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -# Implementation class for the artifact processor extension -org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.0#wireFormat.jsonrpc,model=org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormat,factory=org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormatFactory -org.apache.tuscany.sca.assembly.xml.DefaultBeanModelProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.0#operationSelector.jsonrpc,model=org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelector,factory=org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelectorFactory \ No newline at end of file diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorProcessorTestCase.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorProcessorTestCase.java deleted file mode 100644 index f86f580cf6..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/operationselector/jsonrpc/impl/JSONRPCOperationSelectorProcessorTestCase.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.impl; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.StringReader; - -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.sca.assembly.Composite; -import org.apache.tuscany.sca.assembly.OperationSelector; -import org.apache.tuscany.sca.binding.http.HTTPBinding; -import org.apache.tuscany.sca.binding.http.operationselector.jsonrpc.JSONRPCOperationSelector; -import org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint; -import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; -import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; -import org.apache.tuscany.sca.core.UtilityExtensionPoint; -import org.apache.tuscany.sca.monitor.Monitor; -import org.apache.tuscany.sca.monitor.MonitorFactory; -import org.apache.tuscany.sca.monitor.impl.DefaultMonitorFactoryImpl; -import org.junit.BeforeClass; -import org.junit.Test; - - -/** -* JSON RPC operation selector processor tests -* -* @version $Rev$ $Date$ -*/ -public class JSONRPCOperationSelectorProcessorTestCase { - - public static final String COMPOSITE_WITH_OPERATION_SELECTOR = - "" - + "" - + " " - + " " - + " " - + " " - + " " - + " " - + " " - + " " - + ""; - - private static XMLInputFactory inputFactory; - private static StAXArtifactProcessor staxProcessor; - private static Monitor monitor; - - @BeforeClass - public static void setUp() throws Exception { - DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry(); - inputFactory = XMLInputFactory.newInstance(); - // Create a monitor - UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class); - MonitorFactory monitorFactory = new DefaultMonitorFactoryImpl(); - if (monitorFactory != null) { - monitor = monitorFactory.createMonitor(); - utilities.addUtility(monitorFactory); - } - StAXArtifactProcessorExtensionPoint staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint(extensionPoints); - staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, null, monitor); - - } - - /** - * Tests the APIs: - * public OperationSelector getOperationSelector(); - * - * @throws Exception - */ - @Test - public void testWireFormat() throws Exception { - XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(COMPOSITE_WITH_OPERATION_SELECTOR)); - - Composite composite = (Composite)staxProcessor.read(reader); - HTTPBinding binding = (HTTPBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); - assertNotNull(binding); - - OperationSelector operationSelector = binding.getOperationSelector(); - assertEquals(JSONRPCOperationSelector.class, operationSelector.getClass().getInterfaces()[0]); - } -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatProcessorTestCase.java b/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatProcessorTestCase.java deleted file mode 100644 index 8d08f2a450..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-jsonrpc/src/test/java/org/apache/tuscany/sca/binding/http/wireformat/jsonrpc/impl/JSONRPCWireFormatProcessorTestCase.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.impl; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.StringReader; - -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.sca.assembly.Composite; -import org.apache.tuscany.sca.assembly.WireFormat; -import org.apache.tuscany.sca.binding.http.HTTPBinding; -import org.apache.tuscany.sca.binding.http.wireformat.jsonrpc.JSONRPCWireFormat; -import org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint; -import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; -import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; -import org.apache.tuscany.sca.core.UtilityExtensionPoint; -import org.apache.tuscany.sca.monitor.Monitor; -import org.apache.tuscany.sca.monitor.MonitorFactory; -import org.apache.tuscany.sca.monitor.impl.DefaultMonitorFactoryImpl; -import org.junit.BeforeClass; -import org.junit.Test; - - -/** -* JSON RPC wire format processor tests -* -* @version $Rev$ $Date$ -*/ -public class JSONRPCWireFormatProcessorTestCase { - - public static final String COMPOSITE_WITH_WIRE_FORMAT = - "" - + "" - + " " - + " " - + " " - + " " - + " " - + " " - + " " - + " " - + ""; - - private static XMLInputFactory inputFactory; - private static StAXArtifactProcessor staxProcessor; - private static Monitor monitor; - - @BeforeClass - public static void setUp() throws Exception { - DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry(); - inputFactory = XMLInputFactory.newInstance(); - // Create a monitor - UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class); - MonitorFactory monitorFactory = new DefaultMonitorFactoryImpl(); - if (monitorFactory != null) { - monitor = monitorFactory.createMonitor(); - utilities.addUtility(monitorFactory); - } - StAXArtifactProcessorExtensionPoint staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint(extensionPoints); - staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, null, monitor); - - } - - /** - * Tests the APIs: - * public WireFormat getRequstWireFormat(); - * public WireFormat getResponseWireFormat(); - * - * @throws Exception - */ - @Test - public void testWireFormat() throws Exception { - XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(COMPOSITE_WITH_WIRE_FORMAT)); - - Composite composite = (Composite)staxProcessor.read(reader); - HTTPBinding binding = (HTTPBinding) composite.getComponents().get(0).getServices().get(0).getBindings().get(0); - assertNotNull(binding); - - WireFormat requestWireFormat = binding.getRequestWireFormat(); - assertEquals(JSONRPCWireFormat.class, requestWireFormat.getClass().getInterfaces()[0]); - - WireFormat responseWireFormat = binding.getResponseWireFormat(); - assertEquals(JSONRPCWireFormat.class, responseWireFormat.getClass().getInterfaces()[0]); - } -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/LICENSE b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/LICENSE deleted file mode 100644 index 8aa906c321..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/NOTICE b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/NOTICE deleted file mode 100644 index fdfa0e9faa..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name} -Copyright (c) 2005 - 2008 The Apache Software Foundation - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/pom.xml b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/pom.xml deleted file mode 100644 index f2d66847ea..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/pom.xml +++ /dev/null @@ -1,120 +0,0 @@ - - - - 4.0.0 - - org.apache.tuscany.sca - tuscany-modules - 1.6-SNAPSHOT - ../pom.xml - - - tuscany-binding-http-oasis-runtime - Apache Tuscany SCA HTTP OASIS Binding Runtime - - - - org.apache.tuscany.sca - tuscany-binding-http-oasis - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-policy-security-http - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-core-spi - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-host-http - 1.6-SNAPSHOT - - - - javax.servlet - servlet-api - 2.5 - provided - - - - org.apache.tuscany.sca - tuscany-host-embedded - 1.6-SNAPSHOT - test - - - - org.apache.tuscany.sca - tuscany-host-jetty - 1.6-SNAPSHOT - test - - - - org.apache.tuscany.sca - tuscany-implementation-resource-runtime - 1.6-SNAPSHOT - test - - - - org.apache.tuscany.sca - tuscany-implementation-java-runtime - 1.6-SNAPSHOT - test - - - - junit - junit - 4.5 - test - - - - - - - - - org.apache.felix - maven-bundle-plugin - - - - ${tuscany.version} - org.apache.tuscany.sca.binding.http.runtime - ${pom.name} - org.apache.tuscany.sca.binding.http* - - - - - - - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingListenerServlet.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingListenerServlet.java deleted file mode 100644 index 41be041621..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingListenerServlet.java +++ /dev/null @@ -1,516 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.provider; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URLDecoder; -import java.text.ParseException; -import java.util.List; - -import javax.servlet.ServletException; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.binding.http.HTTPCacheContext; -import org.apache.tuscany.sca.binding.http.util.HTTPHeadersParser; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.invocation.MessageFactory; -import org.apache.tuscany.sca.policy.Intent; -import org.apache.tuscany.sca.policy.PolicySet; -import org.apache.tuscany.sca.policy.PolicySetAttachPoint; -import org.apache.tuscany.sca.policy.authentication.basic.BasicAuthenticationPolicy; - -/** - * Servlet responsible for dispatching HTTP requests to the - * target component implementation. - * - * @version $Rev$ $Date$ - */ -public class HTTPBindingListenerServlet extends HttpServlet { - private static final long serialVersionUID = 2865466417329430610L; - - private static final QName AUTEHTICATION_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0","authentication"); - - transient private Binding binding; - - transient private boolean requiresAuthentication = false; - transient private BasicAuthenticationPolicy basicAuthenticationPolicy = null; - - private MessageFactory messageFactory; - private Invoker getInvoker; - private Invoker conditionalGetInvoker; - private Invoker putInvoker; - private Invoker conditionalPutInvoker; - private Invoker postInvoker; - private Invoker conditionalPostInvoker; - private Invoker deleteInvoker; - private Invoker conditionalDeleteInvoker; - - /** - * Constructs a new HTTPServiceListenerServlet. - */ - public HTTPBindingListenerServlet(Binding binding, MessageFactory messageFactory) { - this.binding = binding; - this.messageFactory = messageFactory; - - - // find out which policies are active - if (binding instanceof PolicySetAttachPoint) { - List intents = ((PolicySetAttachPoint)binding).getRequiredIntents(); - for(Intent intent : intents) { - if(intent.getName().equals(AUTEHTICATION_INTENT)) { - requiresAuthentication = true; - } - } - - - List policySets = ((PolicySetAttachPoint)binding).getApplicablePolicySets(); - for (PolicySet ps : policySets) { - for (Object p : ps.getPolicies()) { - if (BasicAuthenticationPolicy.class.isInstance(p)) { - basicAuthenticationPolicy = (BasicAuthenticationPolicy)p; - } else { - // etc. check for other types of policy being present - } - } - } - } - } - - - @Override - protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - - if(requiresAuthentication) { - if(! hasAuthorization(request, response)) { - response.setHeader("WWW-Authenticate", "BASIC realm=\"Tuscany\""); - response.sendError(HttpServletResponse.SC_UNAUTHORIZED); - } - } - - super.service(request, response); - } - - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - // Get the request path - String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8"); - if (path.length() ==0) { - // Redirect to a URL ending with / to make relative hrefs work - // relative to the served resource. - response.sendRedirect(request.getRequestURL().append('/').toString()); - return; - } - - // Invoke the get operation on the service implementation - Message requestMessage = messageFactory.createMessage(); - - //store http headers to message - requestMessage.getHeaders().addAll(HTTPHeadersParser.getHeaders(request)); - - String id = path.substring(1); - - Message responseMessage = null; - HTTPCacheContext cacheContext = null; - try { - cacheContext = HTTPCacheContext.getCacheContextFromRequest(request); - } catch (ParseException e) { - } - - // Route message based on availability of cache info and cache methods - if (( cacheContext != null ) && (cacheContext.isEnabled()) && (conditionalGetInvoker != null )) { - requestMessage.setBody(new Object[] {id, cacheContext}); - responseMessage = conditionalGetInvoker.invoke(requestMessage); - } else { - requestMessage.setBody(new Object[] {id}); - responseMessage = getInvoker.invoke(requestMessage); - } - if (responseMessage.isFault()) { - Object body = responseMessage.getBody(); - - int index = -1; - if ( -1 < (index = body.getClass().getName().indexOf( "NotModifiedException")) ) { - if ( index > -1 ) - response.sendError( HttpServletResponse.SC_NOT_MODIFIED, body.toString().substring( index )); - else - response.sendError( HttpServletResponse.SC_NOT_MODIFIED ); - return; - } else if ( -1 < (index = body.getClass().getName().indexOf( "PreconditionFailedException")) ) { - if ( index > -1 ) - response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED, body.toString().substring( index )); - else - response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED ); - return; - } - - throw new ServletException((Throwable)responseMessage.getBody()); - } - - // Write the response from the service implementation to the response - // output stream - InputStream is = (InputStream)responseMessage.getBody(); - OutputStream os = response.getOutputStream(); - byte[] buffer = new byte[2048]; - for (;;) { - int n = is.read(buffer); - if (n <= 0) - break; - os.write(buffer, 0, n); - } - os.flush(); - os.close(); - } - - @Override - protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - // Get the request path - String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8"); - if (path.length() ==0) { - // Redirect to a URL ending with / to make relative hrefs work - // relative to the served resource. - response.sendRedirect(request.getRequestURL().append('/').toString()); - return; - } - - // Invoke the get operation on the service implementation - Message requestMessage = messageFactory.createMessage(); - String id = path.substring(1); - - Message responseMessage = null; - HTTPCacheContext cacheContext = null; - try { - cacheContext = HTTPCacheContext.getCacheContextFromRequest(request); - } catch (ParseException e) { - } - - // Route message based on availability of cache info and cache methods - if (( cacheContext != null ) && (cacheContext.isEnabled()) && (conditionalDeleteInvoker != null )) { - requestMessage.setBody(new Object[] {id, cacheContext}); - responseMessage = conditionalDeleteInvoker.invoke(requestMessage); - } else { - requestMessage.setBody(new Object[] {id}); - responseMessage = deleteInvoker.invoke(requestMessage); - } - if (responseMessage.isFault()) { - Object body = responseMessage.getBody(); - - int index = -1; - if ( -1 < (index = body.getClass().getName().indexOf( "NotModifiedException")) ) { - if ( index > -1 ) - response.sendError( HttpServletResponse.SC_NOT_MODIFIED, body.toString().substring( index )); - else - response.sendError( HttpServletResponse.SC_NOT_MODIFIED ); - return; - } else if ( -1 < (index = body.getClass().getName().indexOf( "PreconditionFailedException")) ) { - if ( index > -1 ) - response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED, body.toString().substring( index )); - else - response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED ); - return; - } - - throw new ServletException((Throwable)responseMessage.getBody()); - } - - // Write the response from the service implementation to the response - // output stream - InputStream is = (InputStream)responseMessage.getBody(); - OutputStream os = response.getOutputStream(); - byte[] buffer = new byte[2048]; - for (;;) { - int n = is.read(buffer); - if (n <= 0) - break; - os.write(buffer, 0, n); - } - os.flush(); - os.close(); - } - - @Override - protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - // Get the request path - String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8"); - if (path.length() ==0) { - // Redirect to a URL ending with / to make relative hrefs work - // relative to the served resource. - response.sendRedirect(request.getRequestURL().append('/').toString()); - return; - } - - // Invoke the get operation on the service implementation - Message requestMessage = messageFactory.createMessage(); - String id = path.substring(1); - - Message responseMessage = null; - HTTPCacheContext cacheContext = null; - try { - cacheContext = HTTPCacheContext.getCacheContextFromRequest(request); - } catch (ParseException e) { - } - - // Route message based on availability of cache info and cache methods - if (( cacheContext != null ) && (cacheContext.isEnabled()) && (conditionalPutInvoker != null )) { - requestMessage.setBody(new Object[] {id, cacheContext}); - responseMessage = conditionalPutInvoker.invoke(requestMessage); - } else { - requestMessage.setBody(new Object[] {id}); - responseMessage = putInvoker.invoke(requestMessage); - } - if (responseMessage.isFault()) { - Object body = responseMessage.getBody(); - - int index = -1; - if ( -1 < (index = body.getClass().getName().indexOf( "NotModifiedException")) ) { - if ( index > -1 ) - response.sendError( HttpServletResponse.SC_NOT_MODIFIED, body.toString().substring( index )); - else - response.sendError( HttpServletResponse.SC_NOT_MODIFIED ); - return; - } else if ( -1 < (index = body.getClass().getName().indexOf( "PreconditionFailedException")) ) { - if ( index > -1 ) - response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED, body.toString().substring( index )); - else - response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED ); - return; - } - - throw new ServletException((Throwable)responseMessage.getBody()); - } - - // Write the response from the service implementation to the response - // output stream - InputStream is = (InputStream)responseMessage.getBody(); - OutputStream os = response.getOutputStream(); - byte[] buffer = new byte[2048]; - for (;;) { - int n = is.read(buffer); - if (n <= 0) - break; - os.write(buffer, 0, n); - } - os.flush(); - os.close(); - } - - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - // Get the request path - String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8"); - if (path.length() ==0) { - // Redirect to a URL ending with / to make relative hrefs work - // relative to the served resource. - response.sendRedirect(request.getRequestURL().append('/').toString()); - return; - } - - // Invoke the get operation on the service implementation - Message requestMessage = messageFactory.createMessage(); - // String id = path.substring(1); - - Message responseMessage = null; - HTTPCacheContext cacheContext = null; - try { - cacheContext = HTTPCacheContext.getCacheContextFromRequest(request); - } catch (ParseException e) { - } - - // Route message based on availability of cache info and cache methods - if (( cacheContext != null ) && (cacheContext.isEnabled()) && (conditionalPostInvoker != null )) { - requestMessage.setBody(new Object[] {cacheContext}); - responseMessage = conditionalPostInvoker.invoke(requestMessage); - } else { - requestMessage.setBody(new Object[] {}); - responseMessage = postInvoker.invoke(requestMessage); - } - if (responseMessage.isFault()) { - Object body = responseMessage.getBody(); - - int index = -1; - if ( -1 < (index = body.getClass().getName().indexOf( "NotModifiedException")) ) { - if ( index > -1 ) - response.sendError( HttpServletResponse.SC_NOT_MODIFIED, body.toString().substring( index )); - else - response.sendError( HttpServletResponse.SC_NOT_MODIFIED ); - return; - } else if ( -1 < (index = body.getClass().getName().indexOf( "PreconditionFailedException")) ) { - if ( index > -1 ) - response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED, body.toString().substring( index )); - else - response.sendError( HttpServletResponse.SC_PRECONDITION_FAILED ); - return; - } - - throw new ServletException((Throwable)responseMessage.getBody()); - } - - - // Test if the ETag and LastModified are returned as a cache context. - Object body = responseMessage.getBody(); - if ( body.getClass() == HTTPCacheContext.class ) { - // Transfer to header if so. - HTTPCacheContext cc = (HTTPCacheContext)responseMessage.getBody(); - if (( cc != null ) && ( cc.isEnabled() )) { - String eTag = cc.getETag(); - if ( eTag != null ) - response.setHeader( "ETag", cc.getETag() ); - String lastModified = cc.getLastModified(); - if ( lastModified != null) - response.setHeader( "LastModified", cc.getLastModified() ); - } - } - } - - /** - * @return the getInvoker - */ - public Invoker getGetInvoker() { - return getInvoker; - } - - /** - * @param getInvoker the getInvoker to set - */ - public void setGetInvoker(Invoker getInvoker) { - this.getInvoker = getInvoker; - } - - /** - * @return the conditionalGetInvoker - */ - public Invoker getConditionalGetInvoker() { - return conditionalGetInvoker; - } - - /** - * @param conditionalGetInvoker the conditionalGetInvoker to set - */ - public void setConditionalGetInvoker(Invoker conditionalGetInvoker) { - this.conditionalGetInvoker = conditionalGetInvoker; - } - - /** - * @return the putInvoker - */ - public Invoker getPutInvoker() { - return putInvoker; - } - - /** - * @param putInvoker the putInvoker to set - */ - public void setPutInvoker(Invoker putInvoker) { - this.putInvoker = putInvoker; - } - - /** - * @return the conditionalPutInvoker - */ - public Invoker getConditionalPutInvoker() { - return conditionalPutInvoker; - } - - /** - * @param conditionalPutInvoker the conditionalPutInvoker to set - */ - public void setConditionalPutInvoker(Invoker conditionalPutInvoker) { - this.conditionalPutInvoker = conditionalPutInvoker; - } - - /** - * @return the postInvoker - */ - public Invoker getPostInvoker() { - return postInvoker; - } - - /** - * @param postInvoker the postInvoker to set - */ - public void setPostInvoker(Invoker postInvoker) { - this.postInvoker = postInvoker; - } - - /** - * @return the conditionalPostInvoker - */ - public Invoker getConditionalPostInvoker() { - return conditionalPostInvoker; - } - - /** - * @param conditionalPostInvoker the conditionalPostInvoker to set - */ - public void setConditionalPostInvoker(Invoker conditionalPostInvoker) { - this.conditionalPostInvoker = conditionalPostInvoker; - } - - /** - * @return the deleteInvoker - */ - public Invoker getDeleteInvoker() { - return deleteInvoker; - } - - /** - * @param deleteInvoker the deleteInvoker to set - */ - public void setDeleteInvoker(Invoker deleteInvoker) { - this.deleteInvoker = deleteInvoker; - } - - /** - * @return the conditionalDeleteInvoker - */ - public Invoker getConditionalDeleteInvoker() { - return conditionalDeleteInvoker; - } - - /** - * @param conditionalDeleteInvoker the conditionalDeleteInvoker to set - */ - public void setConditionalDeleteInvoker(Invoker conditionalDeleteInvoker) { - this.conditionalDeleteInvoker = conditionalDeleteInvoker; - } - - - /** - * Utility Methods related to Policy - */ - - - private boolean hasAuthorization(HttpServletRequest request, ServletResponse response) { - boolean result = false; - if(request.getHeader("Authorization") != null) { - result = true; - } - - return result; - } - - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingProviderFactory.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingProviderFactory.java deleted file mode 100644 index fccd10f3cd..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPBindingProviderFactory.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.provider; - -import org.apache.tuscany.sca.binding.http.HTTPBinding; -import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.host.http.ServletHost; -import org.apache.tuscany.sca.host.http.ServletHostExtensionPoint; -import org.apache.tuscany.sca.invocation.MessageFactory; -import org.apache.tuscany.sca.provider.BindingProviderFactory; -import org.apache.tuscany.sca.provider.ReferenceBindingProvider; -import org.apache.tuscany.sca.provider.ServiceBindingProvider; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - - -/** - * Factory for HTTP binding providers. - * - * @version $Rev$ $Date$ - */ -public class HTTPBindingProviderFactory implements BindingProviderFactory { - - private MessageFactory messageFactory; - private ServletHost servletHost; - - public HTTPBindingProviderFactory(ExtensionPointRegistry extensionPoints) { - ServletHostExtensionPoint servletHosts = extensionPoints.getExtensionPoint(ServletHostExtensionPoint.class); - this.servletHost = servletHosts.getServletHosts().get(0); - ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class); - messageFactory = modelFactories.getFactory(MessageFactory.class); - } - - public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, RuntimeComponentReference reference, HTTPBinding binding) { - return null; - } - - public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, RuntimeComponentService service, HTTPBinding binding) { - return new HTTPServiceBindingProvider(component, service, binding, messageFactory, servletHost); - } - - public Class getModelType() { - return HTTPBinding.class; - } -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPGetListenerServlet.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPGetListenerServlet.java deleted file mode 100644 index e20d420d49..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPGetListenerServlet.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.provider; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URLDecoder; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.invocation.MessageFactory; - -/** - * Servlet responsible for dispatching HTTP GET requests to the - * target component implementation. - * - * @version $Rev$ $Date$ - */ -public class HTTPGetListenerServlet extends HttpServlet { - private static final long serialVersionUID = 2865466417329430610L; - - private MessageFactory messageFactory; - private Invoker getInvoker; - - /** - * Constructs a new HTTPServiceListenerServlet. - */ - public HTTPGetListenerServlet(Invoker getInvoker, MessageFactory messageFactory) { - this.getInvoker = getInvoker; - this.messageFactory = messageFactory; - } - - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - - // Get the request path - String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8"); - if (path.length() ==0) { - - // Redirect to a URL ending with / to make relative hrefs work - // relative to the served resource. - response.sendRedirect(request.getRequestURL().append('/').toString()); - return; - } - - // Invoke the get operation on the service implementation - Message requestMessage = messageFactory.createMessage(); - String id = path.substring(1); - requestMessage.setBody(new Object[] {id}); - Message responseMessage = getInvoker.invoke(requestMessage); - if (responseMessage.isFault()) { - throw new ServletException((Throwable)responseMessage.getBody()); - } - - // Write the response from the service implementation to the response - // output stream - InputStream is = (InputStream)responseMessage.getBody(); - OutputStream os = response.getOutputStream(); - byte[] buffer = new byte[2048]; - for (;;) { - int n = is.read(buffer); - if (n <= 0) - break; - os.write(buffer, 0, n); - } - os.flush(); - os.close(); - - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java deleted file mode 100644 index 6e01ac5f9f..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceBindingProvider.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.provider; - -import java.util.List; - -import javax.servlet.Servlet; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.binding.http.HTTPBinding; -import org.apache.tuscany.sca.host.http.SecurityContext; -import org.apache.tuscany.sca.host.http.ServletHost; -import org.apache.tuscany.sca.interfacedef.InterfaceContract; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.invocation.InvocationChain; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.MessageFactory; -import org.apache.tuscany.sca.policy.Intent; -import org.apache.tuscany.sca.policy.PolicySet; -import org.apache.tuscany.sca.policy.PolicySetAttachPoint; -import org.apache.tuscany.sca.policy.authentication.AuthenticationConfigurationPolicy; -import org.apache.tuscany.sca.policy.confidentiality.ConfidentialityPolicy; -import org.apache.tuscany.sca.provider.ServiceBindingProvider; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; -import org.apache.tuscany.sca.runtime.RuntimeWire; - -/** - * Implementation of an HTTP binding provider. - * - * @version $Rev$ $Date$ - */ -public class HTTPServiceBindingProvider implements ServiceBindingProvider { - private static final QName AUTEHTICATION_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0","authentication"); - private static final QName CONFIDENTIALITY_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0","confidentiality"); - - private RuntimeComponentService service; - private HTTPBinding binding; - private MessageFactory messageFactory; - - private ServletHost servletHost; - private String servletMapping; - private HTTPBindingListenerServlet bindingListenerServlet; - - public HTTPServiceBindingProvider(RuntimeComponent component, - RuntimeComponentService service, - HTTPBinding binding, - MessageFactory messageFactory, - ServletHost servletHost) { - this.service = service; - this.binding = binding; - this.messageFactory = messageFactory; - this.servletHost = servletHost; - } - - public void start() { - // Get the invokers for the supported operations - RuntimeComponentService componentService = (RuntimeComponentService) service; - RuntimeWire wire = componentService.getRuntimeWire(binding); - Servlet servlet = null; - bindingListenerServlet = new HTTPBindingListenerServlet(binding, messageFactory ); - for (InvocationChain invocationChain : wire.getInvocationChains()) { - Operation operation = invocationChain.getTargetOperation(); - String operationName = operation.getName(); - if (operationName.equals("get")) { - Invoker getInvoker = invocationChain.getHeadInvoker(); - bindingListenerServlet.setGetInvoker(getInvoker); - servlet = bindingListenerServlet; - } else if (operationName.equals("conditionalGet")) { - Invoker conditionalGetInvoker = invocationChain.getHeadInvoker(); - bindingListenerServlet.setConditionalGetInvoker(conditionalGetInvoker); - servlet = bindingListenerServlet; - } else if (operationName.equals("delete")) { - Invoker deleteInvoker = invocationChain.getHeadInvoker(); - bindingListenerServlet.setDeleteInvoker(deleteInvoker); - servlet = bindingListenerServlet; - } else if (operationName.equals("conditionalDelete")) { - Invoker conditionalDeleteInvoker = invocationChain.getHeadInvoker(); - bindingListenerServlet.setConditionalDeleteInvoker(conditionalDeleteInvoker); - servlet = bindingListenerServlet; - } else if (operationName.equals("put")) { - Invoker putInvoker = invocationChain.getHeadInvoker(); - bindingListenerServlet.setPutInvoker(putInvoker); - servlet = bindingListenerServlet; - } else if (operationName.equals("conditionalPut")) { - Invoker conditionalPutInvoker = invocationChain.getHeadInvoker(); - bindingListenerServlet.setConditionalPutInvoker(conditionalPutInvoker); - servlet = bindingListenerServlet; - } else if (operationName.equals("post")) { - Invoker postInvoker = invocationChain.getHeadInvoker(); - bindingListenerServlet.setPostInvoker(postInvoker); - servlet = bindingListenerServlet; - } else if (operationName.equals("conditionalPost")) { - Invoker conditionalPostInvoker = invocationChain.getHeadInvoker(); - bindingListenerServlet.setConditionalPostInvoker(conditionalPostInvoker); - servlet = bindingListenerServlet; - } else if (operationName.equals("service")) { - Invoker serviceInvoker = invocationChain.getHeadInvoker(); - servlet = new HTTPServiceListenerServlet(binding, serviceInvoker, messageFactory); - break; - } - } - if (servlet == null) { - throw new IllegalStateException("No get or service method found on the service"); - } - - // Create our HTTP service listener Servlet and register it with the - // Servlet host - servletMapping = binding.getURI(); - if (!servletMapping.endsWith("/")) { - servletMapping += "/"; - } - if (!servletMapping.endsWith("*")) { - servletMapping += "*"; - } - - - SecurityContext securityContext = new SecurityContext(); - boolean isConfidentialityRequired = false; - boolean isAuthenticationRequired = false; - - - // find out which policies are active - if (binding instanceof PolicySetAttachPoint) { - List intents = ((PolicySetAttachPoint)binding).getRequiredIntents(); - for(Intent intent : intents) { - if (intent.getName().equals(AUTEHTICATION_INTENT)) { - isAuthenticationRequired = true; - } else if (intent.getName().equals(CONFIDENTIALITY_INTENT)) { - isConfidentialityRequired = true; - } - } - - List policySets = ((PolicySetAttachPoint)binding).getApplicablePolicySets(); - for (PolicySet ps : policySets) { - for (Object p : ps.getPolicies()) { - if (ConfidentialityPolicy.class.isInstance(p) && isConfidentialityRequired) { - //Handle enabling and configuring SSL - ConfidentialityPolicy confidentialityPolicy = (ConfidentialityPolicy)p; - - securityContext.setSSLEnabled(true); - securityContext.setSSLProperties(confidentialityPolicy.toProperties()); - } else if(AuthenticationConfigurationPolicy.class.isInstance(p) && isAuthenticationRequired) { - // Handle authentication and user configuration - AuthenticationConfigurationPolicy authenticationConfiguration = (AuthenticationConfigurationPolicy)p; - - securityContext.setAuthenticationEnabled(true); - securityContext.getUsers().clear(); - securityContext.getUsers().addAll(authenticationConfiguration.getUsers()); - } - } - } - } - - - servletHost.addServletMapping(servletMapping, servlet, securityContext); - } - - public void stop() { - // Unregister the Servlet from the Servlet host - servletHost.removeServletMapping(servletMapping); - } - - public InterfaceContract getBindingInterfaceContract() { - return null; - } - - public boolean supportsOneWayInvocation() { - return false; - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceListenerServlet.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceListenerServlet.java deleted file mode 100644 index 493255655d..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/provider/HTTPServiceListenerServlet.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.provider; - -import java.io.IOException; -import java.util.List; - -import javax.servlet.Servlet; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.invocation.MessageFactory; -import org.apache.tuscany.sca.policy.Intent; -import org.apache.tuscany.sca.policy.PolicySet; -import org.apache.tuscany.sca.policy.PolicySetAttachPoint; -import org.apache.tuscany.sca.policy.authentication.basic.BasicAuthenticationPolicy; - -/** - * Servlet responsible for dispatching HTTP service requests to the - * target component implementation. - * - * @version $Rev$ $Date$ - */ -public class HTTPServiceListenerServlet implements Servlet { - private static final QName AUTEHTICATION_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0","authentication"); - - transient private Binding binding; - transient private ServletConfig config; - transient private MessageFactory messageFactory; - transient private Invoker serviceInvoker; - - transient private boolean requiresAuthentication = false; - transient private BasicAuthenticationPolicy basicAuthenticationPolicy = null; - - /** - * Constructs a new HTTPServiceListenerServlet. - */ - public HTTPServiceListenerServlet(Binding binding, Invoker serviceInvoker, MessageFactory messageFactory) { - this.binding = binding; - this.serviceInvoker = serviceInvoker; - this.messageFactory = messageFactory; - - // find out which policies are active - if (binding instanceof PolicySetAttachPoint) { - List intents = ((PolicySetAttachPoint)binding).getRequiredIntents(); - for(Intent intent : intents) { - if(intent.getName().equals(AUTEHTICATION_INTENT)) { - requiresAuthentication = true; - } - } - - - List policySets = ((PolicySetAttachPoint)binding).getApplicablePolicySets(); - for (PolicySet ps : policySets) { - for (Object p : ps.getPolicies()) { - if (BasicAuthenticationPolicy.class.isInstance(p)) { - basicAuthenticationPolicy = (BasicAuthenticationPolicy)p; - } else { - // etc. check for other types of policy being present - } - } - } - } - } - - public ServletConfig getServletConfig() { - return config; - } - - public String getServletInfo() { - return ""; - } - - public void init(ServletConfig config) throws ServletException { - this.config = config; - } - - public void destroy() { - - } - - public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { - - if(requiresAuthentication) { - if(! hasAuthenticationHeader((HttpServletRequest)request, (HttpServletResponse)response)) { - ((HttpServletResponse)response).sendError(HttpServletResponse.SC_UNAUTHORIZED); - } - } - - // Dispatch the service interaction to the service invoker - Message requestMessage = messageFactory.createMessage(); - requestMessage.setBody(new Object[]{request, response}); - Message responseMessage = serviceInvoker.invoke(requestMessage); - if (responseMessage.isFault()) { - // Turn a fault into an exception - //throw new ServletException((Throwable)responseMessage.getBody()); - Throwable e = (Throwable)responseMessage.getBody(); - ((HttpServletResponse)response).sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString()); - } - } - - - private boolean hasAuthenticationHeader(HttpServletRequest request, ServletResponse response) { - boolean result = false; - if(request.getHeader("Authorization") != null) { - result = true; - } - - return result; - } -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/util/HTTPHeadersParser.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/util/HTTPHeadersParser.java deleted file mode 100644 index 1fe4600e31..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/java/org/apache/tuscany/sca/binding/http/util/HTTPHeadersParser.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.util; - -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - -import org.apache.tuscany.sca.binding.http.HTTPHeader; - -public class HTTPHeadersParser { - - /** - * Parse http request headers to a map - * - * @param request - * @return - */ - public static List getHeaders(HttpServletRequest request) { - List headers = new ArrayList(); - - Enumeration headerNames = request.getHeaderNames(); - while (headerNames.hasMoreElements()) { - String headerName = (String) headerNames.nextElement(); - Object headerValue = request.getHeader(headerName); - HTTPHeader header = new HTTPHeader(headerName, headerValue); - headers.add(header); - } - return headers; - } -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory deleted file mode 100644 index 0fa8d44c08..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -# Implementation class for the binding extension -org.apache.tuscany.sca.binding.http.provider.HTTPBindingProviderFactory;model=org.apache.tuscany.sca.binding.http.HTTPBinding diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingCacheTestCase.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingCacheTestCase.java deleted file mode 100644 index bb5f6d5a8b..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingCacheTestCase.java +++ /dev/null @@ -1,855 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.binding.http; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.net.Socket; -import java.text.MessageFormat; -import java.text.SimpleDateFormat; -import java.util.Date; - -import junit.framework.TestCase; - -import org.apache.tuscany.sca.host.embedded.SCADomain; - -/** - * HTTP binding unit tests. - * - * @version $Rev$ $Date$ - */ -public class HTTPBindingCacheTestCase extends TestCase { - // RFC 822 date time - protected static final SimpleDateFormat dateFormat = new SimpleDateFormat( - "EEE, dd MMM yyyy HH:mm:ss Z"); - - // Request with no predicates in header. - private static final String REQUEST1 = "{0} /httpbinding/{1} HTTP/1.0\n" - + "Host: localhost\n" + "Content-Type: text/xml\n" - + "Connection: close\n" + "Content-Length: {2}" + "\n\n{3}"; - - // Request with predicates in header - private static final String REQUEST2 = "{0} /httpbinding/{1} HTTP/1.0\n" - + "Host: localhost\n" + "Content-Type: text/xml\n" + "{2}: {3}\n" // predicate (If-Match, If-None-Match, If-Modified-Since, If-NotModified-Since): value (date or ETag) - + "Connection: close\n" + "Content-Length: {4}" + "\n\n{5}"; - - private static final int HTTP_PORT = 8085; - - private SCADomain scaDomain; - - @Override - protected void setUp() throws Exception { - scaDomain = SCADomain.newInstance("testCache.composite"); - } - - @Override - protected void tearDown() throws Exception { - scaDomain.close(); - } - - /** - * Test invoking a POJO get method implementation using the HTTP binding. - * @throws Exception - */ - public void testGet() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST1, "GET", index, content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - assertTrue(document.indexOf("

item=" + index) != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalGetIfModifiedNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "GET", index, - "If-Modified-Since", dateFormat.format(new Date(0)), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - assertTrue(document.indexOf("

item=" + index) != -1); - // Should return code 304 Not Modified. - // assertTrue(document.indexOf("HTTP/1.1 304") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalGetIfModifiedPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "GET", index, - "If-Modified-Since", dateFormat.format(new Date(0)), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("

item=" + index) != -1); - // Should return code 304 Not Modified. - assertTrue(document.indexOf("HTTP/1.1 304") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalGetIfUnmodifiedNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "GET", index, - "If-Unmodified-Since", dateFormat.format(new Date()), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - assertTrue(document.indexOf("

item=" + index) != -1); - // Should return code 304 Not Modified. - // assertTrue(document.indexOf("HTTP/1.1 304") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalGetIfUnmodifiedPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "GET", index, - "If-Unmodified-Since", dateFormat.format(new Date(0)), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("

item=" + index) != -1); - // Should return code 412 PreconditionFailed. - assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalGetIfMatchNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "GET", index, - "If-Match", "eTagXXX", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("

item=" + index) != -1); - // Should return code 412 precondition failed. - assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalGetIfMatchPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "GET", index, - "If-Match", "eTagXXX", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - assertTrue(document.indexOf("

item=" + index) != -1); - // Should return code 412 PreconditionFailed. - // assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalGetIfNoneMatchNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "GET", index, - "If-None-Match", "eTagXXX", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - assertTrue(document.indexOf("

item=" + index) != -1); - // Should return code 412 precondition failed. - // assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalGetIfNoneMatchPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "GET", index, - "If-None-Match", "eTagXXX", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("

item=" + index) != -1); - // Should return code 412 PreconditionFailed. - assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a POJO get method implementation using the HTTP binding. - * @throws Exception - */ - public void testDelete() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST1, "DELETE", index, - content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - assertTrue(document.indexOf("deleted item=" + index) != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalDeleteIfModifiedNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "DELETE", index, - "If-Modified-Since", dateFormat.format(new Date(0)), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - assertTrue(document.indexOf("deleted item=" + index) != -1); - // Should return code 304 Not Modified. - // assertTrue(document.indexOf("HTTP/1.1 304") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalDeleteIfModifiedPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "DELETE", index, - "If-Modified-Since", dateFormat.format(new Date(0)), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("deleted item=" + index) != -1); - // Should return code 304 Not Modified. - assertTrue(document.indexOf("HTTP/1.1 304") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalDeleteIfUnmodifiedNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "DELETE", index, - "If-Unmodified-Since", dateFormat.format(new Date()), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - assertTrue(document.indexOf("deleted item=" + index) != -1); - // Should return code 304 Not Modified. - // assertTrue(document.indexOf("HTTP/1.1 304") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalDeleteIfUnmodifiedPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "DELETE", index, - "If-Unmodified-Since", dateFormat.format(new Date(0)), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("deleted item=" + index) != -1); - // Should return code 412 PreconditionFailed. - assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalDeleteIfMatchNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "DELETE", index, - "If-Match", "eTagXXX", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("deleted item=" + index) != -1); - // Should return code 412 precondition failed. - assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalDeleteIfMatchPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "DELETE", index, - "If-Match", "eTagXXX", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - assertTrue(document.indexOf("deleted item=" + index) != -1); - // Should return code 412 PreconditionFailed. - // assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalDeleteIfNoneMatchNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "DELETE", index, - "If-None-Match", "eTagXXX", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - assertTrue(document.indexOf("deleted item=" + index) != -1); - // Should return code 412 precondition failed. - // assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalDeleteIfNoneMatchPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "DELETE", index, - "If-None-Match", "eTagXXX", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("deleted item=" + index) != -1); - // Should return code 412 PreconditionFailed. - assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a POJO get method implementation using the HTTP binding. - * @throws Exception - */ - public void testPost() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST1, "POST", index, content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - assertTrue(document.indexOf("HTTP/1.1 200 OK") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPostIfModifiedNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "POST", index, - "If-Modified-Since", dateFormat.format(new Date()), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return code 200 OK - // assertTrue(document.indexOf("posted item=" + index) != -1); - assertTrue(document.indexOf("HTTP/1.1 200 OK") != -1); - // Should return code 304 Not Modified. - // assertTrue(document.indexOf("HTTP/1.1 304") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPostIfModifiedPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "POST", index, - "If-Modified-Since", dateFormat.format(new Date(0)), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("posted item=" + index) != -1); - // Should return code 304 Not Modified. - assertTrue(document.indexOf("HTTP/1.1 304") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPostIfUnmodifiedNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "POST", index, - "If-Unmodified-Since", dateFormat.format(new Date()), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return code 200 OK - assertTrue(document.indexOf("HTTP/1.1 200 OK") != -1); - // Should return code 304 Not Modified. - // assertTrue(document.indexOf("HTTP/1.1 304") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPostIfUnmodifiedPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "POST", index, - "If-Unmodified-Since", dateFormat.format(new Date(0)), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("posted item=" + index) != -1); - // Should return code 412 PreconditionFailed. - assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPostIfMatchNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "POST", index, - "If-Match", "eTagMatch", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return code 200 OK. - assertTrue(document.indexOf("HTTP/1.1 200 OK") != -1); - // Should return code 412 precondition failed. - // assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPostIfMatchPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat - .format(REQUEST2, "POST", index, "If-Match", "eTagNoneMatch", - content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("posted item=" + index) != -1); - // Should return code 412 PreconditionFailed. - assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPostIfNoneMatchNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "POST", index, - "If-None-Match", "eTagNoneMatch", content.getBytes().length, - content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return code 200 OK - assertTrue(document.indexOf("HTTP/1.1 200 OK") != -1); - // Should return code 412 precondition failed. - // assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPostIfNoneMatchPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "POST", index, - "If-None-Match", "eTagMatch", content.getBytes().length, - content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("posted item=" + index) != -1); - // Should return code 412 PreconditionFailed. - assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a POJO get method implementation using the HTTP binding. - * @throws Exception - */ - public void testPut() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST1, "PUT", index, content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - assertTrue(document.indexOf("updated item=" + index) != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPutIfModifiedNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "PUT", index, - "If-Modified-Since", dateFormat.format(new Date(0)), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - assertTrue(document.indexOf("updated item=" + index) != -1); - // Should return code 304 Not Modified. - // assertTrue(document.indexOf("HTTP/1.1 304") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPutIfModifiedPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "PUT", index, - "If-Modified-Since", dateFormat.format(new Date(0)), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("updated item=" + index) != -1); - // Should return code 304 Not Modified. - assertTrue(document.indexOf("HTTP/1.1 304") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPutIfUnmodifiedNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "PUT", index, - "If-Unmodified-Since", dateFormat.format(new Date()), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - assertTrue(document.indexOf("updated item=" + index) != -1); - // Should return code 304 Not Modified. - // assertTrue(document.indexOf("HTTP/1.1 304") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPutIfUnmodifiedPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "PUT", index, - "If-Unmodified-Since", dateFormat.format(new Date(0)), content - .getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("updated item=" + index) != -1); - // Should return code 412 PreconditionFailed. - assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPutIfMatchNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "PUT", index, - "If-Match", "eTagXXX", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("updated item=" + index) != -1); - // Should return code 412 precondition failed. - assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPutIfMatchPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "PUT", index, - "If-Match", "eTagXXX", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - assertTrue(document.indexOf("updated item=" + index) != -1); - // Should return code 412 PreconditionFailed. - // assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPutIfNoneMatchNegative() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 1; - String content = ""; - String request = MessageFormat.format(REQUEST2, "PUT", index, - "If-None-Match", "eTagXXX", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - assertTrue(document.indexOf("updated item=" + index) != -1); - // Should return code 412 precondition failed. - // assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Test invoking a conditional method implementation using the HTTP binding. - * @throws Exception - */ - public void testConditionalPutIfNoneMatchPositive() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String content = ""; - String request = MessageFormat.format(REQUEST2, "PUT", index, - "If-None-Match", "eTagXXX", content.getBytes().length, content); - os.write(request.getBytes()); - os.flush(); - - String document = read(client); - // Should return item - // assertTrue(document.indexOf("updated item=" + index) != -1); - // Should return code 412 PreconditionFailed. - assertTrue(document.indexOf("HTTP/1.1 412") != -1); - } - - /** - * Read response stream from the given socket. - * @param socket - * @return - * @throws IOException - */ - private static String read(Socket socket) throws IOException { - BufferedReader reader = null; - try { - reader = new BufferedReader(new InputStreamReader(socket - .getInputStream())); - StringBuffer sb = new StringBuffer(); - String str; - while ((str = reader.readLine()) != null) { - sb.append(str); - } - return sb.toString(); - } finally { - if (reader != null) { - reader.close(); - } - } - } -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingTestCase.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingTestCase.java deleted file mode 100644 index e5cad080a6..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/HTTPBindingTestCase.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.binding.http; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.net.Socket; -import java.text.MessageFormat; - -import junit.framework.TestCase; - -import org.apache.tuscany.sca.host.embedded.SCADomain; - -/** - * HTTP binding unit tests. - * - * @version $Rev$ $Date$ - */ -public class HTTPBindingTestCase extends TestCase { - - private static final String REQUEST1_HEADER = - "GET /httpservice/test HTTP/1.0\n" + "Host: localhost\n" - + "Content-Type: text/xml\n" - + "Connection: close\n" - + "Content-Length: "; - private static final String REQUEST1_CONTENT = ""; - private static final String REQUEST1 = - REQUEST1_HEADER + REQUEST1_CONTENT.getBytes().length + "\n\n" + REQUEST1_CONTENT; - - private static final String REQUEST2_HEADER = - "GET /webcontent/test.html HTTP/1.0\n" + "Host: localhost\n" - + "Content-Type: text/xml\n" - + "Connection: close\n" - + "Content-Length: "; - private static final String REQUEST2_CONTENT = ""; - private static final String REQUEST2 = - REQUEST2_HEADER + REQUEST2_CONTENT.getBytes().length + "\n\n" + REQUEST2_CONTENT; - - private static final String REQUEST3_HEADER = - "GET /httpget/{0} HTTP/1.0\n" + "Host: localhost\n" - + "Content-Type: text/xml\n" - + "Connection: close\n" - + "Content-Length: "; - private static final String REQUEST3_CONTENT = ""; - private static final String REQUEST3 = - REQUEST3_HEADER + REQUEST3_CONTENT.getBytes().length + "\n\n" + REQUEST3_CONTENT; - - private static final int HTTP_PORT = 8085; - - private SCADomain scaDomain; - - @Override - protected void setUp() throws Exception { - scaDomain = SCADomain.newInstance("test.composite"); - } - - @Override - protected void tearDown() throws Exception { - scaDomain.close(); - } - - /** - * Test invoking a POJO service implementation using the HTTP binding. - * @throws Exception - */ - public void testServiceImplementation() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - os.write(REQUEST1.getBytes()); - os.flush(); - - String document = read(client); - assertTrue(document.indexOf("

hey") != -1); - } - - /** - * Test invoking a POJO get method implementation using the HTTP binding. - * @throws Exception - */ - public void testGetImplementation() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - int index = 0; - String request = MessageFormat.format( REQUEST3, index ); - os.write( request.getBytes()); - os.flush(); - - String document = read(client); - assertTrue(document.indexOf("

item=" + index) != -1); - } - - /** - * Test getting a static resource provided using the HTTP binding. - * @throws Exception - */ - public void testStaticResourceImplementation() throws Exception { - Socket client = new Socket("127.0.0.1", HTTP_PORT); - OutputStream os = client.getOutputStream(); - os.write(REQUEST2.getBytes()); - os.flush(); - - String document = read(client); - assertTrue(document.indexOf("

hello") != -1); - } - - /** - * Read response stream from the given socket. - * @param socket - * @return - * @throws IOException - */ - private static String read(Socket socket) throws IOException { - BufferedReader reader = null; - try { - reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); - StringBuffer sb = new StringBuffer(); - String str; - while ((str = reader.readLine()) != null) { - sb.append(str); - } - return sb.toString(); - } finally { - if (reader != null) { - reader.close(); - } - } - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/NotModifiedException.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/NotModifiedException.java deleted file mode 100644 index 1d6efea2a1..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/NotModifiedException.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http; - -/** - * Indicates that a resource was not modified. - * - * @version $Rev$ $Date$ - */ -public class NotModifiedException extends Exception { - private static final long serialVersionUID = -5046027674128627383L; - - public NotModifiedException() { - } - - public NotModifiedException(String message) { - super(message); - } - - public NotModifiedException(Throwable cause) { - super(cause); - } - - public NotModifiedException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/PreconditionFailedException.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/PreconditionFailedException.java deleted file mode 100644 index 5728899ebe..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/PreconditionFailedException.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http; - -/** - * Indicates that a resource was not modified. - * - * @version $Rev$ $Date$ - */ -public class PreconditionFailedException extends Exception { - private static final long serialVersionUID = -5046027674128627383L; - - public PreconditionFailedException() { - } - - public PreconditionFailedException(String message) { - super(message); - } - - public PreconditionFailedException(Throwable cause) { - super(cause); - } - - public PreconditionFailedException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestBindingCacheImpl.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestBindingCacheImpl.java deleted file mode 100644 index f2456f3175..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestBindingCacheImpl.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.util.Date; - -/** - * Test service implementation that implements a various conditional HTTP - * methods. For testing, the id==0 items are very old (Date(0)), not modified, - * and always match ETags and the id==1 items are always brand new (Date()), - * modified, and never match ETags. Using these ids one can test the - * LastModified and ETag headers of the requests. - * - * @version $Rev$ $Date$ - */ -public class TestBindingCacheImpl { - - /** - * Implements the HTTP get method of the collection implementation. - * @param id - * @return - */ - public InputStream get(String id) { - return new ByteArrayInputStream( - ("

item=" + id + "").getBytes()); - } - - /** - * Implements the HTTP conditional get method of the collection implementation. - * @param id - * @return - */ - public InputStream conditionalGet(String id, HTTPCacheContext cacheContext) - throws NotModifiedException, PreconditionFailedException { - - if (cacheContext != null) { - if (cacheContext.ifModifiedSince) { - if ((id.equals("1")) - && (0 > cacheContext.lastModifiedDate - .compareTo(new Date()))) - throw new NotModifiedException("item 1 was modified on " - + new Date()); - } - if (cacheContext.ifUnmodifiedSince) { - if ((id.equals("0")) - && (0 > cacheContext.lastModifiedDate - .compareTo(new Date()))) - throw new PreconditionFailedException( - "item 0 was modified on " + new Date(0)); - } - if (cacheContext.ifMatch) { - if (id.equals("1")) - throw new PreconditionFailedException( - "item 1 eTag does not match " - + cacheContext.getETag()); - } - if (cacheContext.ifNoneMatch) { - if (id.equals("0")) - throw new PreconditionFailedException( - "item 0 eTag matches " + cacheContext.getETag()); - } - } - return new ByteArrayInputStream( - ("

item=" + id + "").getBytes()); - } - - /** - * Implements the HTTP delete method of the collection implementation. - * @param id - * @return - */ - public InputStream delete(String id) { - return new ByteArrayInputStream( - ("

deleted item=" + id + "") - .getBytes()); - } - - /** - * Implements the HTTP conditional delete method of the collection implementation. - * @param id - * @return - */ - public InputStream conditionalDelete(String id, HTTPCacheContext cacheContext) - throws NotModifiedException, PreconditionFailedException { - - if (cacheContext != null) { - if (cacheContext.ifModifiedSince) { - if ((id.equals("1")) - && (0 > cacheContext.lastModifiedDate - .compareTo(new Date()))) - throw new NotModifiedException("item 1 was modified on " - + new Date()); - } - if (cacheContext.ifUnmodifiedSince) { - if ((id.equals("0")) - && (0 > cacheContext.lastModifiedDate - .compareTo(new Date()))) - throw new PreconditionFailedException( - "item 0 was modified on " + new Date(0)); - } - if (cacheContext.ifMatch) { - if (id.equals("1")) - throw new PreconditionFailedException( - "item 1 eTag does not match " - + cacheContext.getETag()); - } - if (cacheContext.ifNoneMatch) { - if (id.equals("0")) - throw new PreconditionFailedException( - "item 0 eTag matches " + cacheContext.getETag()); - } - } - return new ByteArrayInputStream( - ("

deleted item=" + id + "") - .getBytes()); - } - - /** - * Implements the HTTP post method of the collection implementation. - * @param id - * @return - */ - public InputStream post() { - int id = (new java.util.Random()).nextInt(Integer.MAX_VALUE); - return new ByteArrayInputStream( - ("

posted item=" + id + "") - .getBytes()); - } - - /** - * Implements the HTTP conditional post method of the collection implementation. - * @param id - * @return - */ - public HTTPCacheContext conditionalPost(HTTPCacheContext cacheContext) - throws NotModifiedException, PreconditionFailedException { - String id = "" + (new java.util.Random()).nextInt(Integer.MAX_VALUE); - - if (cacheContext != null) { - if (cacheContext.ifModifiedSince) { - if (0 >= cacheContext.lastModifiedDate.compareTo(new Date(0))) - throw new NotModifiedException("item was modified on " - + new Date()); - } - if (cacheContext.ifUnmodifiedSince) { - if ((0 >= cacheContext.lastModifiedDate.compareTo(new Date(0)))) - throw new PreconditionFailedException( - "item was modified on " + new Date(0)); - } - if (cacheContext.ifMatch) { - if (cacheContext.getETag().equalsIgnoreCase("ETagNoneMatch")) - throw new PreconditionFailedException( - "item eTag does not match " - + cacheContext.getETag()); - } - if (cacheContext.ifNoneMatch) { - if (cacheContext.getETag().equalsIgnoreCase("ETagMatch")) - throw new PreconditionFailedException("item eTag matches " - + cacheContext.getETag()); - } - } - - // Return the ETag and LastModfied fields by serialize to a byte array - HTTPCacheContext returnContext = new HTTPCacheContext(); - returnContext.setETag( "ETag" + (new java.util.Random()).nextInt(Integer.MAX_VALUE) ); - returnContext.setLastModified( new Date() ); - return returnContext; - } - - /** - * Implements the HTTP update/put method of the collection implementation. - * @param id - * @return - */ - public InputStream put(String id) { - return new ByteArrayInputStream( - ("

updated item=" + id + "") - .getBytes()); - } - - /** - * Implements the HTTP conditional update/put method of the collection implementation. - * @param id - * @return - */ - public InputStream conditionalPut(String id, HTTPCacheContext cacheContext) - throws NotModifiedException, PreconditionFailedException { - - if (cacheContext != null) { - if (cacheContext.ifModifiedSince) { - if ((id.equals("1")) - && (0 > cacheContext.lastModifiedDate - .compareTo(new Date()))) - throw new NotModifiedException("item 1 was modified on " - + new Date()); - } - if (cacheContext.ifUnmodifiedSince) { - if ((id.equals("0")) - && (0 > cacheContext.lastModifiedDate - .compareTo(new Date()))) - throw new PreconditionFailedException( - "item 0 was modified on " + new Date(0)); - } - if (cacheContext.ifMatch) { - if (id.equals("1")) - throw new PreconditionFailedException( - "item 1 eTag does not match " - + cacheContext.getETag()); - } - if (cacheContext.ifNoneMatch) { - if (id.equals("0")) - throw new PreconditionFailedException( - "item 0 eTag matches " + cacheContext.getETag()); - } - } - - return new ByteArrayInputStream( - ("

updated item=" + id + "") - .getBytes()); - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestGetImpl.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestGetImpl.java deleted file mode 100644 index 333bacbab3..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestGetImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; - -/** - * Test service implementation that implements a get method. - * - * @version $Rev$ $Date$ - */ -public class TestGetImpl { - - public InputStream get(String id) { - return new ByteArrayInputStream(("

item=" + id + "").getBytes()); - - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceCacheImpl.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceCacheImpl.java deleted file mode 100644 index ed846c1127..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceCacheImpl.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http; - -import java.io.IOException; - -import javax.servlet.Servlet; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -import org.osoa.sca.annotations.Service; - -/** - * Test service implementation. - * - * @version $Rev$ $Date$ - */ - -@Service(Servlet.class) -public class TestServiceCacheImpl implements Servlet { - - public void init(ServletConfig config) throws ServletException { - } - - public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { - //HttpServletResponse httpResponse = (HttpServletResponse)response; - response.getOutputStream().print("

hey"); - } - - public void destroy() { - } - - public ServletConfig getServletConfig() { - return null; - } - - public String getServletInfo() { - return null; - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceImpl.java b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceImpl.java deleted file mode 100644 index 11945c8cd1..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/java/org/apache/tuscany/sca/binding/http/TestServiceImpl.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http; - -import java.io.IOException; - -import javax.servlet.Servlet; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -import org.osoa.sca.annotations.Service; - -/** - * Test service implementation. - * - * @version $Rev$ $Date$ - */ - -@Service(Servlet.class) -public class TestServiceImpl implements Servlet { - - public void init(ServletConfig config) throws ServletException { - } - - public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { - //HttpServletResponse httpResponse = (HttpServletResponse)response; - response.getOutputStream().print("

hey"); - } - - public void destroy() { - } - - public ServletConfig getServletConfig() { - return null; - } - - public String getServletInfo() { - return null; - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/resources/content/test.html b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/resources/content/test.html deleted file mode 100644 index f4b79d7f01..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/resources/content/test.html +++ /dev/null @@ -1,21 +0,0 @@ - - -

hello - \ No newline at end of file diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/resources/test.composite b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/resources/test.composite deleted file mode 100644 index 62c4af4e22..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/resources/test.composite +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/resources/testCache.composite b/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/resources/testCache.composite deleted file mode 100644 index d805402c4f..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis-runtime/src/test/resources/testCache.composite +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/LICENSE b/branches/sca-java-1.x/modules/binding-http-oasis/LICENSE deleted file mode 100644 index 8aa906c321..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/NOTICE b/branches/sca-java-1.x/modules/binding-http-oasis/NOTICE deleted file mode 100644 index fdfa0e9faa..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name} -Copyright (c) 2005 - 2008 The Apache Software Foundation - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/pom.xml b/branches/sca-java-1.x/modules/binding-http-oasis/pom.xml deleted file mode 100644 index 4b067656b8..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/pom.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - 4.0.0 - - org.apache.tuscany.sca - tuscany-modules - 1.6-SNAPSHOT - ../pom.xml - - - tuscany-binding-http-oasis - Apache Tuscany SCA HTTP OASIS Binding Model - - - - org.apache.tuscany.sca - tuscany-assembly - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-interface-java-xml - 1.6-SNAPSHOT - - - - org.apache.tuscany.sca - tuscany-data-api - 1.6-SNAPSHOT - - - - javax.servlet - servlet-api - 2.5 - provided - - - - junit - junit - 4.5 - test - - - - - - - - - org.apache.felix - maven-bundle-plugin - - - - ${tuscany.version} - org.apache.tuscany.sca.binding.http - ${pom.name} - org.apache.tuscany.sca.binding.http* - org.apache.tuscany.sca.assembly.xml;version="1.4", * - - - - - - - diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java deleted file mode 100644 index 7005385afb..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBinding.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http; - -import org.apache.tuscany.sca.assembly.BindingRRB; - - -/** - * HTTP binding model. - * - * @version $Rev$ $Date$ -*/ -public interface HTTPBinding extends BindingRRB { - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBindingFactory.java b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBindingFactory.java deleted file mode 100644 index e66896c68e..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPBindingFactory.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http; - -/** - * Factory for the HTTP binding model. - * - * @version $Rev$ $Date$ - */ -public interface HTTPBindingFactory { - - /** - * Creates a new HTTP binding. - * @return a new HTTP binding - */ - HTTPBinding createHTTPBinding(); - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPCacheContext.java b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPCacheContext.java deleted file mode 100644 index 023423f0eb..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPCacheContext.java +++ /dev/null @@ -1,257 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http; - -import java.text.SimpleDateFormat; -import java.util.Date; - -import javax.servlet.http.HttpServletRequest; - -/** - * A class to store cache settings for Atom and HTTP requests and responses. - * - * Predicates are statements that work in conjunction with - * ETags and LastModified dates to determine if a precondition - * or postcondition is satisfied. - * See HTTP specification for how predicates wrk: - * http://tools.ietf.org/html/rfc2616 - * Example predicates in HTTP include If-Match, If-None-Match, - * If-Modified-Since, If-Unmodified-Since, If-Range. - - */ -public class HTTPCacheContext { - public static final SimpleDateFormat RFC822DateFormat = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss Z" ); // RFC 822 date time - - public boolean enabled; - public String eTag; - public String lastModified; - public Date lastModifiedDate; - public boolean ifModifiedSince; - public boolean ifUnmodifiedSince; - public boolean ifMatch; - public boolean ifNoneMatch; - public boolean ifRange; - - /** - * An ETag is a unique ID for an item. It changes when - * a field in the item or the update date changes. - * See HTTP specification for how ETags work: - * http://tools.ietf.org/html/rfc2616 - * @return the eTag - */ - public String getETag() { - return eTag; - } - /** - * @param tag the eTag to set - */ - public void setETag(String tag) { - eTag = tag; - enabled = true; - } - /** - * The LastModified date is the time the item was last - * changed. See HTTP specification for how ETags work: - * http://tools.ietf.org/html/rfc2616 - * @return the lastModified - */ - public String getLastModified() { - return lastModified; - } - /** - * The LastModified date is the time the item was last - * changed. See HTTP specification for how ETags work: - * http://tools.ietf.org/html/rfc2616 - * @return the lastModified - */ - public Date getLastModifiedAsDate() { - return lastModifiedDate; - } - /** - * @param lastModified the lastModified to set - */ - public void setLastModified(String lastModified) throws java.text.ParseException { - this.lastModified = lastModified; - // Catch date formatting on input to help debugging. - lastModifiedDate = RFC822DateFormat.parse( lastModified ); - enabled = true; - } - - /** - * @param lastModified the lastModified to set - */ - public void setLastModified(Date updated) { - this.lastModified = RFC822DateFormat.format( updated ); - lastModifiedDate = updated; - enabled = true; - } - - /** - * @return the ifModifedSince - */ - public boolean isIfModifiedSince() { - return ifModifiedSince; - } - /** - * @param ifModifedSince the ifModifedSince to set - */ - public void setIfModifiedSince(boolean ifModifiedSince) { - this.ifModifiedSince = ifModifiedSince; - if ( ifModifiedSince ) - enabled = true; - } - /** - * @return the ifUnModifiedSince - */ - public boolean isIfUnmodifiedSince() { - return ifUnmodifiedSince; - } - /** - * @param ifUnModifiedSince the ifUnModifiedSince to set - */ - public void setIfUnmodifiedSince(boolean ifUnmodifiedSince) { - this.ifUnmodifiedSince = ifUnmodifiedSince; - if ( ifUnmodifiedSince ) - enabled = true; - } - /** - * @return the ifMatch - */ - public boolean isIfMatch() { - return ifMatch; - } - /** - * @param ifMatch the ifMatch to set - */ - public void setIfMatch(boolean ifMatch) { - this.ifMatch = ifMatch; - if ( ifMatch ) - enabled = true; - } - /** - * @return the ifNoneMatch - */ - public boolean isIfNoneMatch() { - return ifNoneMatch; - } - /** - * @param ifNoneMatch the ifNoneMatch to set - */ - public void setIfNoneMatch(boolean ifNoneMatch) { - this.ifNoneMatch = ifNoneMatch; - if ( ifNoneMatch ) - enabled = true; - } - /** - * @return the ifRange - */ - public boolean isIfRange() { - return ifRange; - } - /** - * @param ifRange the ifRange to set - */ - public void setIfRange(boolean ifRange) { - this.ifRange = ifRange; - if ( ifRange ) - enabled = true; - } - - public String toString() { - final String PREDPREFIX = ", predicates="; - StringBuffer sb = new StringBuffer(PREDPREFIX); - if ( ifMatch || ifNoneMatch || ifModifiedSince || ifUnmodifiedSince || ifRange ) { - if ( ifMatch ) { - if ( sb.length() > PREDPREFIX.length() ) sb.append( ", "); - sb.append("If-Match"); - } - if ( ifNoneMatch ) { - if ( sb.length() > PREDPREFIX.length() ) sb.append( ", "); - sb.append("If-None-Match"); - } - if ( ifModifiedSince ) { - if ( sb.length() > PREDPREFIX.length() ) sb.append( ", "); - sb.append("If-Modified-Since"); - } - if ( ifUnmodifiedSince ) { - if ( sb.length() > PREDPREFIX.length() ) sb.append( ", "); - sb.append("If-UnModified-Since"); - } - if ( ifRange ) { - if ( sb.length() > PREDPREFIX.length() ) sb.append( ", "); - sb.append("If-Range"); - } - } else { - sb.append("null"); - } - - return "eTag=" + eTag + ", lastModified=" + lastModified - + sb.toString(); - } - - /** - * Gets the cache context information (ETag, LastModified, predicates) from the Http request. - * @param request - * @return - */ - public static HTTPCacheContext getCacheContextFromRequest( HttpServletRequest request ) throws java.text.ParseException { - HTTPCacheContext context = new HTTPCacheContext(); - - String eTag = request.getHeader( "If-Match" ); - if ( eTag != null ) { - context.setETag( eTag ); - context.setIfMatch( true ); - } - eTag = request.getHeader( "If-None-Match" ); - if ( eTag != null ) { - context.setETag( eTag ); - context.setIfNoneMatch( true ); - } - String lastModifiedString = request.getHeader( "If-Modified-Since" ); - if ( lastModifiedString != null ) { - context.setLastModified( lastModifiedString ); - context.setIfModifiedSince( true ); - } - lastModifiedString = request.getHeader( "If-Unmodified-Since" ); - if ( lastModifiedString != null ) { - context.setLastModified( lastModifiedString ); - context.setIfUnmodifiedSince( true ); - } - lastModifiedString = request.getHeader( "If-Range" ); - if ( lastModifiedString != null ) { - context.setLastModified( lastModifiedString ); - context.setIfRange( true ); - } - return context; - } - /** - * Enabled is true whenever ETag, LastModified, or predicate is set. - * @return the enabled - */ - public boolean isEnabled() { - return enabled; - } - /** - * @param enabled the enabled to set - */ - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPHeader.java b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPHeader.java deleted file mode 100644 index 69e44cf35c..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/HTTPHeader.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http; - -public class HTTPHeader { - private String name; - private Object value; - - public HTTPHeader() { - - } - - public HTTPHeader(String name, Object value) { - this.name = name; - this.value = value; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Object getValue() { - return value; - } - - public void setValue(Object value) { - this.value = value; - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingFactoryImpl.java b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingFactoryImpl.java deleted file mode 100644 index 678cd1a426..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingFactoryImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.impl; - -import org.apache.tuscany.sca.binding.http.HTTPBinding; -import org.apache.tuscany.sca.binding.http.HTTPBindingFactory; - -/** - * Factory for the HTTP binding model. - * - * @version $Rev$ $Date$ - */ -public class HTTPBindingFactoryImpl implements HTTPBindingFactory { - - public HTTPBinding createHTTPBinding() { - return new HTTPBindingImpl(); - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java deleted file mode 100644 index 242f3c6d48..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/impl/HTTPBindingImpl.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.impl; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.tuscany.sca.assembly.OperationSelector; -import org.apache.tuscany.sca.assembly.WireFormat; -import org.apache.tuscany.sca.binding.http.HTTPBinding; -import org.apache.tuscany.sca.policy.Intent; -import org.apache.tuscany.sca.policy.IntentAttachPointType; -import org.apache.tuscany.sca.policy.PolicySet; -import org.apache.tuscany.sca.policy.PolicySetAttachPoint; - - -/** - * Implementation of the HTTP binding model. - * - * @version $Rev$ $Date$ - */ -class HTTPBindingImpl implements HTTPBinding, PolicySetAttachPoint { - - private String name; - private String uri; - - private WireFormat wireFormat; - private OperationSelector operationSelector; - - private List requiredIntents = new ArrayList(); - private List policySets = new ArrayList(); - private IntentAttachPointType intentAttachPointType; - private List applicablePolicySets = new ArrayList(); - - public String getName() { - return name; - } - - public String getURI() { - return uri; - } - - public void setName(String name) { - this.name = name; - } - - public void setURI(String uri) { - this.uri = uri; - } - - public boolean isUnresolved() { - return false; - } - - public void setUnresolved(boolean unresolved) { - // The sample binding is always resolved - } - - // Wireformat and Operation selection - - public WireFormat getRequestWireFormat() { - return wireFormat; - } - - public void setRequestWireFormat(WireFormat wireFormat) { - this.wireFormat = wireFormat; - } - - public WireFormat getResponseWireFormat() { - return wireFormat; - } - - public void setResponseWireFormat(WireFormat wireFormat) { - this.wireFormat = wireFormat; - } - - public OperationSelector getOperationSelector() { - return operationSelector; - } - - public void setOperationSelector(OperationSelector operationSelector) { - this.operationSelector = operationSelector; - } - - //Policy related getters/setters - - public List getPolicySets() { - return policySets; - } - - public List getRequiredIntents() { - return requiredIntents; - } - - public IntentAttachPointType getType() { - return intentAttachPointType; - } - - public void setType(IntentAttachPointType intentAttachPointType) { - this.intentAttachPointType = intentAttachPointType; - } - - public void setPolicySets(List policySets) { - this.policySets = policySets; - } - - public void setRequiredIntents(List intents) { - this.requiredIntents = intents; - } - - public List getApplicablePolicySets() { - return applicablePolicySets; - } - - @Override - public Object clone() throws CloneNotSupportedException { - return super.clone(); - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java deleted file mode 100644 index 874c23c7e0..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessor.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.xml; - -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; - -import org.apache.tuscany.sca.assembly.OperationSelector; -import org.apache.tuscany.sca.assembly.WireFormat; -import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl; -import org.apache.tuscany.sca.assembly.xml.Constants; -import org.apache.tuscany.sca.binding.http.HTTPBinding; -import org.apache.tuscany.sca.binding.http.HTTPBindingFactory; -import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; -import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessor; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.contribution.service.ContributionReadException; -import org.apache.tuscany.sca.contribution.service.ContributionResolveException; -import org.apache.tuscany.sca.contribution.service.ContributionWriteException; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.monitor.Monitor; -import org.apache.tuscany.sca.monitor.Problem; -import org.apache.tuscany.sca.monitor.Problem.Severity; - -public class HTTPBindingProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor { - private static final String BINDING_HTTP = "binding.http"; - private static final QName BINDING_HTTP_QNAME = new QName(Constants.SCA10_TUSCANY_NS, BINDING_HTTP); - - private static final String NAME = "name"; - private static final String URI = "uri"; - - private HTTPBindingFactory httpBindingFactory; - private StAXArtifactProcessor extensionProcessor; - private StAXAttributeProcessor extensionAttributeProcessor; - private Monitor monitor; - - public HTTPBindingProcessor(ExtensionPointRegistry extensionPoints, - StAXArtifactProcessor extensionProcessor, - StAXAttributeProcessor extensionAttributeProcessor, - Monitor monitor) { - ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class); - this.httpBindingFactory = modelFactories.getFactory(HTTPBindingFactory.class); - this.extensionProcessor = (StAXArtifactProcessor)extensionProcessor; - this.extensionAttributeProcessor = extensionAttributeProcessor; - this.monitor = monitor; - } - - public QName getArtifactType() { - return BINDING_HTTP_QNAME; - } - - public Class getModelType() { - return HTTPBinding.class; - } - - public HTTPBinding read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException { - HTTPBinding httpBinding = httpBindingFactory.createHTTPBinding(); - - while(reader.hasNext()) { - QName elementName = null; - int event = reader.getEventType(); - switch (event) { - case START_ELEMENT: - elementName = reader.getName(); - - if (BINDING_HTTP_QNAME.equals(elementName)) { - String name = getString(reader, NAME); - if(name != null) { - httpBinding.setName(name); - } - - String uri = getString(reader, URI); - if (uri != null) { - httpBinding.setURI(uri); - } - } else { - // Read an extension element - Object extension = extensionProcessor.read(reader); - if (extension != null) { - if (extension instanceof WireFormat) { - httpBinding.setRequestWireFormat((WireFormat)extension); - } else if(extension instanceof OperationSelector) { - httpBinding.setOperationSelector((OperationSelector)extension); - } - } - } - - } - - if (event == END_ELEMENT && BINDING_HTTP_QNAME.equals(reader.getName())) { - break; - } - - // Read the next element - if (reader.hasNext()) { - reader.next(); - } - } - - return httpBinding; - } - - public void write(HTTPBinding httpBinding, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException { - //writer.writeStartElement(Constants.SCA10_NS, BINDING_HTTP); - - writeStart(writer, BINDING_HTTP_QNAME.getNamespaceURI(), BINDING_HTTP_QNAME.getLocalPart()); - - // Write binding name - if (httpBinding.getName() != null) { - writer.writeAttribute(NAME, httpBinding.getName()); - } - - // Write binding URI - if (httpBinding.getURI() != null) { - writer.writeAttribute(URI, httpBinding.getURI()); - } - - writeEnd(writer); - //writer.writeEndElement(); - } - - - public void resolve(HTTPBinding model, ModelResolver resolver) throws ContributionResolveException { - // Should not need to do anything here for now... - - } - - /** - * Report a error. - * - * @param problems - * @param message - * @param model - */ - private void error(String message, Object model, Object... messageParameters) { - if (monitor != null) { - Problem problem = new ProblemImpl(this.getClass().getName(), "binding-http-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters); - monitor.problem(problem); - } - } - -} diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.HTTPBindingFactory b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.HTTPBindingFactory deleted file mode 100644 index 44da6b166c..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/resources/META-INF/services/org.apache.tuscany.sca.binding.http.HTTPBindingFactory +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -# Implementation class for model factory -org.apache.tuscany.sca.binding.http.impl.HTTPBindingFactoryImpl diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor b/branches/sca-java-1.x/modules/binding-http-oasis/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor deleted file mode 100644 index ac004e826a..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -# Implementation class for the artifact processor extension -org.apache.tuscany.sca.binding.http.xml.HTTPBindingProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.0#binding.http,model=org.apache.tuscany.sca.binding.http.HTTPBinding,factory=org.apache.tuscany.sca.binding.http.HTTPBindingFactory diff --git a/branches/sca-java-1.x/modules/binding-http-oasis/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java b/branches/sca-java-1.x/modules/binding-http-oasis/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java deleted file mode 100644 index b19935c1e0..0000000000 --- a/branches/sca-java-1.x/modules/binding-http-oasis/src/test/java/org/apache/tuscany/sca/binding/http/xml/HTTPBindingProcessorTestCase.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.http.xml; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.ByteArrayOutputStream; -import java.io.StringReader; - -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLOutputFactory; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; - -import org.apache.tuscany.sca.binding.http.HTTPBinding; -import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; -import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; -import org.apache.tuscany.sca.core.UtilityExtensionPoint; -import org.apache.tuscany.sca.monitor.Monitor; -import org.apache.tuscany.sca.monitor.MonitorFactory; -import org.apache.tuscany.sca.monitor.impl.DefaultMonitorFactoryImpl; -import org.junit.BeforeClass; -import org.junit.Test; - - -/** - * @version $Rev$ $Date$ - */ -public class HTTPBindingProcessorTestCase { - private static final String XML = ""; - - private static XMLInputFactory inputFactory; - private static XMLOutputFactory outputFactory; - - private static Monitor monitor; - - private static ExtensibleStAXArtifactProcessor staxProcessor; - private static HTTPBindingProcessor httpBindingProcessor; - - @BeforeClass - public static void setUp() throws Exception { - inputFactory = XMLInputFactory.newInstance(); - - outputFactory = XMLOutputFactory.newInstance(); - outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE); - - DefaultExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry(); - // Create a monitor - UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class); - MonitorFactory monitorFactory = new DefaultMonitorFactoryImpl(); - if (monitorFactory != null) { - monitor = monitorFactory.createMonitor(); - utilities.addUtility(monitorFactory); - } - - StAXArtifactProcessorExtensionPoint staxProcessors = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class); - staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, XMLOutputFactory.newInstance(), null); - - httpBindingProcessor = new HTTPBindingProcessor(extensionPoints, staxProcessor, null, monitor); - } - - - /** - * Read and Write a composite using the HTTP Binding - * - * @throws Exception - */ - @Test - public void testReadWriteCompositeWithHTTPBinding() throws Exception { - - XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(XML)); - reader.next(); - - HTTPBinding httpBinding = (HTTPBinding) httpBindingProcessor.read(reader); - assertNotNull(httpBinding); - reader.close(); - - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - XMLStreamWriter writer = outputFactory.createXMLStreamWriter(bos); - writer.setDefaultNamespace("http://www.osoa.org/xmlns/sca/1.0"); - httpBindingProcessor.write(httpBinding, writer); - writer.writeEndDocument(); - - // used for debug comparison - System.out.println(XML); - System.out.println(bos.toString()); - - assertEquals(XML, bos.toString()); - } -} diff --git a/branches/sca-java-1.x/modules/pom.xml b/branches/sca-java-1.x/modules/pom.xml index 3c2da10829..e2d5ba723e 100644 --- a/branches/sca-java-1.x/modules/pom.xml +++ b/branches/sca-java-1.x/modules/pom.xml @@ -61,10 +61,10 @@ binding-gdata-runtime binding-http binding-http-runtime - binding-http-oasis - binding-http-oasis-runtime - binding-http-oasis-jsonrpc - binding-http-oasis-jsonrpc-runtime + binding-http-new + binding-http-new-runtime + binding-http-new-jsonrpc + binding-http-new-jsonrpc-runtime binding-jms binding-jms-runtime binding-jms-policy -- cgit v1.2.3