From 9425990f532b1152c2d73db96c0f07ef5216a3d1 Mon Sep 17 00:00:00 2001 From: lresende Date: Thu, 12 Nov 2009 00:43:48 +0000 Subject: Moving 2.x contribs git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835178 13f79535-47bb-0310-9956-ffa450edef68 --- .../contrib/vtest/assembly/component/pom.xml | 49 +++ .../sca/vtest/assembly/component/AService.java | 31 ++ .../sca/vtest/assembly/component/BService.java | 29 ++ .../sca/vtest/assembly/component/CService.java | 28 ++ .../assembly/component/impl/AServiceImpl.java | 49 +++ .../assembly/component/impl/BServiceImpl.java | 40 ++ .../assembly/component/impl/CServiceImpl.java | 31 ++ .../src/main/resources/component.composite | 41 ++ .../src/main/resources/nonuniquename.composite | 33 ++ .../src/main/resources/serviceelement.composite | 42 ++ .../main/resources/servicewithbinding.composite | 33 ++ .../main/resources/servicewithinterface.composite | 32 ++ .../src/main/resources/zerocomponents.composite | 26 ++ .../src/main/resources/zeroimplelements.composite | 38 ++ .../assembly/component/ComponentTestCase.java | 150 +++++++ .../contrib/vtest/assembly/composite/pom.xml | 49 +++ .../sca/vtest/assembly/composite/AService.java | 31 ++ .../sca/vtest/assembly/composite/BService.java | 29 ++ .../sca/vtest/assembly/composite/CService.java | 28 ++ .../assembly/composite/impl/AServiceImpl.java | 49 +++ .../assembly/composite/impl/BServiceImpl.java | 40 ++ .../assembly/composite/impl/CServiceImpl.java | 31 ++ .../src/main/resources/composite.composite | 41 ++ .../assembly/composite/CompositeTestCase.java | 56 +++ .../contrib/vtest/assembly/ctypefile/pom.xml | 49 +++ .../sca/vtest/assembly/ctypefile/AService.java | 30 ++ .../sca/vtest/assembly/ctypefile/BService.java | 29 ++ .../assembly/ctypefile/impl/AServiceImpl.java | 53 +++ .../assembly/ctypefile/impl/BServiceImpl.java | 37 ++ .../ctypefile/impl/AServiceImpl.componentType | 30 ++ .../ctypefile/impl/BServiceImpl.componentType | 28 ++ .../src/main/resources/typefile.composite | 40 ++ .../ctypefile/CompomnentTypeFileTestCase.java | 111 +++++ sca-java-2.x/contrib/vtest/assembly/pom.xml | 70 +++ .../java-api/annotations/conversational/pom.xml | 46 ++ .../annotations/conversational/AService.java | 30 ++ .../annotations/conversational/B1Service.java | 29 ++ .../annotations/conversational/B2Service.java | 32 ++ .../conversational/impl/AServiceImpl.java | 47 ++ .../conversational/impl/B1ServiceImpl.java | 38 ++ .../conversational/impl/B2ServiceImpl.java | 40 ++ .../src/main/resources/conversation.composite | 40 ++ .../ConversationAnnotationTestCase.java | 91 ++++ .../annotations/conversationattributes/pom.xml | 53 +++ .../conversationattributes/AService.java | 30 ++ .../conversationattributes/B2Service.java | 32 ++ .../conversationattributes/BService.java | 32 ++ .../conversationattributes/CService.java | 30 ++ .../conversationattributes/impl/AServiceImpl.java | 80 ++++ .../conversationattributes/impl/B2ServiceImpl.java | 42 ++ .../conversationattributes/impl/BServiceImpl.java | 42 ++ .../conversationattributes/impl/CServiceImpl.java | 37 ++ .../security/ACallbackHandler.java | 50 +++ .../security/JaasLoginModule.java | 179 ++++++++ .../security/UserPrincipal.java | 66 +++ .../src/main/resources/AJass.config | 3 + .../src/main/resources/conversation.composite | 46 ++ .../src/main/resources/definitions.xml | 34 ++ .../src/main/resources/singleprincipal.composite | 38 ++ .../ConversationAttributesTestCase.java | 93 ++++ .../SinglePricipalTestCase.java | 70 +++ .../vtest/java-api/annotations/destroy/pom.xml | 45 ++ .../javaapi/annotations/destroy/AService.java | 29 ++ .../annotations/destroy/impl/AServiceErr1Impl.java | 39 ++ .../annotations/destroy/impl/AServiceErr2Impl.java | 39 ++ .../annotations/destroy/impl/AServiceErr3Impl.java | 40 ++ .../annotations/destroy/impl/AServiceErr4Impl.java | 39 ++ .../annotations/destroy/impl/AServiceImpl.java | 38 ++ .../src/main/resources/err1/AServiceErr1.composite | 28 ++ .../src/main/resources/err2/AServiceErr2.composite | 28 ++ .../src/main/resources/err3/AServiceErr3.composite | 28 ++ .../src/main/resources/err4/AServiceErr4.composite | 28 ++ .../src/main/resources/proper/AService.composite | 28 ++ .../destroy/DestroyAnnotationTestCase.java | 159 +++++++ .../java-api/annotations/endsconversation/pom.xml | 46 ++ .../annotations/endsconversation/AService.java | 32 ++ .../annotations/endsconversation/BService.java | 37 ++ .../endsconversation/impl/AServiceImpl.java | 70 +++ .../endsconversation/impl/BServiceImpl.java | 59 +++ .../src/main/resources/endsconversation.composite | 35 ++ .../endsconversation/EndsConversationTestCase.java | 112 +++++ .../vtest/java-api/annotations/init/pom.xml | 45 ++ .../vtest/javaapi/annotations/init/AService.java | 30 ++ .../annotations/init/impl/AServiceErr1Impl.java | 43 ++ .../annotations/init/impl/AServiceErr2Impl.java | 43 ++ .../annotations/init/impl/AServiceErr3Impl.java | 44 ++ .../annotations/init/impl/AServiceErr4Impl.java | 43 ++ .../annotations/init/impl/AServiceImpl.java | 53 +++ .../src/main/resources/err1/AServiceErr1.composite | 28 ++ .../src/main/resources/err2/AServiceErr2.composite | 28 ++ .../src/main/resources/err3/AServiceErr3.composite | 28 ++ .../src/main/resources/err4/AServiceErr4.composite | 28 ++ .../src/main/resources/proper/AService.composite | 33 ++ .../annotations/init/InitAnnotationTestCase.java | 167 ++++++++ .../vtest/java-api/annotations/oneway/pom.xml | 46 ++ .../vtest/javaapi/annotations/oneway/AService.java | 31 ++ .../vtest/javaapi/annotations/oneway/BService.java | 28 ++ .../annotations/oneway/impl/AServiceImpl.java | 37 ++ .../annotations/oneway/impl/BServiceImpl.java | 43 ++ .../oneway/src/main/resources/oneway.composite | 35 ++ .../oneway/OneWayAnnotationTestCase.java | 78 ++++ .../contrib/vtest/java-api/annotations/pom.xml | 69 +++ .../vtest/java-api/annotations/property/pom.xml | 46 ++ .../javaapi/annotations/property/AService.java | 82 ++++ .../annotations/property/AnotherAService.java | 48 +++ .../javaapi/annotations/property/BService.java | 32 ++ .../javaapi/annotations/property/CService.java | 38 ++ .../javaapi/annotations/property/impl/AObject.java | 35 ++ .../annotations/property/impl/AServiceImpl.java | 240 +++++++++++ .../property/impl/AnotherAServiceImpl.java | 116 +++++ .../annotations/property/impl/BServiceImpl.java | 32 ++ .../annotations/property/impl/CServiceImpl1.java | 87 ++++ .../annotations/property/impl/CServiceImpl2.java | 87 ++++ .../annotations/property/impl/CServiceImpl3.java | 87 ++++ .../annotations/property/impl/CServiceImpl4.java | 88 ++++ .../annotations/property/impl/CServiceImpl5.java | 88 ++++ .../annotations/property/impl/CServiceImpl6.java | 88 ++++ .../property/src/main/resources/property.composite | 143 +++++++ .../property/PropertyAnnotationTestCase.java | 299 +++++++++++++ .../vtest/java-api/annotations/reference/pom.xml | 46 ++ .../javaapi/annotations/reference/AService.java | 55 +++ .../javaapi/annotations/reference/BService.java | 31 ++ .../annotations/reference/impl/AServiceImpl.java | 215 ++++++++++ .../reference/impl/AUnannotatedServiceImpl.java | 141 ++++++ .../annotations/reference/impl/BServiceImpl.java | 32 ++ .../reference/src/main/resources/ab.composite | 51 +++ .../reference/ReferenceAnnotationTestCase.java | 229 ++++++++++ .../vtest/java-api/annotations/scope/pom.xml | 46 ++ .../vtest/javaapi/annotations/scope/AService.java | 29 ++ .../vtest/javaapi/annotations/scope/BService.java | 40 ++ .../vtest/javaapi/annotations/scope/CService.java | 40 ++ .../vtest/javaapi/annotations/scope/DService.java | 43 ++ .../vtest/javaapi/annotations/scope/FService.java | 43 ++ .../vtest/javaapi/annotations/scope/GService.java | 35 ++ .../vtest/javaapi/annotations/scope/HService.java | 36 ++ .../vtest/javaapi/annotations/scope/IService.java | 48 +++ .../vtest/javaapi/annotations/scope/JService.java | 33 ++ .../vtest/javaapi/annotations/scope/KService.java | 33 ++ .../vtest/javaapi/annotations/scope/LService.java | 41 ++ .../vtest/javaapi/annotations/scope/MService.java | 33 ++ .../vtest/javaapi/annotations/scope/NService.java | 33 ++ .../vtest/javaapi/annotations/scope/OService.java | 41 ++ .../annotations/scope/impl/AServiceImpl.java | 32 ++ .../annotations/scope/impl/BServiceImpl.java | 112 +++++ .../annotations/scope/impl/CServiceImpl.java | 114 +++++ .../annotations/scope/impl/DServiceImpl.java | 116 +++++ .../annotations/scope/impl/FServiceImpl.java | 116 +++++ .../annotations/scope/impl/GServiceImpl.java | 75 ++++ .../annotations/scope/impl/HServiceImpl.java | 86 ++++ .../annotations/scope/impl/IServiceImpl.java | 131 ++++++ .../annotations/scope/impl/JServiceImpl.java | 78 ++++ .../annotations/scope/impl/KServiceImpl.java | 80 ++++ .../annotations/scope/impl/LServiceImpl.java | 83 ++++ .../annotations/scope/impl/MServiceImpl.java | 81 ++++ .../annotations/scope/impl/NServiceImpl.java | 85 ++++ .../annotations/scope/impl/OServiceImpl.java | 83 ++++ .../scope/src/main/resources/scope.composite | 110 +++++ .../annotations/scope/ScopeAnnotationTestCase.java | 476 +++++++++++++++++++++ .../vtest/java-api/annotations/service/pom.xml | 46 ++ .../javaapi/annotations/service/AService.java | 34 ++ .../javaapi/annotations/service/BService.java | 33 ++ .../javaapi/annotations/service/CService.java | 31 ++ .../javaapi/annotations/service/DService1.java | 28 ++ .../javaapi/annotations/service/DService2.java | 28 ++ .../javaapi/annotations/service/DService3.java | 28 ++ .../javaapi/annotations/service/EService.java | 30 ++ .../javaapi/annotations/service/FService.java | 30 ++ .../javaapi/annotations/service/GService1.java | 30 ++ .../javaapi/annotations/service/GService2.java | 26 ++ .../javaapi/annotations/service/HService.java | 50 +++ .../javaapi/annotations/service/IService.java | 54 +++ .../javaapi/annotations/service/impl/AObject.java | 33 ++ .../annotations/service/impl/AServiceImpl.java | 37 ++ .../annotations/service/impl/BServiceImpl.java | 111 +++++ .../annotations/service/impl/CServiceImpl.java | 34 ++ .../annotations/service/impl/DServiceImpl.java | 41 ++ .../annotations/service/impl/EServiceImpl.java | 32 ++ .../annotations/service/impl/FServiceImpl.java | 37 ++ .../annotations/service/impl/FServiceImpl2.java | 26 ++ .../annotations/service/impl/GServiceImpl.java | 42 ++ .../annotations/service/impl/HServiceImpl.java | 105 +++++ .../annotations/service/impl/IServiceImpl.java | 107 +++++ .../service/src/main/resources/service.composite | 82 ++++ .../service/ServiceAnnotationTestCase.java | 335 +++++++++++++++ .../vtest/java-api/apis/callablereference/pom.xml | 45 ++ .../javaapi/apis/callablereference/AComponent.java | 38 ++ .../javaapi/apis/callablereference/BCallback.java | 26 ++ .../javaapi/apis/callablereference/BComponent.java | 38 ++ .../callablereference/impl/AComponentImpl.java | 104 +++++ .../callablereference/impl/BComponentImpl.java | 70 +++ .../src/main/resources/callablereference.composite | 34 ++ .../CallableReferenceTestCase.java | 118 +++++ .../vtest/java-api/apis/componentcontext/pom.xml | 45 ++ .../javaapi/apis/componentcontext/AComponent.java | 42 ++ .../javaapi/apis/componentcontext/BComponent.java | 29 ++ .../javaapi/apis/componentcontext/BService.java | 34 ++ .../javaapi/apis/componentcontext/CService.java | 29 ++ .../javaapi/apis/componentcontext/DComponent.java | 29 ++ .../apis/componentcontext/impl/AComponentImpl.java | 124 ++++++ .../impl/AUnannotatedComponentImpl.java | 121 ++++++ .../apis/componentcontext/impl/BComponentImpl.java | 52 +++ .../apis/componentcontext/impl/DComponentImpl.java | 32 ++ .../src/main/resources/ab.composite | 47 ++ .../componentcontext/ComponentContextTestCase.java | 191 +++++++++ .../vtest/java-api/apis/conversation/pom.xml | 45 ++ .../javaapi/apis/conversation/AComponent.java | 34 ++ .../javaapi/apis/conversation/BComponent.java | 39 ++ .../apis/conversation/impl/AComponentImpl.java | 73 ++++ .../apis/conversation/impl/BComponentImpl.java | 78 ++++ .../src/main/resources/conversation.composite | 34 ++ .../apis/conversation/ConversationTestCase.java | 70 +++ .../contrib/vtest/java-api/apis/exception/pom.xml | 45 ++ .../vtest/javaapi/apis/exception/AComponent.java | 40 ++ .../vtest/javaapi/apis/exception/BCallback.java | 26 ++ .../vtest/javaapi/apis/exception/BComponent.java | 35 ++ .../vtest/javaapi/apis/exception/CComponent.java | 34 ++ .../vtest/javaapi/apis/exception/DComponent.java | 33 ++ .../vtest/javaapi/apis/exception/DException.java | 30 ++ .../apis/exception/impl/AComponentImpl.java | 128 ++++++ .../apis/exception/impl/BComponentImpl.java | 64 +++ .../apis/exception/impl/CComponentImpl.java | 50 +++ .../apis/exception/impl/DComponentImpl.java | 37 ++ .../src/main/resources/exception.composite | 44 ++ .../javaapi/apis/exception/ExceptionTestCase.java | 132 ++++++ sca-java-2.x/contrib/vtest/java-api/apis/pom.xml | 64 +++ .../vtest/java-api/apis/requestcontext/pom.xml | 45 ++ .../javaapi/apis/requestcontext/AComponent.java | 35 ++ .../javaapi/apis/requestcontext/BCallback.java | 27 ++ .../javaapi/apis/requestcontext/BComponent.java | 35 ++ .../apis/requestcontext/impl/AComponentImpl.java | 102 +++++ .../apis/requestcontext/impl/BComponentImpl.java | 61 +++ .../src/main/resources/requestcontext.composite | 34 ++ .../requestcontext/RequestContextTestCase.java | 109 +++++ .../vtest/java-api/apis/servicereference/pom.xml | 45 ++ .../javaapi/apis/servicereference/AComponent.java | 37 ++ .../javaapi/apis/servicereference/BCallback.java | 26 ++ .../javaapi/apis/servicereference/BComponent.java | 38 ++ .../javaapi/apis/servicereference/CComponent.java | 27 ++ .../apis/servicereference/impl/AComponentImpl.java | 119 ++++++ .../apis/servicereference/impl/BComponentImpl.java | 74 ++++ .../apis/servicereference/impl/CComponentImpl.java | 38 ++ .../apis/servicereference/impl/TestObject.java | 37 ++ .../src/main/resources/servicereference.composite | 39 ++ .../servicereference/ServiceReferenceTestCase.java | 106 +++++ .../vtest/java-api/conversation/callback/pom.xml | 46 ++ .../javaapi/conversation/callback/AService.java | 30 ++ .../conversation/callback/AServiceCallback.java | 33 ++ .../javaapi/conversation/callback/BService.java | 40 ++ .../conversation/callback/BServiceCallback.java | 33 ++ .../javaapi/conversation/callback/CService.java | 39 ++ .../javaapi/conversation/callback/Utilities.java | 32 ++ .../callback/accessing/AServiceCallback.java | 33 ++ .../conversation/callback/accessing/BService.java | 41 ++ .../callback/accessing/impl/AServiceImpl.java | 67 +++ .../callback/accessing/impl/BServiceImpl.java | 60 +++ .../callback/custom/AServiceCallback.java | 33 ++ .../conversation/callback/custom/BService.java | 38 ++ .../callback/custom/CustomCallback.java | 35 ++ .../callback/custom/impl/AServiceImpl.java | 61 +++ .../callback/custom/impl/BServiceImpl.java | 49 +++ .../callback/custom/impl/CustomCallbackImpl.java | 38 ++ .../conversation/callback/id/AServiceCallback.java | 33 ++ .../javaapi/conversation/callback/id/BService.java | 41 ++ .../callback/id/impl/AServiceImpl.java | 73 ++++ .../callback/id/impl/BServiceImpl.java | 60 +++ .../conversation/callback/impl/AServiceImpl.java | 61 +++ .../conversation/callback/impl/BServiceImpl.java | 73 ++++ .../conversation/callback/impl/CServiceImpl.java | 49 +++ .../callback/local/AServiceCallback.java | 31 ++ .../conversation/callback/local/BService.java | 37 ++ .../callback/local/BServiceCallback.java | 31 ++ .../conversation/callback/local/CService.java | 37 ++ .../callback/local/impl/AServiceImpl.java | 61 +++ .../callback/local/impl/BServiceImpl.java | 73 ++++ .../callback/local/impl/CServiceImpl.java | 49 +++ .../conversation/callback/mixed/CService.java | 38 ++ .../callback/mixed/impl/BServiceImpl.java | 73 ++++ .../callback/mixed/impl/CServiceImpl.java | 49 +++ .../callback/multi/AServiceCallback.java | 33 ++ .../callback/multi/AServiceCallback2.java | 33 ++ .../conversation/callback/multi/BService.java | 39 ++ .../conversation/callback/multi/BService2.java | 39 ++ .../callback/multi/impl/AServiceImpl.java | 79 ++++ .../callback/multi/impl/BServiceImpl.java | 64 +++ .../callback/stateless/BServiceCallback.java | 31 ++ .../conversation/callback/stateless/CService.java | 39 ++ .../callback/stateless/impl/BServiceImpl.java | 73 ++++ .../callback/stateless/impl/BServiceImpl2.java | 81 ++++ .../callback/stateless/impl/BServiceImpl3.java | 74 ++++ .../callback/stateless/impl/CServiceImpl.java | 49 +++ .../main/resources/callback-accessing.composite | 34 ++ .../src/main/resources/callback-custom.composite | 40 ++ .../src/main/resources/callback-id.composite | 34 ++ .../src/main/resources/callback-local.composite | 40 ++ .../src/main/resources/callback-mixed.composite | 40 ++ .../src/main/resources/callback-multi.composite | 35 ++ .../callback-stateless-callbackfieldnull.composite | 40 ++ .../callback-stateless-callbackid.composite | 40 ++ .../main/resources/callback-stateless.composite | 41 ++ .../callback/src/main/resources/callback.composite | 40 ++ .../conversation/callback/CallbackTestCase.java | 377 ++++++++++++++++ .../contrib/vtest/java-api/conversation/id/pom.xml | 46 ++ .../vtest/javaapi/conversation/id/AService.java | 39 ++ .../vtest/javaapi/conversation/id/BService.java | 41 ++ .../vtest/javaapi/conversation/id/CService.java | 37 ++ .../conversation/id/CustomConversationId.java | 54 +++ .../javaapi/conversation/id/impl/AServiceImpl.java | 69 +++ .../javaapi/conversation/id/impl/BServiceImpl.java | 65 +++ .../javaapi/conversation/id/impl/CServiceImpl.java | 56 +++ .../src/main/resources/conversation-id.composite | 40 ++ .../conversation/id/ConversationIDTestCase.java | 118 +++++ .../vtest/java-api/conversation/lifetime/pom.xml | 46 ++ .../javaapi/conversation/lifetime/AService.java | 56 +++ .../conversation/lifetime/AServiceCallback.java | 35 ++ .../javaapi/conversation/lifetime/BService.java | 47 ++ .../lifetime/BServiceBusinessException.java | 53 +++ .../javaapi/conversation/lifetime/CService.java | 34 ++ .../javaapi/conversation/lifetime/DService.java | 38 ++ .../conversation/lifetime/impl/AServiceImpl.java | 197 +++++++++ .../conversation/lifetime/impl/BServiceImpl.java | 64 +++ .../conversation/lifetime/impl/CServiceImpl.java | 40 ++ .../conversation/lifetime/impl/DServiceImpl.java | 78 ++++ .../lifetime/src/main/resources/lifetime.composite | 45 ++ .../conversation/lifetime/LifetimeTestCase.java | 216 ++++++++++ .../vtest/java-api/conversation/parameters/pom.xml | 46 ++ .../javaapi/conversation/parameters/AService.java | 28 ++ .../javaapi/conversation/parameters/BService.java | 34 ++ .../javaapi/conversation/parameters/CService.java | 32 ++ .../conversation/parameters/impl/AServiceImpl.java | 47 ++ .../conversation/parameters/impl/BServiceImpl.java | 40 ++ .../conversation/parameters/impl/CServiceImpl.java | 44 ++ .../src/main/resources/parameters.composite | 40 ++ .../parameters/ConversationParametersTestCase.java | 69 +++ .../contrib/vtest/java-api/conversation/pom.xml | 63 +++ sca-java-2.x/contrib/vtest/java-api/pom.xml | 70 +++ sca-java-2.x/contrib/vtest/pom.xml | 56 +++ sca-java-2.x/contrib/vtest/processcomments.rb | 198 +++++++++ sca-java-2.x/contrib/vtest/utilities/pom.xml | 48 +++ .../tuscany/sca/vtest/utilities/ServiceFinder.java | 104 +++++ .../vtest/wsbinding/nowsdl/defaultbinding/pom.xml | 58 +++ .../wsbinding/nowsdl/defaultbinding/AService.java | 37 ++ .../wsbinding/nowsdl/defaultbinding/BService.java | 35 ++ .../wsbinding/nowsdl/defaultbinding/CService.java | 37 ++ .../wsbinding/nowsdl/defaultbinding/DService.java | 45 ++ .../nowsdl/defaultbinding/impl/AServiceImpl.java | 51 +++ .../nowsdl/defaultbinding/impl/BServiceImpl.java | 44 ++ .../nowsdl/defaultbinding/impl/CServiceImpl.java | 48 +++ .../nowsdl/defaultbinding/impl/DServiceImpl.java | 70 +++ .../src/main/resources/nowsdl.composite | 61 +++ .../NoWsdlDefaultBindingTestCase.java | 112 +++++ .../wsbinding/nowsdl/multisoapbindings/pom.xml | 58 +++ .../nowsdl/multisoapbindings/AService.java | 37 ++ .../nowsdl/multisoapbindings/BService.java | 35 ++ .../nowsdl/multisoapbindings/CService.java | 37 ++ .../nowsdl/multisoapbindings/DService.java | 45 ++ .../multisoapbindings/impl/AServiceImpl.java | 51 +++ .../multisoapbindings/impl/BServiceImpl.java | 44 ++ .../multisoapbindings/impl/CServiceImpl.java | 48 +++ .../multisoapbindings/impl/DServiceImpl.java | 70 +++ .../resources/nowsdlmultisoapbindings.composite | 135 ++++++ .../multisoapbindings/GeneratedWSDLTestCase.java | 162 +++++++ .../NoWsdlMultiSoapBindingsTestCase.java | 213 +++++++++ .../contrib/vtest/wsbinding/nowsdl/pom.xml | 69 +++ .../vtest/wsbinding/nowsdl/promoted/pom.xml | 58 +++ .../vtest/wsbinding/nowsdl/promoted/AService.java | 37 ++ .../vtest/wsbinding/nowsdl/promoted/BService.java | 35 ++ .../wsbinding/nowsdl/promoted/BServiceSOAP.java | 35 ++ .../wsbinding/nowsdl/promoted/BServiceSOAP11.java | 35 ++ .../wsbinding/nowsdl/promoted/BServiceSOAP12.java | 35 ++ .../vtest/wsbinding/nowsdl/promoted/CService.java | 37 ++ .../vtest/wsbinding/nowsdl/promoted/DService.java | 45 ++ .../nowsdl/promoted/impl/AServiceImpl.java | 51 +++ .../nowsdl/promoted/impl/BServiceImpl.java | 44 ++ .../nowsdl/promoted/impl/BServiceSOAP11Impl.java | 44 ++ .../nowsdl/promoted/impl/BServiceSOAP12Impl.java | 44 ++ .../nowsdl/promoted/impl/BServiceSOAPImpl.java | 44 ++ .../nowsdl/promoted/impl/CServiceImpl.java | 48 +++ .../nowsdl/promoted/impl/DServiceImpl.java | 70 +++ .../src/main/resources/nowsdlpromoted.composite | 246 +++++++++++ .../nowsdl/promoted/NoWsdlPromoted1TestCase.java | 85 ++++ .../nowsdl/promoted/NoWsdlPromoted2TestCase.java | 118 +++++ .../vtest/wsbinding/nowsdl/soapversion/pom.xml | 58 +++ .../wsbinding/nowsdl/soapversion/AService.java | 37 ++ .../wsbinding/nowsdl/soapversion/BService.java | 35 ++ .../wsbinding/nowsdl/soapversion/BServiceSOAP.java | 35 ++ .../nowsdl/soapversion/BServiceSOAP11.java | 35 ++ .../nowsdl/soapversion/BServiceSOAP12.java | 35 ++ .../wsbinding/nowsdl/soapversion/CService.java | 37 ++ .../wsbinding/nowsdl/soapversion/DService.java | 45 ++ .../nowsdl/soapversion/impl/AServiceImpl.java | 51 +++ .../nowsdl/soapversion/impl/BServiceImpl.java | 44 ++ .../soapversion/impl/BServiceSOAP11Impl.java | 44 ++ .../soapversion/impl/BServiceSOAP12Impl.java | 44 ++ .../nowsdl/soapversion/impl/BServiceSOAPImpl.java | 44 ++ .../nowsdl/soapversion/impl/CServiceImpl.java | 48 +++ .../nowsdl/soapversion/impl/DServiceImpl.java | 70 +++ .../src/main/resources/nowsdlsoapversion.composite | 205 +++++++++ .../nowsdl/soapversion/GeneratedWSDLTestCase.java | 438 +++++++++++++++++++ .../soapversion/NoWsdlNoSoapVersionTestCase.java | 84 ++++ .../soapversion/NoWsdlSoapVersionTestCase.java | 121 ++++++ sca-java-2.x/contrib/vtest/wsbinding/pom.xml | 68 +++ .../contrib/vtest/wsbinding/service/pom.xml | 58 +++ .../sca/vtest/wsbinding/AClientService.java | 29 ++ .../tuscany/sca/vtest/wsbinding/AService.java | 29 ++ .../vtest/wsbinding/impl/AClientServiceImpl.java | 38 ++ .../sca/vtest/wsbinding/impl/AServiceImpl.java | 33 ++ .../service/src/main/resources/aservice.wsdl | 139 ++++++ .../resources/endpoint-uri-resolution.composite | 103 +++++ .../src/main/resources/endpointreference.composite | 40 ++ .../src/main/resources/wsdlbinding.composite | 45 ++ .../src/main/resources/wsdlendpoint.composite | 37 ++ .../service/src/main/resources/wsdlport.composite | 43 ++ .../src/main/resources/wsdlservice.composite | 43 ++ .../vtest/wsbinding/EndpointReferenceTestCase.java | 67 +++ .../wsbinding/EndpointUriResolutionTestCase.java | 209 +++++++++ .../sca/vtest/wsbinding/WsdlBindingTestCase.java | 68 +++ .../sca/vtest/wsbinding/WsdlEndpointTestCase.java | 66 +++ .../sca/vtest/wsbinding/WsdlPortTestCase.java | 66 +++ .../sca/vtest/wsbinding/WsdlServiceTestCase.java | 69 +++ .../vtest/wsbinding/wsdlelement/binding/pom.xml | 58 +++ .../wsbinding/wsdlelement/binding/AService.java | 40 ++ .../wsbinding/wsdlelement/binding/BService.java | 35 ++ .../wsbinding/wsdlelement/binding/BService2.java | 33 ++ .../wsbinding/wsdlelement/binding/CService.java | 37 ++ .../wsbinding/wsdlelement/binding/DService.java | 45 ++ .../wsdlelement/binding/impl/AServiceImpl.java | 63 +++ .../wsdlelement/binding/impl/BService2Impl.java | 40 ++ .../wsdlelement/binding/impl/BServiceImpl.java | 44 ++ .../wsdlelement/binding/impl/CServiceImpl.java | 48 +++ .../wsdlelement/binding/impl/DServiceImpl.java | 70 +++ .../binding/src/main/resources/bservice.wsdl | 228 ++++++++++ .../binding/src/main/resources/cservice.wsdl | 173 ++++++++ .../main/resources/wsdlelement.binding.composite | 114 +++++ .../binding/WsdlElementBindingTestCase.java | 190 ++++++++ .../contrib/vtest/wsbinding/wsdlelement/pom.xml | 68 +++ .../vtest/wsbinding/wsdlelement/port/pom.xml | 58 +++ .../vtest/wsbinding/wsdlelement/port/AService.java | 40 ++ .../vtest/wsbinding/wsdlelement/port/BService.java | 35 ++ .../wsbinding/wsdlelement/port/BService2.java | 33 ++ .../vtest/wsbinding/wsdlelement/port/CService.java | 37 ++ .../vtest/wsbinding/wsdlelement/port/DService.java | 45 ++ .../wsdlelement/port/impl/AServiceImpl.java | 62 +++ .../wsdlelement/port/impl/BService2Impl.java | 40 ++ .../wsdlelement/port/impl/BServiceImpl.java | 44 ++ .../wsdlelement/port/impl/CServiceImpl.java | 48 +++ .../wsdlelement/port/impl/DServiceImpl.java | 70 +++ .../port/src/main/resources/bservice.wsdl | 238 +++++++++++ .../port/src/main/resources/cservice.wsdl | 173 ++++++++ .../src/main/resources/wsdlelement.port.composite | 115 +++++ .../wsdlelement/port/WsdlElementPortTestCase.java | 188 ++++++++ .../vtest/wsbinding/wsdlelement/service/pom.xml | 58 +++ .../wsbinding/wsdlelement/service/AService.java | 50 +++ .../wsbinding/wsdlelement/service/BService.java | 35 ++ .../wsbinding/wsdlelement/service/BService2.java | 33 ++ .../wsbinding/wsdlelement/service/CService.java | 37 ++ .../wsbinding/wsdlelement/service/DService.java | 45 ++ .../wsdlelement/service/impl/AServiceImpl.java | 88 ++++ .../wsdlelement/service/impl/BService2Impl.java | 40 ++ .../wsdlelement/service/impl/BServiceImpl.java | 44 ++ .../wsdlelement/service/impl/CServiceImpl.java | 48 +++ .../wsdlelement/service/impl/DServiceImpl.java | 70 +++ .../service/src/main/resources/bservice.wsdl | 225 ++++++++++ .../service/src/main/resources/cservice.wsdl | 173 ++++++++ .../main/resources/wsdlelement.service.composite | 145 +++++++ .../service/WsdlElementServiceTestCase.java | 235 ++++++++++ 465 files changed, 29243 insertions(+) create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/AService.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/BService.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/CService.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/component.composite create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/nonuniquename.composite create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/serviceelement.composite create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/servicewithbinding.composite create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/servicewithinterface.composite create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/zerocomponents.composite create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/zeroimplelements.composite create mode 100644 sca-java-2.x/contrib/vtest/assembly/component/src/test/java/org/apache/tuscany/sca/vtest/assembly/component/ComponentTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/composite/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/AService.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/BService.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/CService.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/composite/src/main/resources/composite.composite create mode 100644 sca-java-2.x/contrib/vtest/assembly/composite/src/test/java/org/apache/tuscany/sca/vtest/assembly/composite/CompositeTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/ctypefile/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/AService.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/BService.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/resources/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/AServiceImpl.componentType create mode 100644 sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/resources/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/BServiceImpl.componentType create mode 100644 sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/resources/typefile.composite create mode 100644 sca-java-2.x/contrib/vtest/assembly/ctypefile/src/test/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/CompomnentTypeFileTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/assembly/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversational/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/B1Service.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/B2Service.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/impl/B1ServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/impl/B2ServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/resources/conversation.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/ConversationAnnotationTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/B2Service.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/CService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/B2ServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/security/ACallbackHandler.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/security/JaasLoginModule.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/security/UserPrincipal.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/AJass.config create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/conversation.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/definitions.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/singleprincipal.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/ConversationAttributesTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/SinglePricipalTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr1Impl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr2Impl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr3Impl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr4Impl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err1/AServiceErr1.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err2/AServiceErr2.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err3/AServiceErr3.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err4/AServiceErr4.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/proper/AService.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/DestroyAnnotationTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/resources/endsconversation.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/EndsConversationTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr1Impl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr2Impl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr3Impl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr4Impl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err1/AServiceErr1.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err2/AServiceErr2.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err3/AServiceErr3.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err4/AServiceErr4.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/proper/AService.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/init/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/InitAnnotationTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/oneway/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/resources/oneway.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/OneWayAnnotationTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/AnotherAService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/CService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/AObject.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/AnotherAServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl1.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl2.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl3.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl4.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl5.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl6.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/resources/property.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/property/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/PropertyAnnotationTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/reference/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/impl/AUnannotatedServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/resources/ab.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/ReferenceAnnotationTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/CService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/DService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/FService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/GService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/HService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/IService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/JService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/KService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/LService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/MService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/NService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/OService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/DServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/FServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/GServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/HServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/IServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/JServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/KServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/LServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/MServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/NServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/OServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/resources/scope.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/ScopeAnnotationTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/CService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/DService1.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/DService2.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/DService3.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/EService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/FService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/GService1.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/GService2.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/HService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/IService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/AObject.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/DServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/EServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/FServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/FServiceImpl2.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/GServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/HServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/IServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/resources/service.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/annotations/service/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/ServiceAnnotationTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/callablereference/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/AComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/AComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/BComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/resources/callablereference.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/CallableReferenceTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/AComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/BComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/CService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/DComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/AComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/AUnannotatedComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/BComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/DComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/resources/ab.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/ComponentContextTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/conversation/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/AComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/BComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/impl/AComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/impl/BComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/resources/conversation.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/ConversationTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/AComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/BCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/BComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/CComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/DComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/DException.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/AComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/BComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/CComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/DComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/resources/exception.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/exception/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/ExceptionTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/AComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/BCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/BComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/impl/AComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/impl/BComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/resources/requestcontext.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/RequestContextTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/servicereference/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/AComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/BCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/BComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/CComponent.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/AComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/BComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/CComponentImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/TestObject.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/resources/servicereference.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/ServiceReferenceTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/AServiceCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/BServiceCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/CService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/Utilities.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/AServiceCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/AServiceCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/CustomCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/impl/CustomCallbackImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/AServiceCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/AServiceCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/BServiceCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/CService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/mixed/CService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/mixed/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/mixed/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/AServiceCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/AServiceCallback2.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/BService2.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/BServiceCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/CService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/BServiceImpl2.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/BServiceImpl3.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-accessing.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-custom.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-id.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-local.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-mixed.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-multi.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-stateless-callbackfieldnull.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-stateless-callbackid.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-stateless.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/CallbackTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/id/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/CService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/CustomConversationId.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/resources/conversation-id.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/id/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/ConversationIDTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/AServiceCallback.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/BServiceBusinessException.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/CService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/DService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/DServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/resources/lifetime.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/LifetimeTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/parameters/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/AService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/BService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/CService.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/resources/parameters.composite create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/ConversationParametersTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/java-api/conversation/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/java-api/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/processcomments.rb create mode 100644 sca-java-2.x/contrib/vtest/utilities/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/utilities/src/main/java/org/apache/tuscany/sca/vtest/utilities/ServiceFinder.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/AService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/BService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/CService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/DService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/DServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/resources/nowsdl.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/NoWsdlDefaultBindingTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/AService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/BService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/CService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/DService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/DServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/resources/nowsdlmultisoapbindings.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/GeneratedWSDLTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/NoWsdlMultiSoapBindingsTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/AService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BServiceSOAP.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BServiceSOAP11.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BServiceSOAP12.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/CService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/DService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceSOAP11Impl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceSOAP12Impl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceSOAPImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/DServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/resources/nowsdlpromoted.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/NoWsdlPromoted1TestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/NoWsdlPromoted2TestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/AService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BServiceSOAP.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BServiceSOAP11.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BServiceSOAP12.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/CService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/DService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceSOAP11Impl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceSOAP12Impl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceSOAPImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/DServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/resources/nowsdlsoapversion.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/GeneratedWSDLTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/NoWsdlNoSoapVersionTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/NoWsdlSoapVersionTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/AClientService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/AService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/impl/AClientServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/aservice.wsdl create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/endpoint-uri-resolution.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/endpointreference.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlbinding.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlendpoint.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlport.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlservice.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/EndpointReferenceTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/EndpointUriResolutionTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlBindingTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlEndpointTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlPortTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlServiceTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/AService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/BService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/BService2.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/CService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/DService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/BService2Impl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/DServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/resources/bservice.wsdl create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/resources/cservice.wsdl create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/resources/wsdlelement.binding.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/WsdlElementBindingTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/AService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/BService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/BService2.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/CService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/DService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/BService2Impl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/DServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/resources/bservice.wsdl create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/resources/cservice.wsdl create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/resources/wsdlelement.port.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/WsdlElementPortTestCase.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/pom.xml create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/AService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/BService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/BService2.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/CService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/DService.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/AServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/BService2Impl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/BServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/CServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/DServiceImpl.java create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/resources/bservice.wsdl create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/resources/cservice.wsdl create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/resources/wsdlelement.service.composite create mode 100644 sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/WsdlElementServiceTestCase.java (limited to 'sca-java-2.x/contrib/vtest') diff --git a/sca-java-2.x/contrib/vtest/assembly/component/pom.xml b/sca-java-2.x/contrib/vtest/assembly/component/pom.xml new file mode 100644 index 0000000000..b2eac429c1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/pom.xml @@ -0,0 +1,49 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-assembly + 2.0-SNAPSHOT + ../pom.xml + + vtest-assembly-component + + Apache Tuscany SCA Assembly Verification Tests - Component + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + + + diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/AService.java b/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/AService.java new file mode 100644 index 0000000000..592020c180 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/AService.java @@ -0,0 +1,31 @@ +/* + * 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.vtest.assembly.component; + +/** + * Simple Remotable Service + */ +public interface AService { + + public String getState(); + public String getBProperty(); + public String getB2Property(); + + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/BService.java b/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/BService.java new file mode 100644 index 0000000000..0d95c8e4b8 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/BService.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 org.apache.tuscany.sca.vtest.assembly.component; + +/** + * Simple Service + */ +public interface BService { + + public String getState(); + public String getSomeProperty(); + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/CService.java b/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/CService.java new file mode 100644 index 0000000000..c979c57f31 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/CService.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.assembly.component; + +/** + * + */ +public interface CService { + + public String getState(); + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/AServiceImpl.java new file mode 100644 index 0000000000..ff17a71a3d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/AServiceImpl.java @@ -0,0 +1,49 @@ +/* + * 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.vtest.assembly.component.impl; + +import org.apache.tuscany.sca.vtest.assembly.component.AService; +import org.apache.tuscany.sca.vtest.assembly.component.BService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference + protected BService b; + + @Reference + protected BService b2; + + public String getState() { + return b.getState(); + } + + public String getBProperty() { + return b.getSomeProperty(); + } + + public String getB2Property() { + return b2.getSomeProperty(); + } + +} + diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/BServiceImpl.java new file mode 100644 index 0000000000..e57ed2f951 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/BServiceImpl.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.assembly.component.impl; + +import org.apache.tuscany.sca.vtest.assembly.component.BService; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +public class BServiceImpl implements BService { + + @Property + protected String someProperty; + + public String getState() { + return "SomeStateFromB"; + } + + public String getSomeProperty() { + return someProperty; + } + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/CServiceImpl.java new file mode 100644 index 0000000000..b2b420ed6a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/java/org/apache/tuscany/sca/vtest/assembly/component/impl/CServiceImpl.java @@ -0,0 +1,31 @@ +/* + * 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.vtest.assembly.component.impl; + +public class CServiceImpl { + + private String state = "Some State"; + + public String getState() { + return state; + } + +} + diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/component.composite b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/component.composite new file mode 100644 index 0000000000..bb452feac9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/component.composite @@ -0,0 +1,41 @@ + + + + + + + + + + + + + some b component value + + + + + some b2 component value + + + diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/nonuniquename.composite b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/nonuniquename.composite new file mode 100644 index 0000000000..3019542091 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/nonuniquename.composite @@ -0,0 +1,33 @@ + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/serviceelement.composite b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/serviceelement.composite new file mode 100644 index 0000000000..9460f5a2e1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/serviceelement.composite @@ -0,0 +1,42 @@ + + + + + + + + + + + + + some b component value + + + + + + some b2 component value + + + diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/servicewithbinding.composite b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/servicewithbinding.composite new file mode 100644 index 0000000000..085d84f40e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/servicewithbinding.composite @@ -0,0 +1,33 @@ + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/servicewithinterface.composite b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/servicewithinterface.composite new file mode 100644 index 0000000000..cc915fbde5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/servicewithinterface.composite @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/zerocomponents.composite b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/zerocomponents.composite new file mode 100644 index 0000000000..6f02d7e941 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/zerocomponents.composite @@ -0,0 +1,26 @@ + + + + + + diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/zeroimplelements.composite b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/zeroimplelements.composite new file mode 100644 index 0000000000..8629f3817a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/main/resources/zeroimplelements.composite @@ -0,0 +1,38 @@ + + + + + + + + + + some b component value + + + + + some b2 component value + + + diff --git a/sca-java-2.x/contrib/vtest/assembly/component/src/test/java/org/apache/tuscany/sca/vtest/assembly/component/ComponentTestCase.java b/sca-java-2.x/contrib/vtest/assembly/component/src/test/java/org/apache/tuscany/sca/vtest/assembly/component/ComponentTestCase.java new file mode 100644 index 0000000000..0938708b91 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/component/src/test/java/org/apache/tuscany/sca/vtest/assembly/component/ComponentTestCase.java @@ -0,0 +1,150 @@ +/* + * 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.vtest.assembly.component; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.Ignore; +import org.junit.Test; +import org.oasisopen.sca.ServiceRuntimeException; + +/** + * + */ +public class ComponentTestCase { + + private void initDomain(String compositePath) { + System.out.println("Setting up"); + ServiceFinder.init(compositePath); + } + + private void cleanupDomain() { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } + + /** + * Lines 92-96: + *

+ * Components are configured instances of implementations. Components + * provide and consume services. More than one component can use and + * configure the same implementation, where each component configures the + * implementation differently. + */ + @Test + public void components1() throws Exception { + initDomain("component.composite"); + AService service = ServiceFinder.getService(AService.class, "AComponent/AService"); + Assert.assertEquals("some b component value", service.getBProperty()); + Assert.assertEquals("some b2 component value", service.getB2Property()); + cleanupDomain(); + } + + /** + * Lines 96-97: + *

+ * There can be zero or more component elements within a composite. + */ + @Test + public void components2() throws Exception { + initDomain("zerocomponents.composite"); + cleanupDomain(); + } + + /** + * Lines 142-143: + *

+ * name (required) – the name of the component. The name must be unique + * across all the components in the composite. + */ + @Test(expected = ServiceRuntimeException.class) + //@Ignore("TUSCANY-2455") + public void components3() throws Exception { + initDomain("nonuniquename.composite"); + cleanupDomain(); + } + + /** + * Lines 154-158: + *

+ * A component element has zero or one implementation element as its child, + * which points to the implementation used by the component. A component + * with no implementation element is not runnable, but components of this + * kind may be useful during a "top-down" development process as a means of + * defining the characteristics required of the implementation before the + * implementation is written. + */ + @Test + public void components4() throws Exception { + initDomain("zeroimplelements.composite"); + cleanupDomain(); + } + + /** + * Lines 159-160: + *

+ * The component element can have zero or more service elements as children + * which are used to configure the services of the component. + */ + @Test + public void components5() throws Exception { + initDomain("serviceelement.composite"); + cleanupDomain(); + } + + /** + * Lines 174-179: + *

+ * A service has zero or one interface, which describes the operations + * provided by the service. The interface is described by an interface + * element which is a child element of the service element. If no interface + * is specified, then the interface specified for the service by the + * implementation is in effect. If an interface is specified it must provide + * a compatible subset of the interface provided by the implementation, i.e. + * provide a subset of the operations defined by the implementation for the + * service. + */ + @Test + public void components6() throws Exception { + initDomain("servicewithinterface.composite"); + CService service = ServiceFinder.getService(CService.class, "CComponent"); + Assert.assertEquals("Some State", service.getState()); + cleanupDomain(); + } + + /** + * Lines 180-182: + *

+ * A service element has one or more binding elements as children. If no + * bindings are specified, then the bindings specified for the service by + * the implementation are in effect. If bindings are specified, then those + * bindings override the bindings specified by the implementation. + */ + @Test + public void components7() throws Exception { + initDomain("servicewithbinding.composite"); + CService service = ServiceFinder.getService(CService.class, "CComponent"); + Assert.assertEquals("Some State", service.getState()); + cleanupDomain(); + } + + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/composite/pom.xml b/sca-java-2.x/contrib/vtest/assembly/composite/pom.xml new file mode 100644 index 0000000000..f9922f4cac --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/composite/pom.xml @@ -0,0 +1,49 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-assembly + 2.0-SNAPSHOT + ../pom.xml + + vtest-assembly-composite + + Apache Tuscany SCA Assembly Verification Tests - Composite + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + + + diff --git a/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/AService.java b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/AService.java new file mode 100644 index 0000000000..a5cff3972b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/AService.java @@ -0,0 +1,31 @@ +/* + * 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.vtest.assembly.composite; + +/** + * Simple Remotable Service + */ +public interface AService { + + public String getState(); + public String getBProperty(); + public String getB2Property(); + + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/BService.java b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/BService.java new file mode 100644 index 0000000000..39d879e745 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/BService.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 org.apache.tuscany.sca.vtest.assembly.composite; + +/** + * Simple Service + */ +public interface BService { + + public String getState(); + public String getSomeProperty(); + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/CService.java b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/CService.java new file mode 100644 index 0000000000..dd80c4dc6a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/CService.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.assembly.composite; + +/** + * + */ +public interface CService { + + public String getState(); + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/impl/AServiceImpl.java new file mode 100644 index 0000000000..4a4aa965ce --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/impl/AServiceImpl.java @@ -0,0 +1,49 @@ +/* + * 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.vtest.assembly.composite.impl; + +import org.apache.tuscany.sca.vtest.assembly.composite.AService; +import org.apache.tuscany.sca.vtest.assembly.composite.BService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference + protected BService b; + + @Reference + protected BService b2; + + public String getState() { + return b.getState(); + } + + public String getBProperty() { + return b.getSomeProperty(); + } + + public String getB2Property() { + return b2.getSomeProperty(); + } + +} + diff --git a/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/impl/BServiceImpl.java new file mode 100644 index 0000000000..c71e2bcc16 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/impl/BServiceImpl.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.assembly.composite.impl; + +import org.apache.tuscany.sca.vtest.assembly.composite.BService; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +public class BServiceImpl implements BService { + + @Property + protected String someProperty; + + public String getState() { + return "SomeStateFromB"; + } + + public String getSomeProperty() { + return someProperty; + } + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/impl/CServiceImpl.java new file mode 100644 index 0000000000..2f091a8ef2 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/java/org/apache/tuscany/sca/vtest/assembly/composite/impl/CServiceImpl.java @@ -0,0 +1,31 @@ +/* + * 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.vtest.assembly.composite.impl; + +public class CServiceImpl { + + private String state = "Some State"; + + public String getState() { + return state; + } + +} + diff --git a/sca-java-2.x/contrib/vtest/assembly/composite/src/main/resources/composite.composite b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/resources/composite.composite new file mode 100644 index 0000000000..d533cb8dcf --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/composite/src/main/resources/composite.composite @@ -0,0 +1,41 @@ + + + + + + + + + + + + + some b component value + + + + + some b2 component value + + + diff --git a/sca-java-2.x/contrib/vtest/assembly/composite/src/test/java/org/apache/tuscany/sca/vtest/assembly/composite/CompositeTestCase.java b/sca-java-2.x/contrib/vtest/assembly/composite/src/test/java/org/apache/tuscany/sca/vtest/assembly/composite/CompositeTestCase.java new file mode 100644 index 0000000000..03f44e449c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/composite/src/test/java/org/apache/tuscany/sca/vtest/assembly/composite/CompositeTestCase.java @@ -0,0 +1,56 @@ +/* + * 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.vtest.assembly.composite; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.Ignore; +import org.junit.Test; +import org.oasisopen.sca.ServiceRuntimeException; + +/** + * + */ +public class CompositeTestCase { + + private void initDomain(String compositePath) { + System.out.println("Setting up"); + ServiceFinder.init(compositePath); + } + + private void cleanupDomain() { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } + + + /** + * Lines nn-n: + *

+ * spec + */ + @Test + public void composite1() throws Exception { + initDomain("composite.composite"); + + cleanupDomain(); + } +} diff --git a/sca-java-2.x/contrib/vtest/assembly/ctypefile/pom.xml b/sca-java-2.x/contrib/vtest/assembly/ctypefile/pom.xml new file mode 100644 index 0000000000..1eac774ff3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/ctypefile/pom.xml @@ -0,0 +1,49 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-assembly + 2.0-SNAPSHOT + ../pom.xml + + vtest-assembly-ctypefile + + Apache Tuscany SCA Assembly Verification Tests - Component Type File + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + + + diff --git a/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/AService.java b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/AService.java new file mode 100644 index 0000000000..d1df390ace --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/AService.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.assembly.ctypefile; + +/** + * Simple Remotable Service + */ +public interface AService { + + public String getState(); + public String getState2(); + public String getBProperty(); + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/BService.java b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/BService.java new file mode 100644 index 0000000000..8ee18b242f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/BService.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 org.apache.tuscany.sca.vtest.assembly.ctypefile; + +/** + * Simple Service + */ +public interface BService { + + public String getState(); + public String getSomeProperty(); + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/AServiceImpl.java new file mode 100644 index 0000000000..919e5c2953 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/AServiceImpl.java @@ -0,0 +1,53 @@ +/* + * 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.vtest.assembly.ctypefile.impl; + +import org.apache.tuscany.sca.vtest.assembly.ctypefile.AService; +import org.apache.tuscany.sca.vtest.assembly.ctypefile.BService; +import org.oasisopen.sca.annotation.Reference; + +public class AServiceImpl implements AService { + + private BService bService; + private BService b2Service; + + public void setBService(BService b) { + this.bService = b; + } + + @Reference + public void setB2Service(BService b) { + this.b2Service = b; + } + + public String getState() { + return bService.getState(); + } + + public String getState2() { + return b2Service.getState(); + } + + public String getBProperty() { + return bService.getSomeProperty(); + } + +} + diff --git a/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/BServiceImpl.java new file mode 100644 index 0000000000..fd32cb1f9b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/BServiceImpl.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.vtest.assembly.ctypefile.impl; + +import org.apache.tuscany.sca.vtest.assembly.ctypefile.BService; + +public class BServiceImpl implements BService { + + //@Property + protected String someProperty; + + public String getState() { + return "SomeStateFromB"; + } + + public String getSomeProperty() { + return someProperty; + } + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/resources/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/AServiceImpl.componentType b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/resources/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/AServiceImpl.componentType new file mode 100644 index 0000000000..173203ae21 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/resources/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/AServiceImpl.componentType @@ -0,0 +1,30 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/resources/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/BServiceImpl.componentType b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/resources/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/BServiceImpl.componentType new file mode 100644 index 0000000000..c6a0f274c4 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/resources/org/apache/tuscany/sca/vtest/assembly/ctypefile/impl/BServiceImpl.componentType @@ -0,0 +1,28 @@ + + + + + + + + componentTypeValue + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/resources/typefile.composite b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/resources/typefile.composite new file mode 100644 index 0000000000..889bb846ba --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/main/resources/typefile.composite @@ -0,0 +1,40 @@ + + + + + + + + + + + + + compositeValue + + + + + diff --git a/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/test/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/CompomnentTypeFileTestCase.java b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/test/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/CompomnentTypeFileTestCase.java new file mode 100644 index 0000000000..f8f7e45f61 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/ctypefile/src/test/java/org/apache/tuscany/sca/vtest/assembly/ctypefile/CompomnentTypeFileTestCase.java @@ -0,0 +1,111 @@ +/* + * 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.vtest.assembly.ctypefile; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * + */ +public class CompomnentTypeFileTestCase { + + protected static String compositeName = "typefile.composite"; + protected static AService aService = null; + protected static BService bService2 = null; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + aService = ServiceFinder.getService(AService.class, "AComponent/AService"); + bService2 = ServiceFinder.getService(BService.class, "BComponent2/BService"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + + } + + /** + * Lines 435-439: + *

+ * Step two covers the cases where introspection of the implementation is + * not possible or where it does not provide complete information and it + * involves looking for an SCA component type file. Component type + * information found in the component type file must be compatible with the + * equivalent information found from inspection of the implementation. + *

+ * Lines 441-444: + *

+ * In the ideal case, the component type information is determined by + * inspecting the implementation, for example as code annotations. The + * component type file provides a mechanism for the provision of component + * type information for implementation types where the information cannot be + * determined by inspecting the implementation. + */ + @Test + public void typeFile1() throws Exception { + Assert.assertSame("SomeStateFromB", aService.getState()); + } + + /** + * Lines 439-449: + *

+ * The component type file can specify partial information, with the + * remainder being derived from the implementation. + *

+ * The first test makes use of the reference to b which is provided by the + * type file. The second test makes use of the reference to b2 which is + * provided via annotation + */ + @Test + public void typeFile2() throws Exception { + Assert.assertSame("SomeStateFromB", aService.getState()); + Assert.assertSame("SomeStateFromB", aService.getState2()); + } + + /** + * Lines 450-451: + *

+ * The componentType element can contain Service elements, Reference + * elements and Property elements. + */ + @Test + public void typeFile3() throws Exception { + Assert.assertEquals("compositeValue", aService.getBProperty()); + } + + public void typeFile31() throws Exception { + Assert.assertEquals("componentTypeValue", bService2.getSomeProperty()); + } + +} diff --git a/sca-java-2.x/contrib/vtest/assembly/pom.xml b/sca-java-2.x/contrib/vtest/assembly/pom.xml new file mode 100644 index 0000000000..49e33352b4 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/assembly/pom.xml @@ -0,0 +1,70 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-vtest + 2.0-SNAPSHOT + ../pom.xml + + vtest-assembly + pom + Apache Tuscany SCA Assembly Verification Tests + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + vtest-utilities + 2.0-SNAPSHOT + runtime + + + + + + + + default + + true + + + ctypefile + component + composite + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/pom.xml b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/pom.xml new file mode 100644 index 0000000000..b9fa0ff9b9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-annotations-conversation + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Annotations - @Conversation + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/AService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/AService.java new file mode 100644 index 0000000000..bc7212f70c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/AService.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.annotations.conversational; + +/** + * Simple Remotable Service + */ +public interface AService { + + public String setThenGetB1State(String someState); + + public String setThenGetB2State(String someState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/B1Service.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/B1Service.java new file mode 100644 index 0000000000..76c857126a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/B1Service.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 org.apache.tuscany.sca.vtest.javaapi.annotations.conversational; + +/** + * Simple Local Service + */ +public interface B1Service { + + public void setState(String someState); + public String getState(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/B2Service.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/B2Service.java new file mode 100644 index 0000000000..23791f2ca9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/B2Service.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.vtest.javaapi.annotations.conversational; + +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Local Service + */ +@Conversational +public interface B2Service { + + public void setState(String someState); + public String getState(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/impl/AServiceImpl.java new file mode 100644 index 0000000000..b8e346681c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/impl/AServiceImpl.java @@ -0,0 +1,47 @@ +/* + * 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.vtest.javaapi.annotations.conversational.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversational.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversational.B1Service; +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversational.B2Service; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference + protected B1Service b1; + + @Reference + protected B2Service b2; + + public String setThenGetB1State(String someState) { + b1.setState(someState); + return b1.getState(); + } + + public String setThenGetB2State(String someState) { + b2.setState(someState); + return b2.getState(); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/impl/B1ServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/impl/B1ServiceImpl.java new file mode 100644 index 0000000000..75bac4bf18 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/impl/B1ServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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.vtest.javaapi.annotations.conversational.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversational.B1Service; +import org.oasisopen.sca.annotation.Service; + +@Service(B1Service.class) +public class B1ServiceImpl implements B1Service { + + String someState; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/impl/B2ServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/impl/B2ServiceImpl.java new file mode 100644 index 0000000000..860d60b0de --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/impl/B2ServiceImpl.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.javaapi.annotations.conversational.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversational.B2Service; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(B2Service.class) +@Scope("COMPOSITE") +public class B2ServiceImpl implements B2Service { + + String someState; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/resources/conversation.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/resources/conversation.composite new file mode 100644 index 0000000000..4c2de35d52 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/main/resources/conversation.composite @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/ConversationAnnotationTestCase.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/ConversationAnnotationTestCase.java new file mode 100644 index 0000000000..c00d5f1c10 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversational/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversational/ConversationAnnotationTestCase.java @@ -0,0 +1,91 @@ +/* + * 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.vtest.javaapi.annotations.conversational; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * This test class tests the Service annotation described in section 1.2.1 and + * 1.8.17 + */ +public class ConversationAnnotationTestCase { + + protected static String compositeName = "conversation.composite"; + protected static AService aService = null; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + aService = ServiceFinder.getService(AService.class, "AComponent"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + + } + + /** + * Line 328:
+ *

+ * When "@Conversational" is not specified on a service interface, the + * service contract is stateless.
+ *

+ * Line 394, 395:
+ * A service may be declared as conversational by marking its Java interface + * with "@Conversational". If a service interface is not marked with + * "@Conversational", it is stateless.
+ *

+ * BService has no "@Conversation" annotation so communication from A-> is + * stateless + */ + @Test + public void atConversation1() throws Exception { + String thisState = "This State"; + Assert.assertNotSame(thisState, aService.setThenGetB1State(thisState)); + } + + /** + * Line 325-327:
+ *

+ * Java service interfaces may be annotated to specify whether their + * contract is conversational as described in the Assembly Specification + * by using the "@Conversational" annotation. A conversational service + * indicates that requests to the service are correlated in some way + */ + @Test + public void atConversation2() throws Exception { + String thisState = "This State"; + Assert.assertSame(thisState, aService.setThenGetB2State(thisState)); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/pom.xml b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/pom.xml new file mode 100644 index 0000000000..0c0236b440 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/pom.xml @@ -0,0 +1,53 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-annotations-conversationattributes + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Annotations - @ConversationAttributes + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-policy-security + 2.0-SNAPSHOT + runtime + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/AService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/AService.java new file mode 100644 index 0000000000..a3f1f11826 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/AService.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.annotations.conversationattributes; + +/** + * Simple Service + */ +public interface AService { + + public void testMaxAge() throws InterruptedException; + public void testMaxIdle() throws InterruptedException; + public void testSinglePrincipal(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/B2Service.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/B2Service.java new file mode 100644 index 0000000000..7290c31f1a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/B2Service.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.vtest.javaapi.annotations.conversationattributes; + +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Service + */ +@Conversational +public interface B2Service { + + public void setState(String someState); + public String getState(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/BService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/BService.java new file mode 100644 index 0000000000..d38ca0276c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/BService.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.vtest.javaapi.annotations.conversationattributes; + +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Service + */ +@Conversational +public interface BService { + + public void setState(String someState); + public String getState(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/CService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/CService.java new file mode 100644 index 0000000000..5db8768398 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/CService.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.annotations.conversationattributes; + +import org.oasisopen.sca.ServiceReference; + +/** + * Simple Service + */ +public interface CService { + + public void testSinglePricipal(ServiceReference bReference); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/AServiceImpl.java new file mode 100644 index 0000000000..a0a654920d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/AServiceImpl.java @@ -0,0 +1,80 @@ +/* + * 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.vtest.javaapi.annotations.conversationattributes.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversationattributes.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversationattributes.B2Service; +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversationattributes.BService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversationattributes.CService; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference + protected BService b; + + @Reference + protected B2Service b2; + + @Reference + protected CService c; + + @Context + protected ComponentContext context; + + private void delayForSeconds(int numSeconds) { + try { + Thread.sleep(numSeconds * 1000);// millisecs + } catch (InterruptedException ex) { + throw new Error(ex); + } + } + + public void testMaxAge() { + + String someState = "someState"; + b.setState(someState); + delayForSeconds(2); + b.setState(someState); + + } + + public void testMaxIdle() { + + String someState = "someState"; + b2.setState(someState); + delayForSeconds(2); + b2.setState(someState); + + } + + public void testSinglePrincipal() { + + b.setState("Some state"); + System.out.println("Calling c and passing reference to b"); + c.testSinglePricipal(context.getServiceReference(BService.class, "b")); + + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/B2ServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/B2ServiceImpl.java new file mode 100644 index 0000000000..2f711be74d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/B2ServiceImpl.java @@ -0,0 +1,42 @@ +/* + * 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.vtest.javaapi.annotations.conversationattributes.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversationattributes.BService; +import org.oasisopen.sca.annotation.ConversationAttributes; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +@ConversationAttributes(maxIdleTime="1 seconds") +public class B2ServiceImpl implements BService { + + String someState; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/BServiceImpl.java new file mode 100644 index 0000000000..f9aa1de8bd --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/BServiceImpl.java @@ -0,0 +1,42 @@ +/* + * 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.vtest.javaapi.annotations.conversationattributes.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversationattributes.BService; +import org.oasisopen.sca.annotation.ConversationAttributes; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +@ConversationAttributes(maxAge="1 seconds", singlePrincipal=true) +public class BServiceImpl implements BService { + + String someState; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/CServiceImpl.java new file mode 100644 index 0000000000..cc1c0d18fd --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/impl/CServiceImpl.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.vtest.javaapi.annotations.conversationattributes.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversationattributes.BService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.conversationattributes.CService; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl implements CService { + + public void testSinglePricipal(ServiceReference bReference) { + + System.out.println("In C calling set state on passed reference to B"); + bReference.getService().setState("someState"); + + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/security/ACallbackHandler.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/security/ACallbackHandler.java new file mode 100644 index 0000000000..3820240ee2 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/security/ACallbackHandler.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.vtest.javaapi.annotations.conversationattributes.security; + +import java.io.IOException; + +import javax.security.auth.callback.Callback; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.callback.NameCallback; +import javax.security.auth.callback.PasswordCallback; +import javax.security.auth.callback.UnsupportedCallbackException; + +/** + * @version $Rev$ $Date$ + */ +public class ACallbackHandler implements CallbackHandler { + + public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { + for (int i = 0; i < callbacks.length; i++) { + if (callbacks[i] instanceof NameCallback) { + NameCallback nc = (NameCallback)callbacks[i]; + nc.setName("AUser"); + } else if (callbacks[i] instanceof PasswordCallback) { + PasswordCallback pc = (PasswordCallback)callbacks[i]; + pc.setPassword("AUserPasswd".toCharArray()); + } else { + throw new UnsupportedCallbackException + (callbacks[i], "Unsupported Callback!"); + } + } + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/security/JaasLoginModule.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/security/JaasLoginModule.java new file mode 100644 index 0000000000..75573b838d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/security/JaasLoginModule.java @@ -0,0 +1,179 @@ +/* + * 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.vtest.javaapi.annotations.conversationattributes.security; + +import java.security.Principal; +import java.util.Map; + +import javax.security.auth.Subject; +import javax.security.auth.callback.Callback; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.callback.NameCallback; +import javax.security.auth.callback.PasswordCallback; +import javax.security.auth.login.LoginException; +import javax.security.auth.spi.LoginModule; + + +/** + * @version $Rev$ $Date$ + */ +public class JaasLoginModule implements LoginModule { + + private CallbackHandler callbackHandler; + private Subject subject; + private Principal userPrincipal; + private String userId; + private String password; + private boolean succeeded; + private boolean commitSucceeded; + + public void initialize(Subject subject, + CallbackHandler callbackHandler, + Map sharedState, + Map options) { + this.callbackHandler = callbackHandler; + this.subject = subject; + } + + public boolean login() throws LoginException { + Callback[] callbacks = new Callback[2]; + callbacks[0] = new NameCallback("UserId:"); + callbacks[1] = new PasswordCallback("Password:", false); + + try { + callbackHandler.handle(callbacks); + userId = ((NameCallback)callbacks[0]).getName(); + password = new String(((PasswordCallback)callbacks[1]).getPassword()); + + if (userId.equals("CalculatorUser") && password.equals("CalculatorUserPasswd")) { + System.out.println("Successfully AUTHENTICATED!!"); + succeeded = true; + return true; + } else { + System.out.println("Incorrect userId / password! AUTHENTICATION FAILED!!"); + return false; + } + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + *

This method is called if the LoginContext's + * overall authentication succeeded + * (the relevant REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL LoginModules + * succeeded). + * + *

If this LoginModule's own authentication attempt + * succeeded (checked by retrieving the private state saved by the + * login method), then this method associates a + * UserPrincipal + * with the Subject located in the + * LoginModule. If this LoginModule's own + * authentication attempted failed, then this method removes + * any state that was originally saved. + * + *

+ * + * @exception LoginException if the commit fails. + * + * @return true if this LoginModule's own login and commit + * attempts succeeded, or false otherwise. + */ + public boolean commit() throws LoginException { + if (succeeded == false) { + return false; + } else { + // add a Principal (authenticated identity) to the Subject + + // assume the user we authenticated is the UserPrincipal + userPrincipal = new UserPrincipal(userId); + if (!subject.getPrincipals().contains(userPrincipal)) + subject.getPrincipals().add(userPrincipal); + + // in any case, clean out state + userId = null; + password = null; + commitSucceeded = true; + return true; + } + } + + /** + *

This method is called if the LoginContext's + * overall authentication failed. + * (the relevant REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL LoginModules + * did not succeed). + * + *

If this LoginModule's own authentication attempt + * succeeded (checked by retrieving the private state saved by the + * login and commit methods), + * then this method cleans up any state that was originally saved. + * + *

+ * + * @exception LoginException if the abort fails. + * + * @return false if this LoginModule's own login and/or commit attempts + * failed, and true otherwise. + */ + public boolean abort() throws LoginException { + if (succeeded == false) { + return false; + } else if (succeeded == true && commitSucceeded == false) { + // login succeeded but overall authentication failed + succeeded = false; + userId = null; + password = null; + userPrincipal = null; + } else { + // overall authentication succeeded and commit succeeded, + // but someone else's commit failed + logout(); + } + return true; + } + + /** + * Logout the user. + * + *

This method removes the SimplePrincipal + * that was added by the commit method. + * + *

+ * + * @exception LoginException if the logout fails. + * + * @return true in all cases since this LoginModule + * should not be ignored. + */ + public boolean logout() throws LoginException { + subject.getPrincipals().remove(userPrincipal); + succeeded = false; + succeeded = commitSucceeded; + userId = null; + if (password != null) + password = null; + userPrincipal = null; + return true; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/security/UserPrincipal.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/security/UserPrincipal.java new file mode 100644 index 0000000000..8349e775c5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/security/UserPrincipal.java @@ -0,0 +1,66 @@ +/** + * 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.vtest.javaapi.annotations.conversationattributes.security; + +import java.security.Principal; + +/** + * @version $Rev$ $Date$ + */ +public class UserPrincipal implements Principal { + + private final String name; + + public UserPrincipal(String name) { + if (name == null) + throw new IllegalArgumentException("name cannot be null"); + this.name = name; + } + + public String getName() { + return name; + } + + public String toString() { + return name; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final UserPrincipal other = (UserPrincipal)obj; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/AJass.config b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/AJass.config new file mode 100644 index 0000000000..9d5aec8ed5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/AJass.config @@ -0,0 +1,3 @@ +AService { + org.apache.tuscany.sca.vtest.javaapi.annotations.conversationattributes.security.JaasLoginModule required debug=true; +}; diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/conversation.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/conversation.composite new file mode 100644 index 0000000000..49391b3353 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/conversation.composite @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/definitions.xml b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/definitions.xml new file mode 100644 index 0000000000..d3573176a3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/definitions.xml @@ -0,0 +1,34 @@ + + + + + + + + AService + org.apache.tuscany.sca.vtest.javaapi.annotations.conversationattributes.security.ACallbackHandler + + + + \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/singleprincipal.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/singleprincipal.composite new file mode 100644 index 0000000000..c10369c9bd --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/main/resources/singleprincipal.composite @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/ConversationAttributesTestCase.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/ConversationAttributesTestCase.java new file mode 100644 index 0000000000..952194430e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/ConversationAttributesTestCase.java @@ -0,0 +1,93 @@ +/* + * 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.vtest.javaapi.annotations.conversationattributes; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; +import org.oasisopen.sca.ConversationEndedException; + +/** + * This test class tests the Service annotation described in section 1.2.1 and + * 1.8.17 + */ +public class ConversationAttributesTestCase { + + protected static String compositeName = "conversation.composite"; + protected static AService aService = null; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + aService = ServiceFinder.getService(AService.class, "AComponent"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + + } + + /** + * Line 1665, 1666 + *

+ * maxIdleTime (optional) - The maximum time that can pass between + * operations within a single conversation. If more time than this passes, + * then the container may end the conversation. + */ + @Test(expected = ConversationEndedException.class) + public void maxIdle() throws Exception { + aService.testMaxIdle(); + } + + /** + * Line 1667, 1668 + *

+ * maxAge (optional) - The maximum time that the entire conversation can + * remain active. If more time than this passes, then the container may end + * the conversation. + */ + @Test(expected = ConversationEndedException.class) + public void maxAge() throws Exception { + aService.testMaxAge(); + } + + /** + * Line 1669, 1670 + *

+ * singlePrincipal (optional) – If true, only the principal (the user) that + * started the conversation has authority to continue the conversation. + * The default value is false. + */ + @Ignore("TUSCANY-2608") + @Test(expected = Exception.class) + public void singlePrincipal() throws Exception { + aService.testSinglePrincipal(); + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/SinglePricipalTestCase.java b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/SinglePricipalTestCase.java new file mode 100644 index 0000000000..4ebd667a00 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/conversationattributes/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/conversationattributes/SinglePricipalTestCase.java @@ -0,0 +1,70 @@ +/* + * 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.vtest.javaapi.annotations.conversationattributes; + +import javax.security.auth.login.Configuration; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + * + */ +public class SinglePricipalTestCase { + + protected static String compositeName = "singleprincipal.composite"; + protected static AService aService = null; + + @Before + public void init() throws Exception { + try { + Configuration.getConfiguration(); + } catch (java.lang.SecurityException e) { + System.out.println("Caught SecurityException"); + System.setProperty("java.security.auth.login.config", this.getClass().getClassLoader() + .getResource("AJass.config").toString()); + } + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + aService = ServiceFinder.getService(AService.class, "AComponent"); + } + + @After + public void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + + } + + /** + * Line 1669, 1670 + *

+ * singlePrincipal (optional) – If true, only the principal (the user) that + * started the conversation has authority to continue the conversation. The + * default value is false. + */ + @Test(expected = Exception.class) + public void singlePrincipal() throws Exception { + aService.testSinglePrincipal(); + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/pom.xml b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/pom.xml new file mode 100644 index 0000000000..d0e306867f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/pom.xml @@ -0,0 +1,45 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-annotations-destroy + + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Annotations - @Destroy + + + + org.apache.tuscany.sca + tuscany-node-impl + 2.0-SNAPSHOT + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/AService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/AService.java new file mode 100644 index 0000000000..636e7fd8fc --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/AService.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 org.apache.tuscany.sca.vtest.javaapi.annotations.destroy; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for AService + */ +@Remotable +public interface AService { + public String getGreetings(String name); +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr1Impl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr1Impl.java new file mode 100644 index 0000000000..e790c9e6d2 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr1Impl.java @@ -0,0 +1,39 @@ +/* + * 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.vtest.javaapi.annotations.destroy.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.destroy.AService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. The implementation has an error since it annotates a protected + * method with "@Destroy". + */ +@Service(AService.class) +public class AServiceErr1Impl implements AService { + + @Destroy + protected void destroy() { + } + + public String getGreetings(String name) { + return "Hello " + name; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr2Impl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr2Impl.java new file mode 100644 index 0000000000..1d874007b2 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr2Impl.java @@ -0,0 +1,39 @@ +/* + * 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.vtest.javaapi.annotations.destroy.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.destroy.AService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. The implementation has an error since it annotates a private + * method with "@Destroy". + */ +@Service(AService.class) +public class AServiceErr2Impl implements AService { + + @Destroy + private void destroy() { + } + + public String getGreetings(String name) { + return "Hello " + name; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr3Impl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr3Impl.java new file mode 100644 index 0000000000..bf4b0736ca --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr3Impl.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.javaapi.annotations.destroy.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.destroy.AService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. The implementation has an error since it annotates a + * method with non-void return type with "@Destroy". + */ +@Service(AService.class) +public class AServiceErr3Impl implements AService { + + @Destroy + public String destroy() { + return null; + } + + public String getGreetings(String name) { + return "Hello " + name; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr4Impl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr4Impl.java new file mode 100644 index 0000000000..a320e6b3ff --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceErr4Impl.java @@ -0,0 +1,39 @@ +/* + * 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.vtest.javaapi.annotations.destroy.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.destroy.AService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. The implementation has an error since it annotates a + * method with arguments with "@Destroy". + */ +@Service(AService.class) +public class AServiceErr4Impl implements AService { + + @Destroy + public void destroy(int x) { + } + + public String getGreetings(String name) { + return "Hello " + name; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceImpl.java new file mode 100644 index 0000000000..4c77104866 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/impl/AServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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.vtest.javaapi.annotations.destroy.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.destroy.AService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(AService.class) +public class AServiceImpl implements AService { + + @Destroy + public void destroy() { + } + + public String getGreetings(String name) { + return "Hello " + name; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err1/AServiceErr1.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err1/AServiceErr1.composite new file mode 100644 index 0000000000..b03a0defe5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err1/AServiceErr1.composite @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err2/AServiceErr2.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err2/AServiceErr2.composite new file mode 100644 index 0000000000..93aafdd971 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err2/AServiceErr2.composite @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err3/AServiceErr3.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err3/AServiceErr3.composite new file mode 100644 index 0000000000..eb8f6e59ca --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err3/AServiceErr3.composite @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err4/AServiceErr4.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err4/AServiceErr4.composite new file mode 100644 index 0000000000..296a386876 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/err4/AServiceErr4.composite @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/proper/AService.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/proper/AService.composite new file mode 100644 index 0000000000..4373bc2558 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/main/resources/proper/AService.composite @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/DestroyAnnotationTestCase.java b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/DestroyAnnotationTestCase.java new file mode 100644 index 0000000000..72834a6803 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/destroy/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/destroy/DestroyAnnotationTestCase.java @@ -0,0 +1,159 @@ +/* + * 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.vtest.javaapi.annotations.destroy; + +import java.io.File; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.node.SCAClient; +import org.apache.tuscany.sca.node.SCAContribution; +import org.apache.tuscany.sca.node.SCANode; +import org.apache.tuscany.sca.node.SCANodeFactory; +import org.junit.Test; +import org.oasisopen.sca.ServiceRuntimeException; + +/** + * This test class tests the "@Destroy" annotation described in section 1.8.8. + */ +public class DestroyAnnotationTestCase { + + /** + * Lines 1225, 1226, 1227
+ * The "@Destroy" annotation type is used to annotate a Java class method + * that will be called when the scope defined for the local service + * implemented by the class ends. The method must have a void return value + * and no arguments. The annotated method must be public. + *

+ * This method tests a proper destroy method. i.e., public, no arguments and + * with void return type. + */ + @Test + public void atDestroyProper() throws Exception { + SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); + SCANode node = nodeFactory.createSCANode(new File("src/main/resources/proper/AService.composite").toURL().toString(), + new SCAContribution("TestContribution", + new File("src/main/resources/proper").toURL().toString())); + node.start(); + AService aService = ((SCAClient)node).getService(AService.class, "AComponent"); + Assert.assertEquals("Hello Pandu", aService.getGreetings("Pandu")); + node.stop(); + } + + /** + * Lines 1225, 1226, 1227
+ * The "@Destroy" annotation type is used to annotate a Java class method + * that will be called when the scope defined for the local service + * implemented by the class ends. The method must have a void return value + * and no arguments. The annotated method must be public. + *

+ * This method tests that an exception is thrown when a protected method is + * annotated with "@Destroy". + */ + @Test + public void atDestroyProtectedMethod() throws Exception { + SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); + try { + SCANode node = nodeFactory.createSCANode(new File("src/main/resources/err1/AServiceErr1.composite").toURL().toString(), + new SCAContribution("TestContribution", + new File("src/main/resources/err1").toURL().toString())); + Assert.fail(); + node.stop(); + } catch(ServiceRuntimeException e) { + //expected + Assert.assertNotSame(-1, e.getMessage().indexOf("Destructor must be a public method.")); + } + } + + /** + * Lines 1225, 1226, 1227
+ * The "@Destroy" annotation type is used to annotate a Java class method + * that will be called when the scope defined for the local service + * implemented by the class ends. The method must have a void return value + * and no arguments. The annotated method must be public. + *

+ * This method tests that an exception is thrown when a private method is + * annotated with "@Destroy". + */ + @Test + public void atDestroyPrivateMethod() throws Exception { + SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); + try { + SCANode node = nodeFactory.createSCANode(new File("src/main/resources/err2/AServiceErr2.composite").toURL().toString(), + new SCAContribution("TestContribution", + new File("src/main/resources/err2").toURL().toString())); + Assert.fail(); + node.stop(); + } catch(ServiceRuntimeException e) { + //expected + Assert.assertNotSame(-1, e.getMessage().indexOf("Destructor must be a public method.")); + } + } + + /** + * Lines 1225, 1226, 1227
+ * The "@Destroy" annotation type is used to annotate a Java class method + * that will be called when the scope defined for the local service + * implemented by the class ends. The method must have a void return value + * and no arguments. The annotated method must be public. + *

+ * This method tests that an exception is thrown when a method with non-void + * return type is annotated with "@Destroy". + */ + @Test + public void atDestroyNonVoidReturnType() throws Exception { + SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); + try { + SCANode node = nodeFactory.createSCANode(new File("src/main/resources/err3/AServiceErr3.composite").toURL().toString(), + new SCAContribution("TestContribution", + new File("src/main/resources/err3").toURL().toString())); + Assert.fail(); + node.stop(); + } catch(ServiceRuntimeException e) { + //expected + Assert.assertNotSame(-1, e.getMessage().indexOf("Destructor must return void.")); + } + } + + /** + * Lines 1225, 1226, 1227
+ * The "@Destroy" annotation type is used to annotate a Java class method + * that will be called when the scope defined for the local service + * implemented by the class ends. The method must have a void return value + * and no arguments. The annotated method must be public. + *

+ * This method tests that an exception is thrown when a method with arguments is + * annotated with "@Destroy". + */ + @Test + public void atDestroyMethodWithArgs() throws Exception { + SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); + try { + SCANode node = nodeFactory.createSCANode(new File("src/main/resources/err4/AServiceErr4.composite").toURL().toString(), + new SCAContribution("TestContribution", + new File("src/main/resources/err4").toURL().toString())); + Assert.fail(); + node.stop(); + } catch(ServiceRuntimeException e) { + //expected + Assert.assertNotSame(-1, e.getMessage().indexOf("Destructor must not have argments")); + } + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/pom.xml b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/pom.xml new file mode 100644 index 0000000000..9c763a1111 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-annotations-endsconversation + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Annotations - @EndsConversation + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/AService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/AService.java new file mode 100644 index 0000000000..13bcb1fd51 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/AService.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.vtest.javaapi.annotations.endsconversation; + +/** + * Simple Remotable Service + */ +public interface AService { + + public void testAtEndsConversation(); + + public void testSREndConversation(); + + public void testTimedEnd(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/BService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/BService.java new file mode 100644 index 0000000000..01d3ef051e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/BService.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.vtest.javaapi.annotations.endsconversation; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.EndsConversation; + +/** + * Simple Local Service + */ +@Conversational +public interface BService { + + public void setState(String someState); + + public String getConversationId(); + + @EndsConversation + public void endConversation(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/impl/AServiceImpl.java new file mode 100644 index 0000000000..606020cf85 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/impl/AServiceImpl.java @@ -0,0 +1,70 @@ +/* + * 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.vtest.javaapi.annotations.endsconversation.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.endsconversation.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.endsconversation.BService; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; +import org.junit.Assert; + +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference + protected BService b; + + @Reference + protected ServiceReference b2; + + private void delayForSeconds(int numSeconds) { + try { + Thread.sleep(numSeconds * 1000);// millisecs + } catch (InterruptedException ex) { + throw new Error(ex); + } + } + + public void testAtEndsConversation() { + String firstId; + b.setState("SomeState"); + firstId = b.getConversationId(); + b.endConversation(); + b.setState("SomeState");// This should start a new conversation + Assert.assertNotSame(b.getConversationId(), firstId); + } + + public void testSREndConversation() { + String firstId; + b2.getService().setState("SomeState"); + firstId = b2.getService().getConversationId(); + b2.getConversation().end(); + b2.getService().setState("SomeState");// This should start a new conversation + Assert.assertNotSame(b2.getService().getConversationId(), firstId); + } + + public void testTimedEnd() { + b.setState("someState"); + delayForSeconds(2); + b.setState("someState"); // should fail w/ timeout + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/impl/BServiceImpl.java new file mode 100644 index 0000000000..56644c6967 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/impl/BServiceImpl.java @@ -0,0 +1,59 @@ +/* + * 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.vtest.javaapi.annotations.endsconversation.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.endsconversation.BService; +import org.oasisopen.sca.annotation.ConversationAttributes; +import org.oasisopen.sca.annotation.ConversationID; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +@ConversationAttributes(maxIdleTime="1 seconds") +public class BServiceImpl implements BService { + + String someState; + + protected String conversationId; + + public void setState(String someState) { + this.someState = someState; + } + + @ConversationID + public void setConversationID (String id){ + this.conversationId = id; + System.out.println("BService conversation ID =>" + conversationId); + } + + public String getState() { + return someState; + } + + public String getConversationId() { + return conversationId; + } + + public void endConversation() { + System.out.println("Conversation ended"); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/resources/endsconversation.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/resources/endsconversation.composite new file mode 100644 index 0000000000..cbc13e380c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/main/resources/endsconversation.composite @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/EndsConversationTestCase.java b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/EndsConversationTestCase.java new file mode 100644 index 0000000000..61d7e25187 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/endsconversation/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/endsconversation/EndsConversationTestCase.java @@ -0,0 +1,112 @@ +/* + * 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.vtest.javaapi.annotations.endsconversation; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.oasisopen.sca.ConversationEndedException; + +/** + * This test class tests the Service annotation described in section 1.2.1 and + * 1.8.17 + */ +public class EndsConversationTestCase { + + protected static String compositeName = "endsconversation.composite"; + protected static AService aService = null; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + aService = ServiceFinder.getService(AService.class, "AComponent"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } + + /** + * Lines 410,411,412,413: + *

+ * A method of a conversational interface may be marked with an + * "@EndsConversation" annotation. Once a method marked with + * "@EndsConversation" has been called, the conversation between client and + * service provider is at an end, which implies no further methods may be + * called on that service within the *same* conversation. + */ + @Test + public void atEndsConversation1() throws Exception { + aService.testAtEndsConversation(); + } + + /** + * Lines 417,418,419,420: + *

+ * From the errata:
+ * Solution: Replace lines 417-420 at the end of section 1.6.2.2 with the + * following: "If a conversation is ended with an explicit outbound call to + * an "@EndsConversation" method or a call to + * ServiceReference.endConversation(), then any subsequent call to an + * operation on the service reference will start a new conversation. If the + * conversation ends for any other reason (e.g. a timeout occurred), then + * until ServiceReference.getConversation().end() is called, the + * ConversationEndedException will be thrown by any conversational + * operation." + *

+ * This tests the first section of the errata. Up to "start a new + * conversation" + */ + @Test + public void atEndsConversation2() throws Exception { + aService.testSREndConversation(); + } + + /** + * Lines 417,418,419,420: + *

+ * From the errata:
+ * Solution: Replace lines 417-420 at the end of section 1.6.2.2 with the + * following: "If a conversation is ended with an explicit outbound call to + * an "@EndsConversation" method or a call to + * ServiceReference.endConversation(), then any subsequent call to an + * operation on the service reference will start a new conversation. If the + * conversation ends for any other reason (e.g. a timeout occurred), then + * until ServiceReference.getConversation().end() is called, the + * ConversationEndedException will be thrown by any conversational + * operation." + *

+ * This tests the second section of the errata. Starting with .. "If the + * conversation ends for any other reason ..." + */ + @Test(expected = ConversationEndedException.class) + public void atEndsConversation3() throws Exception { + aService.testTimedEnd(); + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/pom.xml b/sca-java-2.x/contrib/vtest/java-api/annotations/init/pom.xml new file mode 100644 index 0000000000..9700b6870c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/pom.xml @@ -0,0 +1,45 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-annotations-init + + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Annotations - @Init + + + + org.apache.tuscany.sca + tuscany-node-impl + 2.0-SNAPSHOT + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/AService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/AService.java new file mode 100644 index 0000000000..9f6b9bcffd --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/AService.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.annotations.init; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for AService + */ +@Remotable +public interface AService { + public String getGreetings(String name); + public boolean isInitProper(); +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr1Impl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr1Impl.java new file mode 100644 index 0000000000..c48b2e2070 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr1Impl.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.vtest.javaapi.annotations.init.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.init.AService; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. The implementation has an error since it annotates a protected + * method with "@Init". + */ +@Service(AService.class) +public class AServiceErr1Impl implements AService { + + @Init + protected void init() { + } + + public String getGreetings(String name) { + return "Hello " + name; + } + + public boolean isInitProper() { + return false; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr2Impl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr2Impl.java new file mode 100644 index 0000000000..532b1d16eb --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr2Impl.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.vtest.javaapi.annotations.init.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.init.AService; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. The implementation has an error since it annotates a private + * method with "@Init". + */ +@Service(AService.class) +public class AServiceErr2Impl implements AService { + + @Init + private void init() { + } + + public String getGreetings(String name) { + return "Hello " + name; + } + + public boolean isInitProper() { + return false; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr3Impl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr3Impl.java new file mode 100644 index 0000000000..b69a2541b0 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr3Impl.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.vtest.javaapi.annotations.init.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.init.AService; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. The implementation has an error since it annotates a + * method with non-void return type with "@Init". + */ +@Service(AService.class) +public class AServiceErr3Impl implements AService { + + @Init + public String init() { + return null; + } + + public String getGreetings(String name) { + return "Hello " + name; + } + + public boolean isInitProper() { + return false; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr4Impl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr4Impl.java new file mode 100644 index 0000000000..76f905cff0 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceErr4Impl.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.vtest.javaapi.annotations.init.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.init.AService; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. The implementation has an error since it annotates a + * method with arguments with "@Init". + */ +@Service(AService.class) +public class AServiceErr4Impl implements AService { + + @Init + public void init(int x) { + } + + public String getGreetings(String name) { + return "Hello " + name; + } + + public boolean isInitProper() { + return false; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceImpl.java new file mode 100644 index 0000000000..14c0e9c2da --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/impl/AServiceImpl.java @@ -0,0 +1,53 @@ +/* + * 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.vtest.javaapi.annotations.init.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.init.AService; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(AService.class) +public class AServiceImpl implements AService { + + private boolean initProper; + + @Property + public String someProperty; + + @Reference + public AService someReference; + + @Init + public void init() { + initProper = someProperty != null && someReference != null; + } + + public String getGreetings(String name) { + return "Hello " + name; + } + + public boolean isInitProper() { + return initProper; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err1/AServiceErr1.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err1/AServiceErr1.composite new file mode 100644 index 0000000000..01b8e101e0 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err1/AServiceErr1.composite @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err2/AServiceErr2.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err2/AServiceErr2.composite new file mode 100644 index 0000000000..4ae38d44b6 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err2/AServiceErr2.composite @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err3/AServiceErr3.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err3/AServiceErr3.composite new file mode 100644 index 0000000000..6bc3d8e7fc --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err3/AServiceErr3.composite @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err4/AServiceErr4.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err4/AServiceErr4.composite new file mode 100644 index 0000000000..7ade16e6d3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/err4/AServiceErr4.composite @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/proper/AService.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/proper/AService.composite new file mode 100644 index 0000000000..35f13a2ae6 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/main/resources/proper/AService.composite @@ -0,0 +1,33 @@ + + + + + + + hello + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/InitAnnotationTestCase.java b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/InitAnnotationTestCase.java new file mode 100644 index 0000000000..6ee7b8de89 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/init/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/init/InitAnnotationTestCase.java @@ -0,0 +1,167 @@ +/* + * 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.vtest.javaapi.annotations.init; + +import java.io.File; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.node.SCAClient; +import org.apache.tuscany.sca.node.SCAContribution; +import org.apache.tuscany.sca.node.SCANode; +import org.apache.tuscany.sca.node.SCANodeFactory; +import org.junit.Test; +import org.oasisopen.sca.ServiceRuntimeException; + +/** + * This test class tests the "@Init" annotation described in section 1.8.11. + */ +public class InitAnnotationTestCase { + + /** + * Lines 1290, 1291, 1292, 1293
+ * The "@Init" annotation type is used to annotate a Java class method that + * is called when the scope defined for the local service implemented by the + * class starts. The method must have a void return value and no arguments. + * The annotated method must be public. The annotated method is called after + * all property and reference injection is complete. + *

+ * This method tests a proper init method i.e., public, no arguments and with + * void return type.
+ * Expected result: Method must be called. Method must be called after all property + * and reference injection is complete. + */ + @Test + public void atInitProper() throws Exception { + SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); + SCANode node = nodeFactory.createSCANode(new File("src/main/resources/proper/AService.composite").toURL().toString(), + new SCAContribution("TestContribution", + new File("src/main/resources/proper").toURL().toString())); + node.start(); + AService aService = ((SCAClient)node).getService(AService.class, "AComponent"); + Assert.assertTrue(aService.isInitProper()); + Assert.assertEquals("Hello Pandu", aService.getGreetings("Pandu")); + node.stop(); + } + + /** + * Lines 1290, 1291, 1292, 1293
+ * The "@Init" annotation type is used to annotate a Java class method that + * is called when the scope defined for the local service implemented by the + * class starts. The method must have a void return value and no arguments. + * The annotated method must be public. The annotated method is called after + * all property and reference injection is complete. + *

+ * This method tests that an exception is thrown when a protected method is + * annotated with "@Init". + */ + @Test + public void atInitProtectedMethod() throws Exception { + SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); + try { + SCANode node = nodeFactory.createSCANode(new File("src/main/resources/err1/AServiceErr1.composite").toURL().toString(), + new SCAContribution("TestContribution", + new File("src/main/resources/err1").toURL().toString())); + Assert.fail(); + node.stop(); + } catch(ServiceRuntimeException e) { + //expected + Assert.assertNotSame(-1, e.getMessage().indexOf("Initializer must be a public method.")); + } + } + + /** + * Lines 1290, 1291, 1292, 1293
+ * The "@Init" annotation type is used to annotate a Java class method that + * is called when the scope defined for the local service implemented by the + * class starts. The method must have a void return value and no arguments. + * The annotated method must be public. The annotated method is called after + * all property and reference injection is complete. + *

+ * This method tests that an exception is thrown when a private method is + * annotated with "@Init". + */ + @Test + public void atInitPrivateMethod() throws Exception { + SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); + try { + SCANode node = nodeFactory.createSCANode(new File("src/main/resources/err2/AServiceErr2.composite").toURL().toString(), + new SCAContribution("TestContribution", + new File("src/main/resources/err2").toURL().toString())); + Assert.fail(); + node.stop(); + } catch(ServiceRuntimeException e) { + //expected + Assert.assertNotSame(-1, e.getMessage().indexOf("Initializer must be a public method.")); + } + } + + /** + * Lines 1290, 1291, 1292, 1293
+ * The "@Init" annotation type is used to annotate a Java class method that + * is called when the scope defined for the local service implemented by the + * class starts. The method must have a void return value and no arguments. + * The annotated method must be public. The annotated method is called after + * all property and reference injection is complete. + *

+ * This method tests that an exception is thrown when a method with non-void + * return type is annotated with "@Init". + */ + @Test + public void atInitNonVoidReturnType() throws Exception { + SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); + try { + SCANode node = nodeFactory.createSCANode(new File("src/main/resources/err3/HelloWorldErr3.composite").toURL().toString(), + new SCAContribution("TestContribution", + new File("src/main/resources/err3").toURL().toString())); + Assert.fail(); + node.stop(); + } catch(ServiceRuntimeException e) { + //expected + Assert.assertNotSame(-1, e.getMessage().indexOf("Initializer must return void.")); + } + } + + /** + * Lines 1290, 1291, 1292, 1293
+ * The "@Init" annotation type is used to annotate a Java class method that + * is called when the scope defined for the local service implemented by the + * class starts. The method must have a void return value and no arguments. + * The annotated method must be public. The annotated method is called after + * all property and reference injection is complete. + *

+ * This method tests that an exception is thrown when a method with arguments is + * annotated with "@Init". + */ + @Test + public void atInitMethodWithArgs() throws Exception { + SCANodeFactory nodeFactory = SCANodeFactory.newInstance(); + try { + SCANode node = nodeFactory.createSCANode(new File("src/main/resources/err4/HelloWorldErr4.composite").toURL().toString(), + new SCAContribution("TestContribution", + new File("src/main/resources/err4").toURL().toString())); + Assert.fail(); + node.stop(); + } catch(ServiceRuntimeException e) { + //expected + Assert.assertNotSame(-1, e.getMessage().indexOf("Initializer must not have argments")); + } + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/pom.xml b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/pom.xml new file mode 100644 index 0000000000..99f1420712 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-annotations-oneway + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Annotations - @OneWay + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/AService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/AService.java new file mode 100644 index 0000000000..b68cd53167 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/AService.java @@ -0,0 +1,31 @@ +/* + * 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.vtest.javaapi.annotations.oneway; + +import org.oasisopen.sca.annotation.OneWay; + +/** + * Simple Remotable Service + */ +public interface AService { + + @OneWay + public void setNameOneWay(String name); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/BService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/BService.java new file mode 100644 index 0000000000..1cb4f3adf5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/BService.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.annotations.oneway; + +/** + * Simple Local Service + */ +public interface BService { + + public void setNameOneWay(String name); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/impl/AServiceImpl.java new file mode 100644 index 0000000000..d95ea22456 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/impl/AServiceImpl.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.vtest.javaapi.annotations.oneway.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.oneway.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.oneway.BService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference + protected BService b; + + public void setNameOneWay(String name) { + b.setNameOneWay(name); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/impl/BServiceImpl.java new file mode 100644 index 0000000000..4f63a23429 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/impl/BServiceImpl.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.vtest.javaapi.annotations.oneway.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.oneway.BService; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +public class BServiceImpl implements BService { + + String name; + + private void delay2Seconds() { + try { + Thread.sleep(2000);// millisecs + } catch (InterruptedException ex) { + throw new Error(ex); + } + } + + public void setNameOneWay(String name) { + delay2Seconds(); + this.name = name; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/resources/oneway.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/resources/oneway.composite new file mode 100644 index 0000000000..47a7a98c7d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/main/resources/oneway.composite @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/OneWayAnnotationTestCase.java b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/OneWayAnnotationTestCase.java new file mode 100644 index 0000000000..f2fb8d0dc8 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/oneway/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/oneway/OneWayAnnotationTestCase.java @@ -0,0 +1,78 @@ +/* + * 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.vtest.javaapi.annotations.oneway; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * This test class tests the Service annotation described in section 1.2.1 and + * 1.8.17 + */ +public class OneWayAnnotationTestCase { + + protected static String compositeName = "oneway.composite"; + protected static AService aService = null; + protected static BService bService = null; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + aService = ServiceFinder.getService(AService.class, "AComponent"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } + + /** + * Line 384,385,386:
+ *

+ * Any method that returns "void" and has no declared exceptions may be + * marked with an "@OneWay" annotation. This means that the method is + * non-blocking and communication with the service provider may use a + * binding that buffers the requests and sends it at some later time. + *

+ * Line 1319, 1320:
+ *

+ * The "@OneWay" annotation type is used to annotate a Java interface method + * to indicate that invocations will be dispatched in a non-blocking fashion + * as described in the section on Asynchronous Programming.
+ *

+ * The serviceMethod on A is annotated with "@OneWay". The A implementation + * delegates to b's method which includes a 2 seconds delay. So, this will + * fail if the call to A is blocking. + */ + @Test(timeout = 500) + public void atOneWay1() throws Exception { + aService.setNameOneWay("Some Name"); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/pom.xml b/sca-java-2.x/contrib/vtest/java-api/annotations/pom.xml new file mode 100644 index 0000000000..402ea03f7a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/pom.xml @@ -0,0 +1,69 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-java-api + 2.0-SNAPSHOT + ../pom.xml + + java-api-annotations + pom + + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Annotations + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + + + + default + + true + + + reference + service + property + scope + init + destroy + oneway + conversational + conversationattributes + endsconversation + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/pom.xml b/sca-java-2.x/contrib/vtest/java-api/annotations/property/pom.xml new file mode 100644 index 0000000000..0c36e98879 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-annotations-property + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Annotations - @Property + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/AService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/AService.java new file mode 100644 index 0000000000..5cfea1b099 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/AService.java @@ -0,0 +1,82 @@ +/* + * 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.vtest.javaapi.annotations.property; + +/** + * Simple Service + */ +public interface AService { + + public String getName(); + + public String getP1(); + + public String getP2(); + + public String getP3(); + + public String getP4(); + + public String getP5(); + + public String getP6(); + + public String getP7AString(); + + public int getP7BInt(); + + public String getP8AString(); + + public int getP8BInt(); + + public String getP9AString(); + + public int getP9BInt(); + + public String getP10AString(); + + public int getP10BInt(); + + public String getP11AString(); + + public int getP11BInt(); + + public String getP12AString(); + + public int getP12BInt(); + + public String getP15(); + + public String getP16(); + + public String getP17(); + + public String getP18(); + + public int getP19Size(); + + public String getP20(int i); + + public int getP20Size(); + + public int getP21(int i); + + public int getP21Size(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/AnotherAService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/AnotherAService.java new file mode 100644 index 0000000000..5ddc59f8b6 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/AnotherAService.java @@ -0,0 +1,48 @@ +/* + * 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.vtest.javaapi.annotations.property; + +/** + * Simple Service + */ +public interface AnotherAService { + + public String getName(); + + public String getP13(); + + public String getP14(); + + public String getP22(); + + public String getP23(); + + public String getP24(); + + public String getP25(); + + public boolean getP14SetterIsCalled(); + + public boolean getP23SetterIsCalled(); + + public boolean getP24SetterIsCalled(); + + public boolean getP25SetterIsCalled(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/BService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/BService.java new file mode 100644 index 0000000000..c39d4e2504 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/BService.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.vtest.javaapi.annotations.property; + +import org.oasisopen.sca.annotation.Remotable; + + +/** + * Simple Service used by another service + */ +@Remotable +public interface BService { + + String getName(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/CService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/CService.java new file mode 100644 index 0000000000..5de3b5fcff --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/CService.java @@ -0,0 +1,38 @@ +/* + * 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.vtest.javaapi.annotations.property; + + +/** + * Simple Service used by another service + */ +public interface CService { + + String getName(); + + public String getB1Name(); + + public String getP2(); + + public int getP3(); + + public String getP4(); + + public String getConstructor(); +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/AObject.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/AObject.java new file mode 100644 index 0000000000..f30c4c69fc --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/AObject.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.vtest.javaapi.annotations.property.impl; + +/** + * A simple object to hold a string + */ +public class AObject { + + public String aString; + public int bInt; + + public AObject() { + this.aString = null; + this.bInt = 0; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/AServiceImpl.java new file mode 100644 index 0000000000..6dd91b598d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/AServiceImpl.java @@ -0,0 +1,240 @@ +/* + * 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.vtest.javaapi.annotations.property.impl; + +import java.util.List; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.AService; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Property; + +@Service(AService.class) +public class AServiceImpl implements AService { + + @Property + protected String p1; // simple Java type injected via field + + @Property + public String p2; // simple Java type injected via field + + protected String p3; // simple Java type injected via setter + + public String p4; // simple Java type injected via setter + + protected String p5; // simple Java type injected via constructor parameter + + public String p6; // simple Java type injected via constructor parameter + + @Property(required=true) + protected AObject p7; // complex Java type injected via field + + @Property + public AObject p8; // complex Java type injected via field + + protected AObject p9; // complex Java type injected via setter + + public AObject p10; // complex Java type injected via setter + + protected AObject p11; // complex Java type injected via constructor parameter + + public AObject p12; // complex Java type injected via constructor parameter + + @Property(name="pFifteen") + protected String p15; // injected via field with different name + + protected String p16; // injected via setter with different name + + @Property(name="p17", required=false) + public String p17; // injected via field but not defined in composite + + public String p18; // injected via setter but not defined in composite + + @Property(name="p19", required=true) + public List p19; // a List and injected via field with no element + + public List p20; // a List and injected via setter + + @Property(required=false) + public Integer[] p21; // an array and injected via field + + public String getName() { + return "AService"; + } + + public AServiceImpl( + @Property(name = "p5") String p5, + @Property(name = "p6") String p6, + @Property(name = "p11") AObject p11, + @Property(name = "p12") AObject p12 + ) { + super(); + this.p5 = p5; + this.p6 = p6; + this.p11 = p11; + this.p12 = p12; + } + + @Property + public void setP3(String p3) { + this.p3 = p3; + } + + @Property(required=true) + public void setP4(String p4) { + this.p4 = p4; + } + + @Property + public void setP9(AObject p9) { + this.p9 = p9; + } + + @Property + public void setP10(AObject p10) { + this.p10 = p10; + } + + @Property(name="pSixteen") + public void setP16(String p16) { + this.p16 = p16; + } + + @Property(name="p18", required=false) + public void setP18(String p18) { + this.p18 = p18; + } + + @Property(name="p20", required=true) + public void setP20(List p20) { + this.p20 = p20; + } + + public String getP1() { + return p1; + } + + public String getP2() { + return p2; + } + + public String getP3() { + return p3; + } + + public String getP4() { + return p4; + } + + public String getP5() { + return p5; + } + + public String getP6() { + return p6; + } + + public String getP7AString() { + return p7.aString; + } + + public int getP7BInt() { + return p7.bInt; + } + + public String getP8AString() { + return p8.aString; + } + + public int getP8BInt() { + return p8.bInt; + } + + public String getP9AString() { + return p9.aString; + } + + public int getP9BInt() { + return p9.bInt; + } + + public String getP10AString() { + return p10.aString; + } + + public int getP10BInt() { + return p10.bInt; + } + + public String getP11AString() { + return p11.aString; + } + + public int getP11BInt() { + return p11.bInt; + } + + public String getP12AString() { + return p12.aString; + } + + public int getP12BInt() { + return p12.bInt; + } + + public String getP15() { + return p15; + } + + public String getP16() { + return p16; + } + + public String getP17() { + return p17; + } + + public String getP18() { + return p18; + } + + public int getP19Size() { + return p19.size(); + } + + public String getP20(int i) { + return p20.get(i); + } + + public int getP20Size() { + return p20.size(); + } + + public int getP21(int i) { + return p21[i].intValue(); + } + + public int getP21Size() { + return p21.length; + } + +} + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/AnotherAServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/AnotherAServiceImpl.java new file mode 100644 index 0000000000..b6d51ef253 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/AnotherAServiceImpl.java @@ -0,0 +1,116 @@ +/* + * 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.vtest.javaapi.annotations.property.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.AnotherAService; +import org.oasisopen.sca.annotation.Service; + +@Service(AnotherAService.class) +public class AnotherAServiceImpl implements AnotherAService { + + public String p13; // injected via field and un-annotated + + public String p14; // injected via setter and un-annotated + + protected String p22; // unannotated protected field should not be injected + + protected String p23; // un-annotated protected and has protected setter + + protected String p24; // un-annotated protected field and has public setter + + private String p25; // un-annotated private field and has public setter + + public boolean p14SetterIsCalled = false; + + public boolean p23SetterIsCalled = false; + + public boolean p24SetterIsCalled = false; + + public boolean p25SetterIsCalled = false; + + + public String getName() { + return "AService"; + } + + public void setP14(String p14) { + p14SetterIsCalled = true; + this.p14 = p14; + } + + protected void setP23(String p23) { + p23SetterIsCalled = true; + this.p23 = p23; + } + + public void setP24(String p24) { + p24SetterIsCalled = true; + this.p24 = p24; + } + + public void setP25(String p25) { + p25SetterIsCalled = true; + this.p25 = p25; + } + + public String getP13() { + return p13; + } + + public String getP14() { + return p14; + } + + public String getP22() { + return p22; + } + + public String getP23() { + return p23; + } + + public String getP24() { + return p24; + } + + public String getP25() { + return p25; + } + + public boolean getP14SetterIsCalled() { + return p14SetterIsCalled; + } + + + public boolean getP23SetterIsCalled() { + return p23SetterIsCalled; + } + + + public boolean getP24SetterIsCalled() { + return p24SetterIsCalled; + } + + + public boolean getP25SetterIsCalled() { + return p25SetterIsCalled; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/BServiceImpl.java new file mode 100644 index 0000000000..d6a36f54a9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/BServiceImpl.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.vtest.javaapi.annotations.property.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.BService; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +public class BServiceImpl implements BService { + + public String getName() { + return "BService"; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl1.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl1.java new file mode 100644 index 0000000000..ace9da2904 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl1.java @@ -0,0 +1,87 @@ +/* + * 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.vtest.javaapi.annotations.property.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.BService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.CService; +import org.oasisopen.sca.annotation.Constructor; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl1 implements CService { + + public BService b1; + + public String p2; + + public int p3; + + public String p4; + + public String constructor; + + @Constructor + public CServiceImpl1() { + constructor = "NoArgument"; + } + + public CServiceImpl1(@Reference(name = "bOne") BService b1, @Property(name = "pTwo") String p2, @Property(name = "pThree") int p3, @Property(name = "pFour") String p4) { + this.b1 = b1; + this.p2 = p2; + this.p3 = p3; + this.p4 = p4; + constructor = "AllArguments"; + } + + public CServiceImpl1(BService bOne, String pTwo, int pThree) { + this.b1 = bOne; + this.p2 = pTwo; + this.p3 = pThree; + constructor = "LessArguments"; + } + + public String getName() { + return "BService"; + } + + public String getB1Name() { + if (b1 == null) + return null; + return b1.getName(); + } + + public String getP2() { + return p2; + } + + public int getP3() { + return p3; + } + + public String getConstructor() { + return constructor; + } + + public String getP4() { + return p4; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl2.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl2.java new file mode 100644 index 0000000000..4396b6ce32 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl2.java @@ -0,0 +1,87 @@ +/* + * 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.vtest.javaapi.annotations.property.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.BService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.CService; +import org.oasisopen.sca.annotation.Constructor; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl2 implements CService { + + public BService b1; + + public String p2; + + public int p3; + + public String p4; + + public String constructor; + + public CServiceImpl2() { + constructor = "NoArgument"; + } + + @Constructor() + public CServiceImpl2(@Reference(name = "bOne") BService b1, @Property(name = "pTwo") String p2, @Property(name = "pThree") int p3, @Property(name = "pFour") String p4) { + this.b1 = b1; + this.p2 = p2; + this.p3 = p3; + this.p4 = p4; + constructor = "AllArguments"; + } + + public CServiceImpl2(BService bOne, String pTwo, int pThree) { + this.b1 = bOne; + this.p2 = pTwo; + this.p3 = pThree; + constructor = "LessArguments"; + } + + public String getName() { + return "BService"; + } + + public String getB1Name() { + if (b1 == null) + return null; + return b1.getName(); + } + + public String getP2() { + return p2; + } + + public int getP3() { + return p3; + } + + public String getConstructor() { + return constructor; + } + + public String getP4() { + return p4; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl3.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl3.java new file mode 100644 index 0000000000..cd459f2dd1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl3.java @@ -0,0 +1,87 @@ +/* + * 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.vtest.javaapi.annotations.property.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.BService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.CService; +import org.oasisopen.sca.annotation.Constructor; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl3 implements CService { + + public BService b1; + + public String p2; + + public int p3; + + public String p4; + + public String constructor; + + public CServiceImpl3() { + constructor = "NoArgument"; + } + + @Constructor({"bOne", "pTwo", "pThree", "pFour"}) + public CServiceImpl3(@Reference(name = "bOne") BService b1, @Property(name = "pTwo") String p2, @Property(name = "pThree") int p3, @Property(name = "pFour") String p4) { + this.b1 = b1; + this.p2 = p2; + this.p3 = p3; + this.p4 = p4; + constructor = "AllArguments"; + } + + public CServiceImpl3(BService bOne, String pTwo, int pThree) { + this.b1 = bOne; + this.p2 = pTwo; + this.p3 = pThree; + constructor = "LessArguments"; + } + + public String getName() { + return "BService"; + } + + public String getB1Name() { + if (b1 == null) + return null; + return b1.getName(); + } + + public String getP2() { + return p2; + } + + public int getP3() { + return p3; + } + + public String getConstructor() { + return constructor; + } + + public String getP4() { + return p4; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl4.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl4.java new file mode 100644 index 0000000000..c22ee08f95 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl4.java @@ -0,0 +1,88 @@ +/* + * 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.vtest.javaapi.annotations.property.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.BService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.CService; +import org.oasisopen.sca.annotation.Constructor; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl4 implements CService { + + public BService b1; + + public String p2; + + public int p3; + + public String p4; + + public String constructor; + + public CServiceImpl4() { + constructor = "NoArgument"; + } + + public CServiceImpl4(@Reference(name = "bOne") BService b1, @Property(name = "pTwo") String p2, @Property(name = "pThree") int p3, @Property(name = "pFour") String p4, int extra) { + this.b1 = b1; + this.p2 = p2; + this.p3 = p3; + this.p4 = p4; + constructor = "ExtraArguments"; + } + + @Constructor({"bOne", "pTwo", "pThree", "pFour"}) + public CServiceImpl4(BService bOne, String pTwo, int pThree, String pFour) { + this.b1 = bOne; + this.p2 = pTwo; + this.p3 = pThree; + this.p4 = pFour; + constructor = "AllArguments"; + } + + public String getName() { + return "BService"; + } + + public String getB1Name() { + if (b1 == null) + return null; + return b1.getName(); + } + + public String getP2() { + return p2; + } + + public int getP3() { + return p3; + } + + public String getConstructor() { + return constructor; + } + + public String getP4() { + return p4; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl5.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl5.java new file mode 100644 index 0000000000..02892ca7f3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl5.java @@ -0,0 +1,88 @@ +/* + * 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.vtest.javaapi.annotations.property.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.BService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.CService; +import org.oasisopen.sca.annotation.Constructor; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl5 implements CService { + + public BService b1; + + public String p2; + + public int p3; + + public String p4; + + public String constructor; + + public CServiceImpl5() { + constructor = "NoArgument"; + } + + public CServiceImpl5(@Reference(name = "bOne") BService b1, @Property(name = "pTwo") String p2, @Property(name = "pThree") int p3, @Property(name = "pFour") String p4, int extra) { + this.b1 = b1; + this.p2 = p2; + this.p3 = p3; + this.p4 = p4; + constructor = "ExtraArguments"; + } + + @Constructor({"bOne", "pFour", "pThree", "pTwo"}) + public CServiceImpl5(BService bOne, String pTwo, int pThree, String pFour) { + this.b1 = bOne; + this.p2 = pTwo; + this.p3 = pThree; + this.p4 = pFour; + constructor = "SwitchedValues"; + } + + public String getName() { + return "BService"; + } + + public String getB1Name() { + if (b1 == null) + return null; + return b1.getName(); + } + + public String getP2() { + return p2; + } + + public int getP3() { + return p3; + } + + public String getConstructor() { + return constructor; + } + + public String getP4() { + return p4; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl6.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl6.java new file mode 100644 index 0000000000..ed2c3dc365 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/impl/CServiceImpl6.java @@ -0,0 +1,88 @@ +/* + * 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.vtest.javaapi.annotations.property.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.BService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.property.CService; +import org.oasisopen.sca.annotation.Constructor; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl6 implements CService { + + public BService b1; + + public String p2; + + public int p3; + + public String p4; + + public String constructor; + + public CServiceImpl6() { + constructor = "NoArgument"; + } + + public CServiceImpl6(@Reference(name = "bOne") BService b1, @Property(name = "pTwo") String p2, @Property(name = "pThree") int p3, @Property(name = "pFour") String p4, int extra) { + this.b1 = b1; + this.p2 = p2; + this.p3 = p3; + this.p4 = p4; + constructor = "ExtraArguments"; + } + + @Constructor({"bOne", "pTwo", "pThree", "pWrong"}) + public CServiceImpl6(BService bOne, String pTwo, int pThree, String pFour) { + this.b1 = bOne; + this.p2 = pTwo; + this.p3 = pThree; + this.p4 = pFour; + constructor = "WrongValues"; + } + + public String getName() { + return "BService"; + } + + public String getB1Name() { + if (b1 == null) + return null; + return b1.getName(); + } + + public String getP2() { + return p2; + } + + public int getP3() { + return p3; + } + + public String getConstructor() { + return constructor; + } + + public String getP4() { + return p4; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/resources/property.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/resources/property.composite new file mode 100644 index 0000000000..f7af170f33 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/main/resources/property.composite @@ -0,0 +1,143 @@ + + + + + + + p1 + p2 + p3 + p4 + p5 + p6 + + + p7.aString + 7 + + + + + p8.aString + 8 + + + + + p9.aString + 9 + + + + + p10.aString + 10 + + + + + p11.aString + 11 + + + + + p12.aString + 12 + + + p15 + p16 + + "p20" + 2 1 21 + + + + + + p2 + 3 + p4 + + + + + + p2 + 3 + p4 + + + + + + p2 + 3 + p4 + + + + + + p2 + 3 + p4 + + + + + + p2 + 3 + p4 + + + + + + p2 + 3 + p4 + + + + + + + + + p13 + p14 + p22 + p23 + p24 + p25 + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/PropertyAnnotationTestCase.java b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/PropertyAnnotationTestCase.java new file mode 100644 index 0000000000..d5fbc568f7 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/property/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/property/PropertyAnnotationTestCase.java @@ -0,0 +1,299 @@ +/* + * 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.vtest.javaapi.annotations.property; + +import static org.junit.Assert.fail; +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * This test class tests the Property annotation described in section 1.2.3 + * including 1.8.5 and 1.8.13 + */ +public class PropertyAnnotationTestCase { + + protected static String compositeName = "property.composite"; + protected static AService aService = null; + protected static CService cService1 = null; + protected static CService cService2 = null; + protected static CService cService3 = null; + protected static CService cService4 = null; + protected static CService cService5 = null; + protected static CService cService6 = null; + protected static AnotherAService anotherAService = null; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + aService = ServiceFinder.getService(AService.class, "AComponent"); + cService1 = ServiceFinder.getService(CService.class, "CComponent1"); + cService2 = ServiceFinder.getService(CService.class, "CComponent2"); + cService3 = ServiceFinder.getService(CService.class, "CComponent3"); + cService4 = ServiceFinder.getService(CService.class, "CComponent4"); + cService5 = ServiceFinder.getService(CService.class, "CComponent5"); + cService6 = ServiceFinder.getService(CService.class, "CComponent6"); + anotherAService = ServiceFinder.getService(AnotherAService.class, "AnotherAComponent"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + + } + + /** + * Lines 1343 to 1348:
+ * The "@Property" annotation type is used to annotate a Java class field or + * a setter method that is used to inject an SCA property value. The type of + * the property injected, which can be a simple Java type or a complex Java + * type, is defined by the type of the Java class field or the type of the + * setter method input argument.
+ * The "@Property" annotation may be used on protected or public fields and + * on setter methods or on a constructor method.
+ *

+ * p1 - simple Java type injected via field
+ * p2 - simple Java type injected via field
+ * p3 - simple Java type injected via setter
+ * p4 - simple Java type injected via setter and required=true
+ * p5 - simple Java type injected via constructor parameter
+ * p6 - simple Java type injected via constructor parameter
+ * p7 - complex Java type injected via field and required=true
+ * p8 - complex Java type injected via field
+ * p9 - complex Java type injected via setter
+ * p10 - complex Java type injected via setter
+ * p11 - complex Java type injected via constructor parameter
+ * p12 - complex Java type injected via constructor parameter
+ */ + @Test + public void atProperty1() throws Exception { + Assert.assertEquals("p1", aService.getP1()); + Assert.assertEquals("p2", aService.getP2()); + Assert.assertEquals("p3", aService.getP3()); + Assert.assertEquals("p4", aService.getP4()); + Assert.assertEquals("p5", aService.getP5()); + Assert.assertEquals("p6", aService.getP6()); + Assert.assertEquals("p7.aString", aService.getP7AString()); + Assert.assertEquals(7, aService.getP7BInt()); + Assert.assertEquals("p8.aString", aService.getP8AString()); + Assert.assertEquals(8, aService.getP8BInt()); + Assert.assertEquals("p9.aString", aService.getP9AString()); + Assert.assertEquals(9, aService.getP9BInt()); + Assert.assertEquals("p10.aString", aService.getP10AString()); + Assert.assertEquals(10, aService.getP10BInt()); + Assert.assertEquals("p11.aString", aService.getP11AString()); + Assert.assertEquals(11, aService.getP11BInt()); + Assert.assertEquals("p12.aString", aService.getP12AString()); + Assert.assertEquals(12, aService.getP12BInt()); + } + + /** + * Lines 1349 to 1352:
+ * Properties may also be injected via public setter methods even when the + * "@Property" annotation is not present. However, the + * + * @Property annotation must be used in order to inject a property onto a + * non-public field. In the case where there is no "@Property" + * annotation, the name of the property is the same as the name of + * the field or setter.
+ *

+ * p13 is an un-annotated public field which should be injected + * via field
+ */ + @Test + public void atProperty2() throws Exception { + Assert.assertEquals("p13", anotherAService.getP13()); + } + + /** + * Line 1353:
+ * Where there is both a setter method and a field for a property, the + * setter method is used.
+ *

+ * p14 is an un-annotated public field, it should be injected via public + * setter
+ */ + @Test + public void atProperty3() throws Exception { + Assert.assertEquals("p14", anotherAService.getP14()); + Assert.assertTrue(anotherAService.getP14SetterIsCalled()); + } + + /** + * Lines 1355 to 1357:
+ * The "@Property" annotation has the following attributes:
+ *

  • name (optional) – the name of the property, defaults to the name of + * the field of the Java class
  • + *
  • required (optional) – specifies whether injection is required, + * defaults to false
  • + *

    + * p15 - injected via field with different name "pFifteen"
    + * p16 - injected via setter with different name "pSixteen"
    + * p17 - injected via field but not defined in composite
    + * p18 - injected via setter but not defined in composite
    + * + * @TODO - Need to test required=true but not defined in composite (The + * specification does not describe the proper behaviour in this + * situation.) + */ + @Test + public void atProperty4() throws Exception { + Assert.assertEquals("p15", aService.getP15()); + Assert.assertEquals("p16", aService.getP16()); + Assert.assertNull(aService.getP17()); + Assert.assertNull(aService.getP18()); + } + + /** + * Lines 1369 to 1370:
    + * If the property is defined as an array or as a java.util.Collection, then + * the implied component type has a property with a many attribute set to + * true.
    + *

    + * p19 - a List and injected via field with no element
    + * p20 - a List and injected via setter
    + * p21 - an array and injected via field
    + */ + @Test + public void atProperty5() throws Exception { + Assert.assertEquals(0, aService.getP19Size()); + Assert.assertEquals(1, aService.getP20Size()); + Assert.assertEquals("p20", aService.getP20(0)); + Assert.assertEquals(3, aService.getP21Size()); + Assert.assertEquals(2, aService.getP21(0)); + Assert.assertEquals(1, aService.getP21(1)); + Assert.assertEquals(21, aService.getP21(2)); + } + + /** + * Lines 1141 to 1162:
    + * 1.8.5. "@Constructor"
    + * ...
    + * The "@Constructor" annotation is used to mark a particular constructor to + * use when instantiating a Java component implementation.
    + * The "@Constructor" annotation has the following attribute:
    + *

  • value (optional) – identifies the property/reference names that + * correspond to each of the constructor arguments. The position in the + * array determines which of the arguments are being named.
  • + *

    + * cService1 - "@Constructor" without value and constructor arguments
    + * cService2 - "@Constructor" without value but with constructor arguments
    + * cService3 - "@Constructor" with values and constructor arguments
    + * cService4 - "@Constructor" with values and constructor arguments where + * value, property and parameter names are same
    + * cService5 - "@Constructor" with switched values and constructor arguments
    + * cService6 - "@Constructor" with wrong values
    + */ + @Test + public void atProperty6() throws Exception { + Assert.assertNull(cService1.getB1Name()); + Assert.assertNull(cService1.getP2()); + Assert.assertEquals(0, cService1.getP3()); + Assert.assertNull(cService1.getP4()); + Assert.assertEquals("NoArgument", cService1.getConstructor()); + + Assert.assertEquals("BService", cService2.getB1Name()); + Assert.assertEquals("p2", cService2.getP2()); + Assert.assertEquals(3, cService2.getP3()); + Assert.assertEquals("p4", cService2.getP4()); + Assert.assertEquals("AllArguments", cService2.getConstructor()); + + Assert.assertEquals("BService", cService3.getB1Name()); + Assert.assertEquals("p2", cService3.getP2()); + Assert.assertEquals(3, cService3.getP3()); + Assert.assertEquals("p4", cService3.getP4()); + Assert.assertEquals("AllArguments", cService3.getConstructor()); + + Assert.assertEquals("BService", cService4.getB1Name()); + Assert.assertEquals("p2", cService4.getP2()); + Assert.assertEquals(3, cService4.getP3()); + Assert.assertEquals("p4", cService4.getP4()); + Assert.assertEquals("AllArguments", cService4.getConstructor()); + + Assert.assertEquals("BService", cService5.getB1Name()); + Assert.assertEquals("p4", cService5.getP2()); + Assert.assertEquals(3, cService5.getP3()); + Assert.assertEquals("p2", cService5.getP4()); + Assert.assertEquals("SwitchedValues", cService5.getConstructor()); + + try { + System.out.println(cService6.getB1Name()); + fail("Should have failed to call this service"); + } catch (Throwable t) { + } + + } + + /** + * Lines 1349 to 1352:
    + * 1.8.13. "@Property"
    + * ...
    + * Properties may also be injected via public setter methods even when the + * "@Property" annotation is not present. However, the "@Property" + * annotation must be used in order to inject a property onto a non-public + * field. In the case where there is no "@Property" annotation, the name of + * the property is the same as the name of the field or setter. + *

    + * p22 is unannotated protected field which should not be injected p23 is + * un-annotated protected which should not be injected via protected setter
    + */ + @Test + @Ignore("JIRA-2289 - p23 failed") + public void atProperty7() throws Exception { + Assert.assertNull(anotherAService.getP22()); + Assert.assertNull(anotherAService.getP23()); + Assert.assertFalse(anotherAService.getP23SetterIsCalled()); + } + + /** + * Lines 1349 to 1352:
    + * 1.8.13. "@Property"
    + * ...
    + * Properties may also be injected via public setter methods even when the + * "@Property" annotation is not present. However, the "@Property" + * annotation must be used in order to inject a property onto a non-public + * field. In the case where there is no "@Property" annotation, the name of + * the property is the same as the name of the field or setter. + *

    + * p24 is un-annotated protected field which should be injected via public + * setter
    + * p25 is un-annotated private field which should be injected via public + * setter
    + */ + @Test + public void atProperty8() throws Exception { + Assert.assertEquals("p24", anotherAService.getP24()); + Assert.assertTrue(anotherAService.getP24SetterIsCalled()); + Assert.assertEquals("p25", anotherAService.getP25()); + Assert.assertTrue(anotherAService.getP25SetterIsCalled()); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/reference/pom.xml b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/pom.xml new file mode 100644 index 0000000000..5e88742f3e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-annotations-reference + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Annotations - @Reference + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/AService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/AService.java new file mode 100644 index 0000000000..b28704a3b4 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/AService.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.vtest.javaapi.annotations.reference; + + +/** + * Simple Service that uses another Service + */ +public interface AService { + + public String getName(); + public String getB1Name(); + public String getB2Name(); + public String getB3Name(); + public String getB4Name(); + public String getB5Name(); + public String getB6Name(); + public String getB7Name(); + public String getB8Name(); + public String getB9Name(); + public String getB10Name(); + public String getB11Name(); + public String getB12Name(); + public String getB13Name(int i); + public String getB14Name(int i); + public String getB15Name(int i); + + public int getB13Size(); + public int getB14Size(); + public int getB15Size(); + + public boolean isB7SetterCalled(); + public boolean isB16Null(); + public boolean isB17Null(); + + public boolean isB4Null(); + public boolean isB5Null(); + public boolean isB6Null(); +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/BService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/BService.java new file mode 100644 index 0000000000..04c0bc377e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/BService.java @@ -0,0 +1,31 @@ +/* + * 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.vtest.javaapi.annotations.reference; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BService { + + String getName(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/impl/AServiceImpl.java new file mode 100644 index 0000000000..60e2b2408c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/impl/AServiceImpl.java @@ -0,0 +1,215 @@ +/* + * 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.vtest.javaapi.annotations.reference.impl; + +import java.util.List; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.reference.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.reference.BService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference + protected BService b1; // field injection + + protected BService b2; // injected via constructor parameter + + protected BService b3; // setter injection + + public BService b4; // field injection (public, un-annotated) + + protected BService b5; // field injection (non-public, un-annotated) + + public BService b6; // setter injection (public, un-annotated) + + @Reference + protected BService b7; // setter injection (field and setter annotated) + + @Reference(name="b8", required=false) + protected BService bEight; // field injection (different reference and field name) + + protected BService bNine; // setter injection (different reference and field name) + + @Reference(required=false) + protected BService b10; // multiplicity="0..1" and required=false + + @Reference(required=false) + protected BService b11; // multiplicity="1..1" and required=false + + protected BService b12; // multiplicity="1..1" and required=true at setter + + @Reference(required=false) + protected List b13; // multiplicity="0..n" and required=false + + protected List b14; // multiplicity="1..n" and required=false at setter + + @Reference(name="b15", required=true) + protected BService[] b15s; // multiplicity="1..n" and required=true + + @Reference(required=false) + protected BService b16; + + @Reference(required=false) + public BService b17; + + protected boolean b7SetterCalled; + + public AServiceImpl(@Reference(name = "b2") + BService b2) { + super(); + this.b2 = b2; + b7SetterCalled = false; + } + + @Reference + public void setB3(BService b3) { + this.b3 = b3; + } + + public void setB6(BService b6) { + this.b6 = b6; + } + + @Reference + public void setB7(BService b7) { + b7SetterCalled = true; + this.b7 = b7; + } + + @Reference(name="b9", required=false) + public void setB9(BService bNine) { + this.bNine = bNine; + } + + @Reference(required=true) + public void setB12(BService b12) { + this.b12 = b12; + } + + @Reference(required=true) + public void setB14(List b14) { + this.b14 = b14; + } + + public String getName() { + return "AService"; + } + + public String getB1Name() { + return b1.getName(); + } + + public String getB2Name() { + return b2.getName(); + } + + public String getB3Name() { + return b3.getName(); + } + + public String getB4Name() { + return b4.getName(); + } + + public String getB5Name() { + return b5.getName(); + } + + public String getB6Name() { + return b6.getName(); + } + + public String getB7Name() { + return b7.getName(); + } + + public String getB8Name() { + return bEight.getName(); + } + + public String getB9Name() { + return bNine.getName(); + } + + public String getB10Name() { + return b10.getName(); + } + + public String getB11Name() { + return b11.getName(); + } + + public String getB12Name() { + return b12.getName(); + } + + public String getB13Name(int i) { + BService b = (BService) b13.get(i); + return b.getName(); + } + + public String getB14Name(int i) { + BService b = (BService) b14.get(i); + return b.getName(); + } + + public String getB15Name(int i) { + return b15s[i].getName(); + } + + public int getB13Size() { + return b13.size(); + } + + public int getB14Size() { + return b14.size(); + } + + public int getB15Size() { + return b15s.length; + } + + public boolean isB7SetterCalled() { + return b7SetterCalled; + } + + public boolean isB16Null() { + return b16 == null; + } + + public boolean isB17Null() { + return b17 == null; + } + + public boolean isB4Null() { + return b4 == null; + } + + public boolean isB5Null() { + return b5 == null; + } + + public boolean isB6Null() { + return b6 == null; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/impl/AUnannotatedServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/impl/AUnannotatedServiceImpl.java new file mode 100644 index 0000000000..20fccf807f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/impl/AUnannotatedServiceImpl.java @@ -0,0 +1,141 @@ +/* + * 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.vtest.javaapi.annotations.reference.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.reference.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.reference.BService; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +public class AUnannotatedServiceImpl implements AService { + + public BService b4; // field injection (public, un-annotated) + + protected BService b5; // field injection (non-public, un-annotated) + + public BService b6; // setter injection (public, un-annotated) + + public AUnannotatedServiceImpl() { + } + + public String getName() { + return "AService"; + } + + public String getB4Name() { + return b4.getName(); + } + + public String getB5Name() { + return b5.getName(); + } + + public void setB6(BService b6) { + this.b6 = b6; + } + + public String getB6Name() { + return b6.getName(); + } + + public String getB1Name() { + return null; + } + + public String getB2Name() { + return null; + } + + public String getB3Name() { + return null; + } + + public String getB7Name() { + return null; + } + + public String getB8Name() { + return null; + } + + public String getB9Name() { + return null; + } + + public boolean isB7SetterCalled() { + return false; + } + + public String getB10Name() { + return null; + } + + public String getB11Name() { + return null; + } + + public String getB12Name() { + return null; + } + + public String getB13Name(int i) { + return null; + } + + public int getB13Size() { + return 0; + } + + public String getB14Name(int i) { + return null; + } + + public int getB14Size() { + return 0; + } + + public String getB15Name(int i) { + return null; + } + + public int getB15Size() { + return 0; + } + + public boolean isB16Null() { + return true; + } + + public boolean isB17Null() { + return true; + } + + public boolean isB4Null() { + return b4 == null; + } + + public boolean isB5Null() { + return b5 == null; + } + + public boolean isB6Null() { + return b6 == null; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/impl/BServiceImpl.java new file mode 100644 index 0000000000..c7fc91e65f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/impl/BServiceImpl.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.vtest.javaapi.annotations.reference.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.reference.BService; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +public class BServiceImpl implements BService { + + public String getName() { + return "BService"; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/resources/ab.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/resources/ab.composite new file mode 100644 index 0000000000..b4ad1e77d5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/main/resources/ab.composite @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/ReferenceAnnotationTestCase.java b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/ReferenceAnnotationTestCase.java new file mode 100644 index 0000000000..1fe50b4ea7 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/reference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/reference/ReferenceAnnotationTestCase.java @@ -0,0 +1,229 @@ +/* + * 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.vtest.javaapi.annotations.reference; + +import static org.junit.Assert.fail; +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * This test class tests the "@Reference" annotation described in section 1.8.14 + */ +public class ReferenceAnnotationTestCase { + + protected static String compositeName = "ab.composite"; + protected static AService a; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + a = ServiceFinder.getService(AService.class, "AComponent"); + + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } + + /** + * Temporary test unrelated to spec test effort. Remove after resolution of + */ + @Test + @Ignore + // JIRA T-2145 + public void bogusComponentName() throws Exception { + ServiceFinder.init(compositeName); + try { + AService a = ServiceFinder.getService(AService.class, "AReallyBogusComponentName"); + if (a == null) + fail("Should have thrown an exception rather than return null"); + else + fail("Should have thrown an exception rather than return a proxy"); + } finally { + ServiceFinder.cleanup(); + } + + } + + /** + * Lines 1404, 1405, 1406
    + * The "@Reference" annotation type is used to annotate a Java class field + * or a setter method that is used to inject a service that resolves the + * reference. The interface of the service injected is defined by the type + * of the Java class field or the type of the setter method input argument. + *

    + * This tests the use of the three usages of the "@Reference" annotation
    + * B1 is injected via field injection
    + * B2 is injected via constructor parameter
    + * B3 is injected via setter method + */ + @Test + public void atReference1() throws Exception { + + Assert.assertEquals("BService", a.getB1Name()); + Assert.assertEquals("BService", a.getB2Name()); + Assert.assertEquals("BService", a.getB3Name()); + + } + + /** + * Lines 1407, 1408, 1409, 1410
    + * References may also be injected via public setter methods even when the + * "@Reference" annotation is not present. However, the "@Reference" + * annotation must be used in order to inject a reference onto a non public + * field. In the case where there is no "@Reference" annotation, the name of + * the reference is the same as the name of the field or setter. + *

    + * B4 is injected via field injection. Public, Non-annotated
    + * B5 is expected to fail field injection. Non-Public, Non-Annotated
    + * B6 is injected via setter injection. Public, Non-Annotated + */ + @Test + public void atReference2() throws Exception { + AService anotherA = ServiceFinder.getService(AService.class, "AUnannotatedComponent"); + + Assert.assertFalse(anotherA.isB4Null()); + Assert.assertTrue(anotherA.isB5Null()); + Assert.assertFalse(anotherA.isB6Null()); + + Assert.assertEquals("BService", anotherA.getB4Name()); + try { + anotherA.getB5Name(); + fail("getB5Name expected to fail with NPE"); + } catch (NullPointerException e) { + } + Assert.assertEquals("BService", anotherA.getB6Name()); + + } + + /** + * Lines 1411
    + * Where there is both a setter method and a field for a reference, the + * setter method is used. + *

    + * B7 has both field and setter annotated. The setter must be called + */ + @Test + public void atReference3() throws Exception { + Assert.assertTrue(a.isB7SetterCalled()); + } + + /** + * Lines 1413, 1414, 1415
    + * The "@Reference" annotation has the following attributes:
    • name + * (optional) – the name of the reference, defaults to the name of the field + * of the Java class
    + * required (optional) – whether injection of service or services is + * required. Defaults to true. + *

    + * Reference and field have different names
    + * B8 is field injected
    + * B9 is setter injected + */ + @Test + public void atReference4() throws Exception { + Assert.assertEquals("BService", a.getB8Name()); + Assert.assertEquals("BService", a.getB9Name()); + } + + /** + * Lines 1457 to 1459
    + * If the reference is not an array or collection, then the implied + * component type has a reference with a multiplicity of either 0..1 or 1..1 + * depending on the value of the + * + * @Reference required attribute – 1..1 applies if required=true.
    + *

    + * B10 is field injected, required=false, and multiplicity="0..1"
    + * B11 is field injected, required=false, and multiplicity="1..1"
    + * B12 is setter injected, required=true, and multiplicity="1..1" + */ + @Test + public void atReference5() throws Exception { + Assert.assertEquals("BService", a.getB10Name()); + Assert.assertEquals("BService", a.getB11Name()); + Assert.assertEquals("BService", a.getB12Name()); + } + + /** + * Lines 1461 to 1463
    + * If the reference is defined as an array or as a java.util.Collection, + * then the implied component type has a reference with a multiplicity of + * either 1..n or 0..n, depending on whether the required attribute of the + * "@Reference" annotation is set to true or false – 1..n applies if + * required=true.
    + *

    + * B13 is a java.util.List, field injected, required=false, + * multiplicity="0..n", and no target
    + * B14 is a java.util.List, setter injected, required=true, + * multiplicity="1..n", and one target
    + * B15 is an array, field injected, required=true, multiplicity="1..n", and + * two targets + */ + @Test + public void atReference6() throws Exception { + Assert.assertEquals(0, a.getB13Size()); + Assert.assertEquals("BService", a.getB14Name(0)); + Assert.assertEquals(1, a.getB14Size()); + Assert.assertEquals("BService", a.getB15Name(0)); + Assert.assertEquals("BService", a.getB15Name(1)); + Assert.assertEquals(2, a.getB15Size()); + } + + /** + * Lines 1415
    + * required (optional) - whether injection of service or services is + * required. Defaults to true. + *

    + * b16 and b17 is defined as "@Reference(required=false)" and AComponent + * does not define reference for them + */ + @Test + public void atReference7() throws Exception { + Assert.assertTrue(a.isB16Null()); + Assert.assertTrue(a.isB17Null()); + } + + /** + * Java Component Implementation Spec + * Section 1.2.7 + * Line 361 when @Property and @Reference annotations are present + * then unannotated fields are ignored + */ + @Test + public void atReference8() throws Exception { + Assert.assertTrue(a.isB4Null()); + Assert.assertTrue(a.isB5Null()); + Assert.assertTrue(a.isB6Null()); + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/pom.xml b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/pom.xml new file mode 100644 index 0000000000..8a905a7ebc --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-annotations-scope + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Annotations - @Scope + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/AService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/AService.java new file mode 100644 index 0000000000..b7cf3fba71 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/AService.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 org.apache.tuscany.sca.vtest.javaapi.annotations.scope; + + +/** + * Simple Service + */ +public interface AService { + + public String getName(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/BService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/BService.java new file mode 100644 index 0000000000..7da9d29424 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/BService.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.javaapi.annotations.scope; + +/** + * Simple Service + */ +public interface BService { + + public String getName(); + + public boolean isInitReady(); + + public String getCurrentState(); + + public String setCurrentState(String currentState); + + public int getDestroyCalledCounter(); + + public int getInitCalledCounter(); + + public int getInstanceCounter(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/CService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/CService.java new file mode 100644 index 0000000000..208c6a78b0 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/CService.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.javaapi.annotations.scope; + +/** + * Simple Service + */ +public interface CService { + + public String getName(); + + public boolean isInitReady(); + + public String getCurrentState(); + + public String setCurrentState(String currentState); + + public int getDestroyCalledCounter(); + + public int getInitCalledCounter(); + + public int getInstanceCounter(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/DService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/DService.java new file mode 100644 index 0000000000..f9b87ad251 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/DService.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.vtest.javaapi.annotations.scope; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +public interface DService { + + public String getName(); + + public boolean isInitReady(); + + public String getCurrentState(); + + public String setCurrentState(String currentState); + + public int getDestroyCalledCounter(); + + public int getInitCalledCounter(); + + public int getInstanceCounter(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/FService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/FService.java new file mode 100644 index 0000000000..0e4ed9c18d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/FService.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.vtest.javaapi.annotations.scope; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +public interface FService { + + public String getName(); + + public boolean isInitReady(); + + public String getCurrentState(); + + public String setCurrentState(String currentState); + + public int getDestroyCalledCounter(); + + public int getInitCalledCounter(); + + public int getInstanceCounter(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/GService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/GService.java new file mode 100644 index 0000000000..566dc93e6d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/GService.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.vtest.javaapi.annotations.scope; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +public interface GService { + + public String getName(); + + public int getInitCalledCounter(); + + public int getDestroyCalledCounter(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/HService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/HService.java new file mode 100644 index 0000000000..714b3ce8f4 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/HService.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.vtest.javaapi.annotations.scope; + +import org.oasisopen.sca.annotation.Remotable; + + +/** + * Simple Service + */ +@Remotable +public interface HService { + + public String getName(); + + public String test(); + + public String testCounters(int n); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/IService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/IService.java new file mode 100644 index 0000000000..88cf95b593 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/IService.java @@ -0,0 +1,48 @@ +/* + * 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.vtest.javaapi.annotations.scope; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.EndsConversation; + +/** + * Simple Service + */ +@Conversational +public interface IService { + + public String getName(); + + public boolean isInitReady(); + + public String getCurrentState(); + + public String getConversationId(); + + public String setCurrentState(String currentState); + + public int getDestroyCalledCounter(); + + public int getInitCalledCounter(); + + public int getInstanceCounter(); + + @EndsConversation + public void endConversation(); +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/JService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/JService.java new file mode 100644 index 0000000000..ea974100ab --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/JService.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.vtest.javaapi.annotations.scope; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +public interface JService { + + public String getName(); + + public String getFailedReason(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/KService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/KService.java new file mode 100644 index 0000000000..454009da12 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/KService.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.vtest.javaapi.annotations.scope; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +public interface KService { + + public String getName(); + + public String callL1(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/LService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/LService.java new file mode 100644 index 0000000000..2910b1c81c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/LService.java @@ -0,0 +1,41 @@ +/* + * 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.vtest.javaapi.annotations.scope; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +public interface LService { + + public String getName(); + + public String getCurrentState(); + + public String setCurrentState(String currentState); + + public int getDestroyCalledCounter(); + + public int getInitCalledCounter(); + + public int getInstanceCounter(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/MService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/MService.java new file mode 100644 index 0000000000..81d0692d7a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/MService.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.vtest.javaapi.annotations.scope; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +public interface MService { + + public String getName(); + + public String getFailedReason(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/NService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/NService.java new file mode 100644 index 0000000000..3493a88206 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/NService.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.vtest.javaapi.annotations.scope; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +public interface NService { + + public String getName(); + + public String callO1(int nthTime); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/OService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/OService.java new file mode 100644 index 0000000000..982568b236 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/OService.java @@ -0,0 +1,41 @@ +/* + * 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.vtest.javaapi.annotations.scope; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +public interface OService { + + public String getName(); + + public String getCurrentState(); + + public String setCurrentState(String currentState); + + public int getDestroyCalledCounter(); + + public int getInitCalledCounter(); + + public int getInstanceCounter(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/AServiceImpl.java new file mode 100644 index 0000000000..f7a57941dc --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/AServiceImpl.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.vtest.javaapi.annotations.scope.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.AService; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +public class AServiceImpl implements AService { + + public String getName() { + return "AService"; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/BServiceImpl.java new file mode 100644 index 0000000000..29d6284c43 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/BServiceImpl.java @@ -0,0 +1,112 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.BService; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Destroy; + +@Service(BService.class) +public class BServiceImpl implements BService { + + private static int instanceCounter = 0; + + private static int initCalledCounter = 0; + + private static int destroyCalledCounter = 0; + + public AService a1; + + public String p1; + + private int currentInstanceId = 0; + + public String currentState = null; + + private boolean isInitReady = false; + + public BServiceImpl() { + currentInstanceId = ++instanceCounter; + isInitReady = false; + } + + @Reference + public void setA1(AService a1) { + this.a1 = a1; + } + + @Property + public void setP1(String p1) { + this.p1 = p1; + } + + @Init + public void initBService() throws Exception { + initCalledCounter++; + if (p1.equals("p1") && a1.getName().equals("AService")) + isInitReady = true; + } + + @Destroy + public void destroyBService() { + destroyCalledCounter++; + } + + public String getName() { + return "BService" + currentInstanceId; + } + + public AService getA1() { + return a1; + } + + public String getP1() { + return p1; + } + + public String getCurrentState() { + return currentState; + } + + public String setCurrentState(String currentState) { + this.currentState = currentState; + return this.currentState; + } + + public boolean isInitReady() { + return isInitReady; + } + + public int getDestroyCalledCounter() { + return destroyCalledCounter; + } + + public int getInitCalledCounter() { + return initCalledCounter; + } + + public int getInstanceCounter() { + return instanceCounter; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/CServiceImpl.java new file mode 100644 index 0000000000..037d900176 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/CServiceImpl.java @@ -0,0 +1,114 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.CService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Scope; + +@Service(CService.class) +@Scope("STATELESS") +public class CServiceImpl implements CService { + + public static int instanceCounter = 0; + + public static int initCalledCounter = 0; + + public static int destroyCalledCounter = 0; + + public AService a1; + + public String p1; + + public int currentInstanceId = 0; + + public String currentState = null; + + public boolean isInitReady = false; + + public CServiceImpl() { + currentInstanceId = ++instanceCounter; + isInitReady = false; + } + + @Reference + public void setA1(AService a1) { + this.a1 = a1; + } + + @Property + public void setP1(String p1) { + this.p1 = p1; + } + + @Init + public void initCService() throws Exception { + initCalledCounter++; + if (p1.equals("p1") && a1.getName().equals("AService")) + isInitReady = true; + } + + @Destroy + public void destroyCService() { + destroyCalledCounter++; + } + + public String getName() { + return "CService" + currentInstanceId; + } + + public AService getA1() { + return a1; + } + + public String getP1() { + return p1; + } + + public String getCurrentState() { + return currentState; + } + + public String setCurrentState(String currentState) { + this.currentState = currentState; + return this.currentState; + } + + public boolean isInitReady() { + return isInitReady; + } + + public int getDestroyCalledCounter() { + return destroyCalledCounter; + } + + public int getInitCalledCounter() { + return initCalledCounter; + } + + public int getInstanceCounter() { + return instanceCounter; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/DServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/DServiceImpl.java new file mode 100644 index 0000000000..d5f1326086 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/DServiceImpl.java @@ -0,0 +1,116 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.DService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Scope; + +@Service(DService.class) +@Scope("REQUEST") +public class DServiceImpl implements DService { + + public static int instanceCounter = 0; + + public static int initCalledCounter = 0; + + public static int destroyCalledCounter = 0; + + public AService a1; + + public String p1; + + public int currentInstanceId = 0; + + public String currentState = null; + + public boolean isInitReady = false; + + public DServiceImpl() { + currentInstanceId = ++instanceCounter; + isInitReady = false; + } + + @Reference + public void setA1(AService a1) { + this.a1 = a1; + } + + @Property + public void setP1(String p1) { + this.p1 = p1; + } + + @Init + public void initDService() throws Exception { + initCalledCounter++; + if (p1.equals("p1") && a1.getName().equals("AService")) + isInitReady = true; + System.out.println("DService" + currentInstanceId + "->initDService"); + } + + @Destroy + public void destroyDService() { + destroyCalledCounter++; + System.out.println("DService" + currentInstanceId + "->destroyDService"); + } + + public String getName() { + return "DService" + currentInstanceId; + } + + public AService getA1() { + return a1; + } + + public String getP1() { + return p1; + } + + public String getCurrentState() { + return currentState; + } + + public String setCurrentState(String currentState) { + this.currentState = "DService" + currentInstanceId + "-" + currentState; + return this.currentState; + } + + public boolean isInitReady() { + return isInitReady; + } + + public int getDestroyCalledCounter() { + return destroyCalledCounter; + } + + public int getInitCalledCounter() { + return initCalledCounter; + } + + public int getInstanceCounter() { + return instanceCounter; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/FServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/FServiceImpl.java new file mode 100644 index 0000000000..e2bfa3c45a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/FServiceImpl.java @@ -0,0 +1,116 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.FService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Scope; + +@Service(FService.class) +@Scope("COMPOSITE") +public class FServiceImpl implements FService { + + public static int instanceCounter = 0; + + public static int initCalledCounter = 0; + + public static int destroyCalledCounter = 0; + + public AService a1; + + public String p1; + + public int currentInstanceId = 0; + + public String currentState = null; + + public boolean isInitReady = false; + + public FServiceImpl() { + currentInstanceId = ++instanceCounter; + isInitReady = false; + } + + @Reference + public void setA1(AService a1) { + this.a1 = a1; + } + + @Property + public void setP1(String p1) { + this.p1 = p1; + } + + @Init + public void initFService() throws Exception { + initCalledCounter++; + if (p1.equals("p1") && a1.getName().equals("AService")) + isInitReady = true; + System.out.println("FService" + currentInstanceId + "->initFService"); + } + + @Destroy + public void destroyFService() { + destroyCalledCounter++; + System.out.println("FService" + currentInstanceId + "->destroyFService"); + } + + public String getName() { + return "FService" + currentInstanceId; + } + + public AService getA1() { + return a1; + } + + public String getP1() { + return p1; + } + + public String getCurrentState() { + return currentState; + } + + public String setCurrentState(String currentState) { + this.currentState = "FService" + currentInstanceId + "-" + currentState; + return this.currentState; + } + + public boolean isInitReady() { + return isInitReady; + } + + public int getDestroyCalledCounter() { + return destroyCalledCounter; + } + + public int getInitCalledCounter() { + return initCalledCounter; + } + + public int getInstanceCounter() { + return instanceCounter; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/GServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/GServiceImpl.java new file mode 100644 index 0000000000..28b8bd84b9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/GServiceImpl.java @@ -0,0 +1,75 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.GService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.EagerInit; + +@Scope("COMPOSITE") +@EagerInit +public class GServiceImpl implements GService { + + public static int initCalledCounter = 0; + + public static int destroyCalledCounter = 0; + + public AService a1; + + public String p1; + + @Init + public void initGService() throws Exception { + initCalledCounter++; + System.out.println("GService->initGService"); + } + + @Destroy + public void destroyGService() { + destroyCalledCounter++; + System.out.println("GService->destroyGService"); + } + + @Reference + public void setA1(AService a1) { + this.a1 = a1; + } + + @Property + public void setP1(String p1) { + this.p1 = p1; + } + + public String getName() { + return "GService"; + } + + public int getInitCalledCounter() { + return initCalledCounter; + } + + public int getDestroyCalledCounter() { + return destroyCalledCounter; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/HServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/HServiceImpl.java new file mode 100644 index 0000000000..404f329201 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/HServiceImpl.java @@ -0,0 +1,86 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.IService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.HService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(HService.class) +public class HServiceImpl implements HService { + + @Reference + public IService i1; + + public String getName() { + return "HService"; + } + + public String test() { + + String serviceName = i1.getName(); + String conversationIdBefore = i1.getConversationId(); + + for (int i = 0; i < 10; i++) { + String newState = "state-" + i; + i1.setCurrentState(newState); + String currentState = i1.getCurrentState(); + if (currentState == null || !currentState.equals(serviceName + "-" + newState)) { + i1.endConversation(); + return "CurrentStateLost - " + currentState; + } + } + + boolean isInitReady = i1.isInitReady(); + + String conversationIdAfter = i1.getConversationId(); + + i1.endConversation(); + + if (!isInitReady) + return "InitNotReady"; + + if (!conversationIdBefore.equals(conversationIdAfter)) + return "DifferentConversationId"; + + return "None"; + } + + public String testCounters(int n) { + int instanceCounter = i1.getInstanceCounter(); + int initCalledCounter = i1.getInitCalledCounter(); + int destroyCalledCounter = i1.getDestroyCalledCounter(); + + System.out.println("instanceCounter=" + instanceCounter); + System.out.println("initCalledCounter=" + initCalledCounter); + System.out.println("destroyCalledCounter=" + destroyCalledCounter); + + if (instanceCounter != n + 1) + return "IncorrectInstanceCounter"; + if (initCalledCounter != n + 1) + return "IncorrectInitCalledCounter"; + if (destroyCalledCounter != n) + return "IncorrectDestroyCalledCounter"; + + return "None"; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/IServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/IServiceImpl.java new file mode 100644 index 0000000000..66d14c2e96 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/IServiceImpl.java @@ -0,0 +1,131 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.IService; +import org.oasisopen.sca.annotation.ConversationID; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Scope; + +@Service(IService.class) +@Scope("CONVERSATION") +public class IServiceImpl implements IService { + + public static int instanceCounter = 0; + + public static int initCalledCounter = 0; + + public static int destroyCalledCounter = 0; + + @ConversationID + protected String conversationId; + + public int currentInstanceId = 0; + + public AService a1; + + public String p1; + + public String currentState = null; + + public boolean isInitReady = false; + + public IServiceImpl() { + synchronized (IServiceImpl.class) { + currentInstanceId = ++instanceCounter; + } + isInitReady = false; + } + + @Reference + public void setA1(AService a1) { + this.a1 = a1; + } + + @Property + public void setP1(String p1) { + this.p1 = p1; + } + + @Init + public void initIService() throws Exception { + initCalledCounter++; + if (p1.equals("p1") && a1.getName().equals("AService")) + isInitReady = true; + System.out.println("IService" + currentInstanceId + "->initIService"); + } + + @Destroy + public void destroyIService() { + destroyCalledCounter++; + System.out.println("IService" + currentInstanceId + "->destroyIService"); + } + + public void endConversation() { + System.out.println("IService" + currentInstanceId + "->endConversation"); + } + + public String getName() { + return "IService" + currentInstanceId; + } + + public AService getA1() { + return a1; + } + + public String getP1() { + return p1; + } + + public String getCurrentState() { + return currentState; + } + + public String getConversationId() { + return conversationId; + } + + public String setCurrentState(String currentState) { + this.currentState = "IService" + currentInstanceId + "-" + currentState; + return this.currentState; + } + + public boolean isInitReady() { + return isInitReady; + } + + public int getDestroyCalledCounter() { + return destroyCalledCounter; + } + + public int getInitCalledCounter() { + return initCalledCounter; + } + + public int getInstanceCounter() { + return instanceCounter; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/JServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/JServiceImpl.java new file mode 100644 index 0000000000..80546f677c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/JServiceImpl.java @@ -0,0 +1,78 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import java.util.Timer; +import java.util.TimerTask; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.KService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.JService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Scope; + +@Service(JService.class) +@Scope("COMPOSITE") +public class JServiceImpl implements JService { + + @Reference + public KService k1; + + public static String failedReason = ""; + + public static Timer aTimer = null; + + @Init + public void initJService() throws Exception { + aTimer = new Timer(); + aTimer.schedule(new JTimerTask(), 1000); + System.out.println("JService->initJService"); + } + + @Destroy + public void destroyJService() { + aTimer.cancel(); + System.out.println("JService->destroyJService"); + } + + public String getName() { + return "JService"; + } + + public String getFailedReason() { + return failedReason; + } + + private class JTimerTask extends TimerTask { + + public boolean cancel() { + return true; + } + + public void run() { + String result = k1.callL1(); + if (!result.equals("None")) + failedReason = failedReason + ";" + result; + } + + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/KServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/KServiceImpl.java new file mode 100644 index 0000000000..022a9d11f6 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/KServiceImpl.java @@ -0,0 +1,80 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.KService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.LService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Scope; + +@Service(KService.class) +@Scope("STATELESS") +public class KServiceImpl implements KService { + + public static int instanceCounter = 0; + + public String previousL1Name = null; + + public int currentInstanceId = 0; + + @Reference + public LService l1; + + public KServiceImpl() { + currentInstanceId = ++instanceCounter; + } + + + public String getName() { + return "KService"+currentInstanceId; + } + + public String callL1() { + + for (int i = 1; i < 11; i++) { + System.out.println(getName() + " calls LService " + i + (i == 1 ? "st time:" : (i == 2 ? "nd time:" : (i == 3 ? "rd time:" : "th time")))); + + String serviceName = l1.getName(); + for (int j = 0; j < 10; j++) { + String newState = "state-" + j; + l1.setCurrentState(newState); + String currentState = l1.getCurrentState(); + if (!currentState.equals(serviceName + "-" + newState)) { + return "CurrentStateLost - " + currentState; + } + } + + System.out.print(" Name=" + serviceName); + System.out.print(", #Instance=" + l1.getInstanceCounter()); + System.out.print(", #InitCalled=" + l1.getInitCalledCounter()); + System.out.println(", #DestroyCalled=" + l1.getDestroyCalledCounter()); + + if (previousL1Name == null) { + previousL1Name = serviceName; + } else { + if (!previousL1Name.equals(serviceName)) + return "DifferentLServiceInstance"; + } + } + return "None"; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/LServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/LServiceImpl.java new file mode 100644 index 0000000000..196cd6f39a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/LServiceImpl.java @@ -0,0 +1,83 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.LService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Scope; + +@Service(LService.class) +@Scope("REQUEST") +public class LServiceImpl implements LService { + + public static int instanceCounter = 0; + + public static int initCalledCounter = 0; + + public static int destroyCalledCounter = 0; + + public int currentInstanceId = 0; + + public String currentState = null; + + public LServiceImpl() { + currentInstanceId = ++instanceCounter; + } + + @Init + public void initLService() throws Exception { + initCalledCounter++; + System.out.println("LService" + currentInstanceId + "->initLService"); + } + + @Destroy + public void destroyLService() { + destroyCalledCounter++; + System.out.println("LService" + currentInstanceId + "->destroyLService"); + } + + public String getName() { + return "LService" + currentInstanceId; + } + + public String getCurrentState() { + return currentState; + } + + public String setCurrentState(String currentState) { + this.currentState = "LService" + currentInstanceId + "-" + currentState; + return this.currentState; + } + + public int getDestroyCalledCounter() { + return destroyCalledCounter; + } + + public int getInitCalledCounter() { + return initCalledCounter; + } + + public int getInstanceCounter() { + return instanceCounter; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/MServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/MServiceImpl.java new file mode 100644 index 0000000000..acc7d8ca9e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/MServiceImpl.java @@ -0,0 +1,81 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import java.util.Timer; +import java.util.TimerTask; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.MService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.NService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Scope; + +@Service(MService.class) +@Scope("COMPOSITE") +public class MServiceImpl implements MService { + + @Reference + public NService n1; + + public static String failedReason = ""; + + public static Timer aTimer = null; + + public static int counter = 0; + + @Init + public void initMService() throws Exception { + aTimer = new Timer(); + aTimer.schedule(new MTimerTask(), 1000, 1000); + System.out.println("MService->initMService"); + } + + @Destroy + public void destroyMService() { + aTimer.cancel(); + System.out.println("MService->destroyMService"); + } + + public String getName() { + return "MService"; + } + + public String getFailedReason() { + return failedReason; + } + + private class MTimerTask extends TimerTask { + + public boolean cancel() { + return true; + } + + public void run() { + counter++; + String result = n1.callO1(counter); + if (!result.equals("None")) + failedReason = failedReason + ";" + result; + } + + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/NServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/NServiceImpl.java new file mode 100644 index 0000000000..b9d799331f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/NServiceImpl.java @@ -0,0 +1,85 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.NService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.OService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Scope; + +@Service(NService.class) +@Scope("STATELESS") +public class NServiceImpl implements NService { + + public static int instanceCounter = 0; + + public String previousL1Name = null; + + public int currentInstanceId = 0; + + @Reference + public OService o1; + + public NServiceImpl() { + currentInstanceId = ++instanceCounter; + } + + + public String getName() { + return "NService"+currentInstanceId; + } + + public String callO1(int nthTime) { + + for (int i = 1; i < 11; i++) { + System.out.println(getName() + " calls OService " + i + (i == 1 ? "st time:" : (i == 2 ? "nd time:" : (i == 3 ? "rd time:" : "th time")))); + + String serviceName = o1.getName(); + for (int j = 0; j < 10; j++) { + String newState = "state-" + j; + o1.setCurrentState(newState); + String currentState = o1.getCurrentState(); + if (!currentState.equals(serviceName + "-" + newState)) { + return "CurrentStateLost - " + currentState; + } + } + + System.out.print(" Name=" + serviceName); + System.out.print(", #Instance=" + o1.getInstanceCounter()); + System.out.print(", #InitCalled=" + o1.getInitCalledCounter()); + System.out.println(", #DestroyCalled=" + o1.getDestroyCalledCounter()); + + if (previousL1Name == null) { + previousL1Name = serviceName; + } else { + if (!previousL1Name.equals(serviceName)) + return "DifferentOServiceInstance"; + } + + } + + if (o1.getInstanceCounter() < nthTime) { + return "SharedSameInstance"; + } + + return "None"; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/OServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/OServiceImpl.java new file mode 100644 index 0000000000..60178ba2a3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/impl/OServiceImpl.java @@ -0,0 +1,83 @@ +/* + * 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.vtest.javaapi.annotations.scope.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.scope.OService; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Scope; + +@Service(OService.class) +@Scope("REQUEST") +public class OServiceImpl implements OService { + + public static int instanceCounter = 0; + + public static int initCalledCounter = 0; + + public static int destroyCalledCounter = 0; + + public int currentInstanceId = 0; + + public String currentState = null; + + public OServiceImpl() { + currentInstanceId = ++instanceCounter; + } + + @Init + public void initOService() throws Exception { + initCalledCounter++; + System.out.println("OService" + currentInstanceId + "->initOService"); + } + + @Destroy + public void destroyOService() { + destroyCalledCounter++; + System.out.println("OService" + currentInstanceId + "->destroyOService"); + } + + public String getName() { + return "OService" + currentInstanceId; + } + + public String getCurrentState() { + return currentState; + } + + public String setCurrentState(String currentState) { + this.currentState = "OService" + currentInstanceId + "-" + currentState; + return this.currentState; + } + + public int getDestroyCalledCounter() { + return destroyCalledCounter; + } + + public int getInitCalledCounter() { + return initCalledCounter; + } + + public int getInstanceCounter() { + return instanceCounter; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/resources/scope.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/resources/scope.composite new file mode 100644 index 0000000000..7c195b2b5d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/main/resources/scope.composite @@ -0,0 +1,110 @@ + + + + + + + + + + + + p1 + + + + + + p1 + + + + + + p1 + + + + + + p1 + + + + + + p1 + + + + + + + + + + + p1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/ScopeAnnotationTestCase.java b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/ScopeAnnotationTestCase.java new file mode 100644 index 0000000000..6d65416ce8 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/scope/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/scope/ScopeAnnotationTestCase.java @@ -0,0 +1,476 @@ +/* + * 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.vtest.javaapi.annotations.scope; + +import java.util.ArrayList; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * This test class tests the Scope annotation described in section 1.2.4 + * including 1.8.7, 1.8.8, 1.8.9, 1.8.10, 1.8.11, and 1.8.16
    + *

    + * Check following:
    + *

  • Number of service instances be created
  • + *
  • Init method be called and where all property and reference injection is + * complete.
  • + *
  • Destroy method be called
  • + *
  • State be preserved in request and conversation scopes but not others
  • + */ +public class ScopeAnnotationTestCase { + + protected static String compositeName = "scope.composite"; + + protected static int numDThread = 5; + protected static int numFThread = 5; + protected static int numHThread = 5; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } + + /** + * Line 259:
    + *
  • STATELESS
  • + *

    + * Line 284:
    + * For stateless components, there is no implied correlation between + * service requests.
    + *

    + * Line 1589 to 1591:
    + * The default value is 'STATELESS'. For 'STATELESS' implementations, + * a different implementation instance may be used to service each request. + * Implementation instances may be newly created or be drawn from a pool + * of instances.
    + *

    + * BComponent is not defined '@Scope'
    + * CComponent is defined '@Scope("STATELESS")'
    + *

    + */ + @Test + public void atScope1() throws Exception { + System.out.println("atScope1"); + BThread b1 = new BThread("ThreadB1"); + BThread b2 = new BThread("ThreadB2"); + CThread c1 = new CThread("ThreadC1"); + CThread c2 = new CThread("ThreadC2"); + + b1.start(); + b2.start(); + c1.start(); + c2.start(); + b1.join(); + b2.join(); + c1.join(); + c2.join(); + + System.out.println(""); + + Assert.assertEquals("None", b1.failedReason); + Assert.assertEquals("None", b2.failedReason); + Assert.assertEquals("None", c1.failedReason); + Assert.assertEquals("None", c2.failedReason); + } + + /** + * Line 260:
    + *

  • REQUEST
  • + *

    + * Lines 286 to 289:
    + * The lifecycle of request scope extends from the point a request on a + * remotable interface enters the SCA runtime and a thread processes that + * request until the thread completes synchronously processing the request. + * During that time, all service requests will be delegated to the same + * implementation instance of a request-scoped component.
    + *

    + */ + @Test + public void atScope2() throws Exception { + System.out.println("atScope2"); + ArrayList d = new ArrayList(); + for (int i = 0; i < numDThread; i++) + d.add(new DThread("ThreadD"+i)); + for (int i = 0; i < numDThread; i++) + d.get(i).start(); + for (int i = 0; i < numDThread; i++) + d.get(i).join(); + System.out.println(""); + for (int i = 0; i < numDThread; i++) + Assert.assertEquals("None", d.get(i).failedReason); + } + + /** + * Line 262:
    + *

  • COMPOSITE
  • + *

    + * Lines 296 to 298:
    + * All service requests are dispatched to the same implementation instance + * for the lifetime of the containing composite. The lifetime of the + * containing composite is defined as the time it becomes active in the + * runtime to the time it is deactivated, either normally or abnormally.
    + *

    + * Following lines should be found at System out
    + * atScope3 - Cleaning up
    + * FService1->destroyFService + */ + @Test + public void atScope3() throws Exception { + System.out.println("atScope3"); + FService fService = ServiceFinder.getService(FService.class, "FComponent"); + String serviceName = fService.getName(); + boolean isInitReady = fService.isInitReady(); + + ArrayList f = new ArrayList(); + for (int i = 0; i < numFThread; i++) + f.add(new FThread("ThreadF"+i)); + for (int i = 0; i < numFThread; i++) + f.get(i).start(); + for (int i = 0; i < numFThread; i++) + f.get(i).join(); + for (int i = 0; i < numFThread; i++) { + Assert.assertEquals(serviceName, f.get(i).serviceName); + } + + int instanceCounter = fService.getInstanceCounter(); + int initCalledCounter = fService.getInitCalledCounter(); + int destroyCalledCounter = fService.getDestroyCalledCounter(); + System.out.println(""); + + Assert.assertTrue(isInitReady); + Assert.assertEquals(1, instanceCounter); + Assert.assertEquals(1, initCalledCounter); + Assert.assertEquals(0, destroyCalledCounter); + } + + /** + * Lines 299 to 302:
    + * A composite scoped implementation may also specify eager initialization + * using the "@EagerInit" annotation. When marked for eager initialization, + * the composite scoped instance will be created when its containing + * component is started. If a method is marked with the "@Init" annotation, + * it will be called when the instance is created.

    + * Section 1.8.9 "@EagerInit"
    + *

    + * GService is defined as eager initialization. It will be initialized + * when calls SCADomain.newInstance(compositeName), so the + * initCalledCounter is 1. + */ + @Test + public void atScope4() throws Exception { + System.out.println("atScope4"); + + GService gService = ServiceFinder.getService(GService.class, "GComponent"); + int initCalledCounter = gService.getInitCalledCounter(); + int destroyCalledCounter = gService.getDestroyCalledCounter(); + + System.out.println("initCalledCounter="+ initCalledCounter); + System.out.println("destroyCalledCounter="+ destroyCalledCounter); + System.out.println(""); + + Assert.assertEquals(1, initCalledCounter); + Assert.assertEquals(0, destroyCalledCounter); + } + + /** + * Line 261:
    + *

  • CONVERSATION
  • + *

    + * Lines 305 to 310:
    + * A conversation is defined as a series of correlated interactions between + * a client and a target service. A conversational scope starts when the + * first service request is dispatched to an implementation instance + * offering a conversational service. A conversational scope completes + * after an end operation defined by the service contract is called and + * completes processing or the conversation expires. A conversation may be + * long-running and the SCA runtime may choose to passivate implementation + * instances. If this occurs, the runtime must guarantee implementation + * instance state is preserved. + */ + @Test + public void atScope5() throws Exception { + System.out.println("atScope5"); + + ArrayList g = new ArrayList(); + for (int i = 0; i < numHThread; i++) + g.add(new HThread("ThreadH"+i)); + for (int i = 0; i < numHThread; i++) + g.get(i).start(); + for (int i = 0; i < numHThread; i++) + g.get(i).join(); + + HService hService = ServiceFinder.getService(HService.class, "HComponent"); + String failedReason = hService.testCounters(numHThread); + System.out.println(""); + + for (int i = 0; i < numHThread; i++) + Assert.assertEquals("None", g.get(i).failedReason); + Assert.assertEquals("None", failedReason); + } + + /** Lines 290 to 293:
    + * There are times when a local request scoped service is called without + * there being a remotable service earlier in the call stack, such as when + * a local service is called from a non-SCA entity. In these cases, a + * remote request is always considered to be present, but the lifetime of + * the request is implementation dependent. For example, a timer event + * could be treated as a remote request..
    + *

    + * When the composite runs, composite scope service JService kicks off a + * timer by the @Init method. When the timer expires, JService invokes a + * method that calls an operation on the reference to a stateless scope + * sevice KService. KService calls a request scope service LService + * multiple times. The results of the calls to LService should be set up to + * differ depending on whether the same instance is called each time - + * without the interface being declared Conversational.
    + *

    + */ + @Test + public void atScope6() throws Exception { + System.out.println("atScope6"); + + JService jService = ServiceFinder.getService(JService.class, "JComponent"); + jService.getName(); + Thread.sleep(2000); + String failedReason = jService.getFailedReason(); + System.out.println(""); + + Assert.assertEquals("", failedReason); + } + + /** + * Same as atScope6 but the timer triggers KService multiple times.
    + */ + @Test + @Ignore("TUSCANY-2256") + public void atScope7() throws Exception { + System.out.println("atScope7"); + + MService mService = ServiceFinder.getService(MService.class, "MComponent"); + mService.getName(); + Thread.sleep(6000); + String failedReason = mService.getFailedReason(); + System.out.println(""); + + Assert.assertEquals("", failedReason); + } + + private class BThread extends Thread { + private String name = null; + public String failedReason = "Unknown"; + + public BThread(String name) { + super(); + this.name = name; + failedReason = "Unknown"; + } + + @Override + public void run() { + BService bService = ServiceFinder.getService(BService.class, "BComponent"); + bService.setCurrentState(name + "-state-1"); + System.out.println(name + "->" + bService.getName()); + if (!bService.isInitReady()) { + failedReason = "InitNotReady"; + return; + } + if (bService.getCurrentState() != null) { + failedReason = "CurrentStateNotNull"; + return; + } + int counter = bService.getInstanceCounter(); + if (counter < 2) { + failedReason = "OnlyOneInstance - " + counter; + return; + } + counter = bService.getInitCalledCounter(); + if (counter < 2) { + failedReason = "InitBeCalledOnce - " + counter; + return; + } + counter = bService.getDestroyCalledCounter(); + if (counter < 2) { + failedReason = "DestroyBeCalledOnce - " + counter; + return; + } + failedReason = "None"; + } + } + + private class CThread extends Thread { + private String name = null; + public String failedReason = "Unknown"; + + public CThread(String name) { + super(); + this.name = name; + failedReason = "Unknown"; + } + + @Override + public void run() { + CService cService = ServiceFinder.getService(CService.class, "CComponent"); + cService.setCurrentState(name + "-state-1"); + System.out.println(name + "->" + cService.getName()); + if (!cService.isInitReady()) { + failedReason = "InitNotReady"; + return; + } + if (cService.getCurrentState() != null) { + failedReason = "CurrentStateNotNull"; + return; + } + int counter = cService.getInstanceCounter(); + if (counter < 2) { + failedReason = "OnlyOneInstance - " + counter; + return; + } + counter = cService.getInitCalledCounter(); + if (counter < 2) { + failedReason = "InitBeCalledOnce - " + counter; + return; + } + counter = cService.getDestroyCalledCounter(); + if (counter < 2) { + failedReason = "DestroyBeCalledOnce - " + counter; + return; + } + failedReason = "None"; + } + } + + private class DThread extends Thread { + + private String name = null; + public String failedReason = "Unknown"; + + public DThread(String name) { + super(); + this.name = name; + failedReason = "Unknown"; + } + + @Override + public void run() { + DService dService = ServiceFinder.getService(DService.class, "DComponent"); + String serviceName = dService.getName(); + System.out.println(name + "->" + serviceName); + + for (int i = 0; i < 10; i++) { + String newState = name + "-state-" + i; + dService.setCurrentState(newState); + String currentState = dService.getCurrentState(); + if (!currentState.equals(serviceName + "-" + newState)) { + failedReason = "CurrentStateLost - " + currentState; + return; + } + } + + if (!dService.isInitReady()) { + failedReason = "InitNotReady"; + return; + } + + int counter = dService.getInstanceCounter(); + if (counter > numDThread) { + failedReason = "TooMuchInstance - " + counter; + return; + } + + counter = dService.getInitCalledCounter(); + if (counter > numDThread) { + failedReason = "InitBeCalledTooMuch - " + counter; + return; + } + + // JIRA T-2215 + /* Don't know when destroy method be called + counter = dService.getDestroyCalledCounter(); + if (counter > numDThreads) { + failedReason = "DestroyBeCalledTooMuch - " + counter; + return; + } + */ + failedReason = "None"; + } + } + + private class FThread extends Thread { + + private String name = null; + + public String serviceName = null; + + public FThread(String name) { + super(); + this.name = name; + } + + @Override + public void run() { + FService fService = ServiceFinder.getService(FService.class, "FComponent"); + serviceName = fService.getName(); + System.out.println(name + "->" + serviceName); + + for (int i = 0; i < 10; i++) { + String newState = name + "-state-" + i; + fService.setCurrentState(newState); + fService.getCurrentState(); + } + } + } + + private class HThread extends Thread { + + public String failedReason = "Unknown"; + + public HThread(String name) { + super(); + failedReason = "Unknown"; + } + + @Override + public void run() { + HService hService = ServiceFinder.getService(HService.class, "HComponent"); + failedReason = hService.test(); + } + } + +} + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/pom.xml b/sca-java-2.x/contrib/vtest/java-api/annotations/service/pom.xml new file mode 100644 index 0000000000..4c018607d1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-annotations-service + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Annotations - @Service + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/AService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/AService.java new file mode 100644 index 0000000000..7b89b31d7f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/AService.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.vtest.javaapi.annotations.service; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.impl.AObject; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +public interface AService { + + public String getName(); + + public String setAObject(AObject a); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/BService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/BService.java new file mode 100644 index 0000000000..26bcf3b9db --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/BService.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.vtest.javaapi.annotations.service; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.impl.AObject; + +/** + * Simple Local Service + */ +public interface BService { + + public String getName(); + + public String setAObject(AObject a); + + public String testServices(); +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/CService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/CService.java new file mode 100644 index 0000000000..4f4f1e80c7 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/CService.java @@ -0,0 +1,31 @@ +/* + * 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.vtest.javaapi.annotations.service; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.impl.AObject; + +/** + * Simple Local Service without defining "@Service" at the implementation class + */ +public interface CService { + + public String getName(); + + public String setAObject(AObject a); +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/DService1.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/DService1.java new file mode 100644 index 0000000000..ffabb3619c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/DService1.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.annotations.service; + +/** + * Simple Local Service + */ +public interface DService1 { + + public String getName1(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/DService2.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/DService2.java new file mode 100644 index 0000000000..83d7980dbc --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/DService2.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.annotations.service; + +/** + * Simple Local Service + */ +public interface DService2 { + + public String getName2(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/DService3.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/DService3.java new file mode 100644 index 0000000000..a416e33de7 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/DService3.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.annotations.service; + +/** + * Simple Local Service + */ +public interface DService3 { + + public String getName3(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/EService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/EService.java new file mode 100644 index 0000000000..ad44d2b93a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/EService.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.annotations.service; + +/** + * Simple Local Service which implementation class defines + * + * @Service() with no attributes + */ +public interface EService { + + public String getName(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/FService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/FService.java new file mode 100644 index 0000000000..52886131a1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/FService.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.annotations.service; + +/** + * Simple Local Service which implementation class defines + * + * @Service with full package name + */ +public interface FService { + + public String getName(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/GService1.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/GService1.java new file mode 100644 index 0000000000..bd1a3a5fe6 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/GService1.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.annotations.service; + +/** + * Simple Local Service + */ +public interface GService1 { + + public String getName(); + + public String getServiceName(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/GService2.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/GService2.java new file mode 100644 index 0000000000..0f8c7dabcb --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/GService2.java @@ -0,0 +1,26 @@ +/* + * 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.vtest.javaapi.annotations.service; + +/** + * Simple Local Service + */ +public interface GService2 extends GService1 { + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/HService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/HService.java new file mode 100644 index 0000000000..6a80e3023e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/HService.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.vtest.javaapi.annotations.service; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.impl.AObject; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +public interface HService { + + public String getName(); + + public String setAObject1(AObject a); + + public String setAObject2(AObject a); + + public String getComponentName(); + + public String getAObject1String(); + + public String getAObject2String(); + + public String getAObject3String(); + + public AObject getAObject3(); + + public String getServiceName1(); + + public String getServiceName2(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/IService.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/IService.java new file mode 100644 index 0000000000..cdeb43c4f4 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/IService.java @@ -0,0 +1,54 @@ +/* + * 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.vtest.javaapi.annotations.service; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.impl.AObject; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +public interface IService { + + public String getName(); + + public String setAObject1(AObject a); + + public String setAObject2(AObject a); + + public void setComponentName1(String componentName1); + + public String getComponentName1(); + + public String getComponentName2(); + + public String getAObject1String(); + + public String getAObject2String(); + + public String getAObject3String(); + + public AObject getAObject3(); + + public String getServiceName1(); + + public String getServiceName2(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/AObject.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/AObject.java new file mode 100644 index 0000000000..0ab2e29194 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/AObject.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.vtest.javaapi.annotations.service.impl; + +/** + * A simple object to hold a string + */ +public class AObject { + + public String aString; + + public AObject() { + this.aString = null; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/AServiceImpl.java new file mode 100644 index 0000000000..b9617e5780 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/AServiceImpl.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.vtest.javaapi.annotations.service.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.AService; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +public class AServiceImpl implements AService { + + public String getName() { + return "AService"; + } + + public String setAObject(AObject a) { + a.aString = "AService"; + return "AService"; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/BServiceImpl.java new file mode 100644 index 0000000000..474ca084d6 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/BServiceImpl.java @@ -0,0 +1,111 @@ +/* + * 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.vtest.javaapi.annotations.service.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.AService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.BService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.CService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.HService; +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.IService; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.Reference; + +@Service(BService.class) +public class BServiceImpl implements BService { + + @Reference(required=false) + public AService aService = null; + + @Reference(required=false) + public CService cService = null; + + @Reference(required=false) + public HService hService = null; + + @Reference(required=false) + public IService iService = null; + + public String getName() { + return "BService"; + } + + public String setAObject(AObject a) { + a.aString = "BService"; + return "BService"; + } + + public String testServices() { + + AObject a = new AObject(); + aService.setAObject(a); + if (a.aString != null) + return "AServiceNotPassByValue"; + + AObject c = new AObject(); + cService.setAObject(c); + if (c.aString == null || !c.aString.equals("CService")) + return "CServiceNotPassByReference"; + + + AObject h1 = new AObject(); + hService.setAObject1(h1); + if (h1.aString == null || !h1.aString.equals("HService")) + return "HServiceSetAObject1NotPassByReference"; + h1.aString = "testServices"; + if (!hService.getAObject1String().equals("testServices")) + return "HServiceGetAObject1NotPassByReference"; + + AObject h2 = new AObject(); + hService.setAObject2(h2); + if (h2.aString != null) + return "HServiceSetAObject2NotPassByValue"; + h2.aString = "testServices"; + if (!hService.getAObject2String().equals("HService")) + return "HServiceGetAObject1NotPassByValue"; + + AObject h3 = hService.getAObject3(); + h3.aString = "testServices"; + if (!hService.getAObject3String().equals("HService")) + return "HServiceGetAObject3NotPassByValue"; + + AObject i1 = new AObject(); + iService.setAObject1(i1); + if (i1.aString == null || !i1.aString.equals("IService")) + return "IServiceSetAObject1NotPassByReference"; + i1.aString = "testServices"; + if (!iService.getAObject1String().equals("testServices")) + return "IServiceGetAObject1NotPassByReference"; + + AObject i2 = new AObject(); + iService.setAObject2(i2); + if (i2.aString == null || !i2.aString.equals("IService")) + return "IServiceSetAObject2NotPassByReference"; + i2.aString = "testServices"; + if (!iService.getAObject2String().equals("testServices")) + return "IServiceGetAObject2NotPassByReference"; + + AObject i3 = iService.getAObject3(); + i3.aString = "testServices"; + if (!iService.getAObject3String().equals("testServices")) + return "IServiceGetAObject3NotPassByReference"; + + return "None"; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/CServiceImpl.java new file mode 100644 index 0000000000..3fc23d2f68 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/CServiceImpl.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.vtest.javaapi.annotations.service.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.CService; + +public class CServiceImpl implements CService { + + public String getName() { + return "CService"; + } + + public String setAObject(AObject a) { + a.aString = "CService"; + return "CService"; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/DServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/DServiceImpl.java new file mode 100644 index 0000000000..5b3c73ddd8 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/DServiceImpl.java @@ -0,0 +1,41 @@ +/* + * 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.vtest.javaapi.annotations.service.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.DService1; +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.DService2; +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.DService3; +import org.oasisopen.sca.annotation.Service; + +@Service(interfaces = {DService1.class, DService2.class}) +public class DServiceImpl implements DService1, DService2, DService3 { + + public String getName1() { + return "DService1"; + } + + public String getName2() { + return "DService2"; + } + + public String getName3() { + return "DService3"; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/EServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/EServiceImpl.java new file mode 100644 index 0000000000..321d019932 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/EServiceImpl.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.vtest.javaapi.annotations.service.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.EService; +import org.oasisopen.sca.annotation.Service; + +@Service() +public class EServiceImpl implements EService { + + public String getName() { + return "EService"; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/FServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/FServiceImpl.java new file mode 100644 index 0000000000..f28fa0c3a7 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/FServiceImpl.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.vtest.javaapi.annotations.service.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.FService; +import org.oasisopen.sca.RequestContext; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Service; + +@Service(org.apache.tuscany.sca.vtest.javaapi.annotations.service.FService.class) +public class FServiceImpl implements FService { + + @Context + public RequestContext requestContext; + + public String getName() { + return requestContext.getServiceName(); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/FServiceImpl2.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/FServiceImpl2.java new file mode 100644 index 0000000000..79051eea8f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/FServiceImpl2.java @@ -0,0 +1,26 @@ +/* + * 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.vtest.javaapi.annotations.service.impl; + +import org.oasisopen.sca.annotation.Service; + +@Service(FServiceImpl2.class) +public class FServiceImpl2 extends FServiceImpl { +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/GServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/GServiceImpl.java new file mode 100644 index 0000000000..161cbaa620 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/GServiceImpl.java @@ -0,0 +1,42 @@ +/* + * 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.vtest.javaapi.annotations.service.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.GService1; +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.GService2; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.RequestContext; + +@Service(interfaces = {GService1.class, GService2.class}) +public class GServiceImpl implements GService1 { + + @Context + public RequestContext requestContext; + + public String getName() { + return "GService"; + } + + public String getServiceName() { + return requestContext.getServiceName(); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/HServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/HServiceImpl.java new file mode 100644 index 0000000000..02e67b645b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/HServiceImpl.java @@ -0,0 +1,105 @@ +/* + * 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.vtest.javaapi.annotations.service.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.HService; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.RequestContext; +import org.oasisopen.sca.annotation.ComponentName; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; +import org.oasisopen.sca.annotation.AllowsPassByReference; + +@Service(HService.class) +@Scope("REQUEST") +public class HServiceImpl implements HService { + + @ComponentName + protected String componentName; + + private AObject aObject1 = null; + + private AObject aObject2 = null; + + private AObject aObject3 = null; + + public RequestContext requestContext; + + public ComponentContext componentContext; + + public String getName() { + return "HService"; + } + + @AllowsPassByReference + public String setAObject1(AObject a) { + a.aString = "HService"; + aObject1 = a; + return "HService"; + } + + public String setAObject2(AObject a) { + a.aString = "HService"; + aObject2 = a; + return "HService"; + } + + @Context + public void setComponentContext(ComponentContext componentContext) { + this.componentContext = componentContext; + } + + @Context + public void setRequestContext(RequestContext requestContext) { + this.requestContext = requestContext; + } + + public String getComponentName() { + return componentName; + } + + public String getAObject1String() { + return aObject1.aString; + } + + public String getAObject2String() { + return aObject2.aString; + } + + public String getAObject3String() { + return aObject3.aString; + } + + public AObject getAObject3() { + aObject3 = new AObject(); + aObject3.aString = "HService"; + return aObject3; + } + + public String getServiceName1() { + return requestContext.getServiceName(); + } + + public String getServiceName2() { + return componentContext.getRequestContext().getServiceName(); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/IServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/IServiceImpl.java new file mode 100644 index 0000000000..ea08149eaf --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/impl/IServiceImpl.java @@ -0,0 +1,107 @@ +/* + * 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.vtest.javaapi.annotations.service.impl; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.IService; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.RequestContext; +import org.oasisopen.sca.annotation.AllowsPassByReference; +import org.oasisopen.sca.annotation.ComponentName; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(IService.class) +@Scope("REQUEST") +@AllowsPassByReference +public class IServiceImpl implements IService { + + @ComponentName + public String componentName1; + + public String componentName2; + + private AObject aObject1 = null; + + private AObject aObject2 = null; + + private AObject aObject3 = null; + + @Context + public RequestContext requestContext; + + @Context + public ComponentContext componentContext; + + public String getName() { + return "IService"; + } + + public String setAObject1(AObject a) { + a.aString = "IService"; + aObject1 = a; + return "IService"; + } + + public String setAObject2(AObject a) { + a.aString = "IService"; + aObject2 = a; + return "IService"; + } + + @ComponentName + public void setComponentName1(String componentName1) { + this.componentName2 = componentName1; + } + + public String getAObject1String() { + return aObject1.aString; + } + + public String getAObject2String() { + return aObject2.aString; + } + + public String getAObject3String() { + return aObject3.aString; + } + + public AObject getAObject3() { + aObject3 = new AObject(); + aObject3.aString = "IService"; + return aObject3; + } + + public String getComponentName1() { + return componentName1; + } + + public String getComponentName2() { + return componentName2; + } + + public String getServiceName1() { + return requestContext.getServiceName(); + } + + public String getServiceName2() { + return componentContext.getRequestContext().getServiceName(); + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/resources/service.composite b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/resources/service.composite new file mode 100644 index 0000000000..0731986df2 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/main/resources/service.composite @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/ServiceAnnotationTestCase.java b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/ServiceAnnotationTestCase.java new file mode 100644 index 0000000000..52f7821ebb --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/annotations/service/src/test/java/org/apache/tuscany/sca/vtest/javaapi/annotations/service/ServiceAnnotationTestCase.java @@ -0,0 +1,335 @@ +/* + * 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.vtest.javaapi.annotations.service; + +import static org.junit.Assert.fail; +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.impl.AObject; +import org.apache.tuscany.sca.vtest.javaapi.annotations.service.impl.FServiceImpl2; +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * This test class tests the Service annotation described in section 1.2.1 + * including 1.3.1, 1.8.1, 1.8.3, 1.8.6, 1.8.15 and 1.8.17
    + * but not..
    + *

  • Lines 1531 to 1534
  • + */ +public class ServiceAnnotationTestCase { + + protected static String compositeName = "service.composite"; + protected static AService aService = null; + protected static BService bService = null; + protected static BService bService1 = null; + protected static HService hService = null; + protected static IService iService = null; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + aService = ServiceFinder.getService(AService.class, "AComponent"); + bService = ServiceFinder.getService(BService.class, "BComponent"); + bService1 = ServiceFinder.getService(BService.class, "BComponent1"); + hService = ServiceFinder.getService(HService.class, "HComponent"); + iService = ServiceFinder.getService(IService.class, "IComponent"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + + } + + /** + * Line 215:
    + *
  • As a Java interface
  • + *

    + * Line 1622 to 1623:
    + * The + * + * @Service annotation type is used on a component implementation class to + * specify the SCA services offered by the implementation.
    + */ + @Test + public void atService1() throws Exception { + Assert.assertEquals("AService", aService.getName()); + } + + /** + * Line 216:
    + *

  • As a Java class
  • + *

    + * Line 1631:
    + *

  • value – A shortcut for the case when the class provides only a + * single service interface.
  • + */ + @Test + public void atService2() throws Exception { + Assert.assertEquals("BService", bService.getName()); + } + + /** + * Lines 222 to 224:
    + * A remotable service is defined using the "@Remotable" annotation on the + * Java interface that defines the service. Remotable services are intended + * to be used for coarse grained services, and the parameters are passed + * by-value.
    + *

    + * Lines 321 to 323:
    + * The "@Remotable" annotation on a Java interface indicates that the + * interface is designed to be used for remote communication. Remotable + * interfaces are intended to be used for coarse grained services. + * Operations parameters and return values are passed by-value.
    + */ + @Test + public void atService3() throws Exception { + AObject o = new AObject(); + Assert.assertEquals("AService", aService.setAObject(o)); + Assert.assertNull(o.aString); + } + + /** + * Lines 227 to 242:
    + * A local service can only be called by clients that are deployed within + * the same address space as the component implementing the local service.
    + * ...
    + * The data exchange semantic for calls to local services is by-reference.
    + * ...
    + * Lines 996 to 1028:
    + * 1.8.1 "@AllowsPassByReference"
    + * ...
    + * Lines 1535 to 1540:
    + * Independent of whether the remotable service is called from outside of + * the composite that contains it or from another component in the same + * composite, the data exchange semantics are by-value.
    + * Implementations of remotable services may modify input data during or + * after an invocation and may modify return data after the invocation. If a + * remotable service is called locally or remotely, the SCA container is + * responsible for making sure that no modification of input data or + * post-invocation modifications to return data are seen by the caller.
    + *

    + * Test under Non-SCA <-> SCA + *

  • BService is local service to test by reference
  • + *
  • HService is remotable service to test "@AllowsPassByReference" at + * method level
  • + *
  • IService is remotable service to test "@AllowsPassByReference" at + * class level
  • + */ + @Test + public void atService4() throws Exception { + AObject b = new AObject(); + Assert.assertEquals("BService", bService.setAObject(b)); + Assert.assertEquals("BService", b.aString); + + AObject h1 = new AObject(); + Assert.assertEquals("HService", hService.setAObject1(h1)); + Assert.assertEquals("HService", h1.aString); + h1.aString = "atService4"; + Assert.assertEquals("atService4", hService.getAObject1String()); + + AObject h2 = new AObject(); + Assert.assertEquals("HService", hService.setAObject2(h2)); + Assert.assertNull(h2.aString); + h2.aString = "atService4"; + Assert.assertEquals("HService", hService.getAObject2String()); + + AObject h3 = hService.getAObject3(); + h3.aString = "atService4"; + Assert.assertEquals("HService", hService.getAObject3String()); + + AObject i1 = new AObject(); + Assert.assertEquals("IService", iService.setAObject1(i1)); + Assert.assertEquals("IService", i1.aString); + i1.aString = "atService4"; + Assert.assertEquals("atService4", iService.getAObject1String()); + + AObject i2 = new AObject(); + Assert.assertEquals("IService", iService.setAObject2(i2)); + Assert.assertEquals("IService", i2.aString); + i2.aString = "atService4"; + Assert.assertEquals("atService4", iService.getAObject2String()); + + AObject i3 = iService.getAObject3(); + i3.aString = "atService4"; + Assert.assertEquals("atService4", iService.getAObject3String()); + } + + /** + * Line 1624 to 1627:
    + * A class used as the implementation of a service is not required to have + * an "@Service" annotation. If a class has no "@Service" annotation, then + * the rules determining which services are offered and what interfaces + * those services have are determined by the specific implementation type. + *
    + */ + @Test + public void atService5() throws Exception { + CService cService = ServiceFinder.getService(CService.class, "CComponent"); + Assert.assertEquals("CService", cService.getName()); + } + + /** + * Line 1623 to 1624:
    + * The class need not be declared as implementing all of the interfaces + * implied by the services, but all methods of the service interfaces must + * be present.
    + *

    + * Line 1629 to 1630:
    + *

  • interfaces – The value is an array of interface or class objects + * that should be exposed as services by this component.
  • + */ + @Test + public void atService6() throws Exception { + DService1 dService1 = ServiceFinder.getService(DService1.class, "DComponent/DService1"); + Assert.assertEquals("DService1", dService1.getName1()); + DService2 dService2 = ServiceFinder.getService(DService2.class, "DComponent/DService2"); + Assert.assertEquals("DService2", dService2.getName2()); + try { + ServiceFinder.getService(DService3.class, "DComponent/DService3"); + fail("Should have failed to get this service"); + } catch (Exception e) { + // Expect an exception + } + } + + /** + * Line 1635 to 1636:
    + * A "@Service" annotation with no attributes is meaningless, it is the same + * as not having the annotation there at all.
    + */ + @Test + public void atService7() throws Exception { + EService eService = ServiceFinder.getService(EService.class, "EComponent"); + Assert.assertEquals("EService", eService.getName()); + } + + /** + * Line 1637 to 1638:
    + * The service names of the defined services default to the names of the + * interfaces or class, without the package name.
    + */ + @Test + public void atService8() throws Exception { + FService fService = ServiceFinder.getService(FService.class, "FComponent"); + Assert.assertEquals("FService", fService.getName()); + FServiceImpl2 fServiceImpl2 = ServiceFinder.getService(FServiceImpl2.class, "FComponent2"); + Assert.assertEquals("FServiceImpl2", fServiceImpl2.getName()); + fService = ServiceFinder.getService(FService.class, "FComponent2"); + Assert.assertEquals("FServiceImpl2", fService.getName()); + } + + /** + * Line 1639 to 1641:
    + * If a Java implementation needs to realize two services with the same + * interface, then this is achieved through subclassing of the interface. + * The subinterface must not add any methods. Both interfaces are listed in + * the "@Service" annotation of the Java implementation class.
    + */ + @Test + public void atService9() throws Exception { + GService1 gService1 = ServiceFinder.getService(GService1.class, "GComponent/GService1"); + GService2 gService2 = ServiceFinder.getService(GService2.class, "GComponent/GService2"); + Assert.assertEquals("GService", gService1.getName()); + Assert.assertEquals("GService1", gService1.getServiceName()); + Assert.assertEquals("GService", gService2.getName()); + Assert.assertEquals("GService2", gService2.getServiceName()); + } + + /** + * Lines 227 to 242:
    + * A local service can only be called by clients that are deployed within + * the same address space as the component implementing the local service.
    + * ...
    + * The data exchange semantic for calls to local services is by-reference.
    + * ...
    + * Lines 996 to 1028:
    + * 1.8.1 "@AllowsPassByReference"
    + * ...
    + * Lines 1535 to 1540:
    + * Independent of whether the remotable service is called from outside of + * the composite that contains it or from another component in the same + * composite, the data exchange semantics are by-value.
    + * Implementations of remotable services may modify input data during or + * after an invocation and may modify return data after the invocation. If a + * remotable service is called locally or remotely, the SCA container is + * responsible for making sure that no modification of input data or + * post-invocation modifications to return data are seen by the caller.
    + *

    + * Test under SCA <-> SCA
    + *

  • AService is remotable service to test by value
  • + *
  • CService is local service to test by-reference
  • + *
  • HService is remotable service to test "@AllowsPassByReference" at + * method level
  • + *
  • IService is remotable service to test "@AllowsPassByReference" at + * class level
  • + */ + @Test + public void atService10() throws Exception { + Assert.assertEquals("None", bService1.testServices()); + } + + /** + * Lines 1095 to 1124:
    + * 1.8.3. "@ComponentName"
    + * ...
    + * The "@ComponentName" annotation type is used to annotate a Java class + * field or setter method that is used to inject the component name.
    + * ...
    + */ + @Test + public void atService11() throws Exception { + Assert.assertEquals("HComponent", hService.getComponentName()); + Assert.assertNull(iService.getComponentName1()); + Assert.assertEquals("IComponent", iService.getComponentName2()); + } + + /** + * Lines 1164 to 1187:
    + * 1.8.6. "@Context"
    + * ...
    + * The "@Context" annotation type is used to annotate a Java class field or + * a setter method that is used to inject a composite context for the + * component. The type of context to be injected is defined by the type of + * the Java class field or type of the setter method input argument, the + * type is either ComponentContext or RequestContext.
    + * ...
    + *

    + * HService - "@Context" is used to annotate setter methods
    + * IService - "@Context" is used to annotate class fields
    + *
    + */ + @Test + public void atService12() throws Exception { + Assert.assertEquals("HService", hService.getServiceName1()); + Assert.assertEquals("HService", hService.getServiceName2()); + Assert.assertEquals("IService", iService.getServiceName1()); + Assert.assertEquals("IService", iService.getServiceName2()); + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/pom.xml b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/pom.xml new file mode 100644 index 0000000000..fff1689569 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/pom.xml @@ -0,0 +1,45 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-apis + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-apis-callablereference + Apache Tuscany SCA Java APIs and Annotations Verification Tests - APIs - CallableReference + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/AComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/AComponent.java new file mode 100644 index 0000000000..a7040f944e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/AComponent.java @@ -0,0 +1,38 @@ +/* + * 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.vtest.javaapi.apis.callablereference; + +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Service A. + */ +@Conversational +public interface AComponent { + + public String getName(); + + public String getServiceName(); + public String getBusinessInterfaceName(); + public boolean isConversational(); + public void testConversationID(); + public String getCallbackResult(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BCallback.java b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BCallback.java new file mode 100644 index 0000000000..707568e507 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BCallback.java @@ -0,0 +1,26 @@ +/* + * 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.vtest.javaapi.apis.callablereference; + +public interface BCallback { + + public void processResults(String result); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BComponent.java new file mode 100644 index 0000000000..18fcaee6ee --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BComponent.java @@ -0,0 +1,38 @@ +/* + * 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.vtest.javaapi.apis.callablereference; + +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Service B. + */ +@Conversational +@Callback(BCallback.class) +public interface BComponent { + + public String getName(); + + public void testCallback(); + public void testConversationID(); + public void testNonNullConversation(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/AComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/AComponentImpl.java new file mode 100644 index 0000000000..70a257d19f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/AComponentImpl.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.vtest.javaapi.apis.callablereference.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.AComponent; +import org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.BCallback; +import org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.BComponent; +import org.junit.Assert; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.ConversationID; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AComponent.class) +@Scope("CONVERSATION") +public class AComponentImpl implements AComponent, BCallback { + + private static Object monitor = new Object(); + private static String returnMessage = null; + + protected ComponentContext componentContext; + + @Reference + protected CallableReference bReference; + + @ConversationID + protected String cid; + + public String getName() { + return "ComponentA"; + } + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + public String getServiceName() { + return bReference.getService().getName(); + } + + public String getBusinessInterfaceName() { + return bReference.getBusinessInterface().getSimpleName(); + } + + public boolean isConversational() { + return bReference.isConversational(); + } + + public void testConversationID() { + ServiceReference bSR = componentContext.getServiceReference(BComponent.class, "bReference"); + bSR.setConversationID("AConversationID"); + bSR.getService().testConversationID(); + + Assert.assertEquals("AConversationID", bSR.getConversation().getConversationID()); + } + + public String getCallbackResult() { + ServiceReference bSR = componentContext.getServiceReference(BComponent.class, "bReference"); + String cbID = "ComponentACallBack"; + bSR.setCallbackID(cbID); + bSR.getService().testCallback(); + + // Wait for 30s max. + int count = 0; + synchronized(monitor) { + while (returnMessage == null && count++ < 30) { + try { + monitor.wait(1000L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + return returnMessage; + } + + public void processResults(String result) { + returnMessage = result; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/BComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/BComponentImpl.java new file mode 100644 index 0000000000..ea4c71d27a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/BComponentImpl.java @@ -0,0 +1,70 @@ +/* + * 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.vtest.javaapi.apis.callablereference.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.BCallback; +import org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.BComponent; +import org.junit.Assert; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.ConversationID; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BComponent.class) +@Scope("CONVERSATION") +public class BComponentImpl implements BComponent { + + protected ComponentContext componentContext; + + @Callback + protected BCallback callback; + + @ConversationID + protected String cid; + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + public String getName() { + return "ComponentB"; + } + + public void testCallback() { + callback = componentContext.getRequestContext().getCallback(); + callback.processResults("CallBackFromB"); + + CallableReference bCR = componentContext.getRequestContext().getCallbackReference(); + Assert.assertEquals("ComponentACallBack", bCR.getCallbackID()); + } + + public void testConversationID() { + Assert.assertEquals("AConversationID", cid); + } + + public void testNonNullConversation() { + Assert.assertNotNull(componentContext.getRequestContext().getServiceReference().getConversation()); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/resources/callablereference.composite b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/resources/callablereference.composite new file mode 100644 index 0000000000..f997d78bb5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/main/resources/callablereference.composite @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/CallableReferenceTestCase.java b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/CallableReferenceTestCase.java new file mode 100644 index 0000000000..4d0d8338ba --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/callablereference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/CallableReferenceTestCase.java @@ -0,0 +1,118 @@ +/* + * 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.vtest.javaapi.apis.callablereference; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * This test class tests the CallableReference interface described in 1.7.3 of + * the SCA Java Annotations & APIs Specification 1.0. + */ +public class CallableReferenceTestCase { + + protected static String compositeName = "callablereference.composite"; + protected static AComponent a; + protected static BComponent b; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + a = ServiceFinder.getService(AComponent.class, "AComponent"); + b = ServiceFinder.getService(BComponent.class, "BComponent"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } + + /** + * Lines 884
    + * getService() - Returns a type-safe reference to the target of this + * reference. The instance returned is guaranteed to implement the business + * interface for this reference. The value returned is a proxy to the target + * that implements the business interface associated with this reference. + * + * @throws Exception + */ + @Test + public void testGetService() throws Exception { + Assert.assertEquals("ComponentB", a.getServiceName()); + } + + /** + * Lines 885
    + * getBusinessInterface() – Returns the Java class for the business + * interface associated with this reference. + * + * @throws Exception + */ + @Test + public void testGetBusinessInterface() throws Exception { + Assert.assertEquals("BComponent", a.getBusinessInterfaceName()); + } + + /** + * Lines 886
    + * isConversational() – Returns true if this reference is conversational. + * + * @throws Exception + */ + @Test + public void testIsConversational() throws Exception { + Assert.assertEquals(true, a.isConversational()); + } + + /** + * Lines 887
    + * getConversation() – Returns the conversation associated with this + * reference. Returns null if no conversation is currently active. + * + * @throws Exception + */ + @Test + public void testGetConversation() throws Exception { + a.testConversationID(); + b.testNonNullConversation(); + } + + /** + * Lines 888
    + * getCallbackID() – Returns the callback ID. + * + * @throws Exception + */ + @Test + public void testGetCallbackID() throws Exception { + // Actual test is in BComponentImpl. Below is an extra test. + Assert.assertEquals("CallBackFromB", a.getCallbackResult()); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/pom.xml b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/pom.xml new file mode 100644 index 0000000000..0a2d12a41e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/pom.xml @@ -0,0 +1,45 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-apis + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-apis-componentcontext + Apache Tuscany SCA Java APIs and Annotations Verification Tests - APIs - ComponentContext + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/AComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/AComponent.java new file mode 100644 index 0000000000..b2c8c07866 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/AComponent.java @@ -0,0 +1,42 @@ +/* + * 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.vtest.javaapi.apis.componentcontext; + +/** + * Simple Service A. + */ +public interface AComponent { + + public String getName(); + + public String getContextURI(); + public String getServiceBName(); + public String getServiceReferenceBName(); + public String getSelfReferenceName(); + public String getProperty(); + public String getRequestContextServiceName(); + public String getCastCallableReferenceServiceName(); + public String getCastServiceReferenceServiceName(); + public void illegalCast(); + + public String testServiceLookup(); + public String getRequestContextContent(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/BComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/BComponent.java new file mode 100644 index 0000000000..7e425c740f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/BComponent.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 org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext; + +/** + * Simple Service B. + */ +public interface BComponent { + + String getName(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/BService.java b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/BService.java new file mode 100644 index 0000000000..d7799bb3aa --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/BService.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.vtest.javaapi.apis.componentcontext; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service B. + */ +@Remotable +public interface BService { + + String getBName(); + + String getSelfReferenceWithServiceName(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/CService.java b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/CService.java new file mode 100644 index 0000000000..d0da012f6f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/CService.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 org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext; + +/** + * Simple Service C. + */ +public interface CService { + + String getCName(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/DComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/DComponent.java new file mode 100644 index 0000000000..079d859f74 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/DComponent.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 org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext; + +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface DComponent { + + public String getName(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/AComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/AComponentImpl.java new file mode 100644 index 0000000000..06a71c29ac --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/AComponentImpl.java @@ -0,0 +1,124 @@ +/* + * 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.vtest.javaapi.apis.componentcontext.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext.AComponent; +import org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext.BService; +import org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext.DComponent; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.RequestContext; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.EagerInit; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AComponent.class) +@Scope("COMPOSITE") +@EagerInit +public class AComponentImpl implements AComponent { + + public static String rcContent = null; + + protected ComponentContext componentContext; + + @Reference + protected BService bReference; + + @Reference + protected DComponent dReference; + + @Property(name="aProperty", required=true) + protected String aProperty; + + public String getName() { + return "ComponentA"; + } + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + @Init + public void init() { + RequestContext rc = componentContext.getRequestContext(); + if (rc != null) { + rcContent = "NotNull"; + } else { + rcContent = "Null"; + } + } + + public String getContextURI() { + return componentContext.getURI(); + } + + public String getServiceBName() { + return componentContext.getService(BService.class, "bReference").getBName(); + } + + public String getServiceReferenceBName() { + ServiceReference bSR = componentContext.getServiceReference(BService.class, "bReference"); + return bSR.getService().getBName(); + } + + public String getSelfReferenceName() { + ServiceReference aSR = componentContext.createSelfReference(AComponent.class); + return aSR.getService().getName(); + } + + public String getProperty() { + return componentContext.getProperty(String.class, "aProperty"); + } + + public String getRequestContextServiceName() { + return componentContext.getRequestContext().getServiceName(); + } + + public String getCastCallableReferenceServiceName() { + BService b = componentContext.getService(BService.class, "bReference"); + CallableReference bCR = componentContext.cast(b); + return bCR.getService().getBName(); + } + + public String getCastServiceReferenceServiceName() { + BService b = componentContext.getService(BService.class, "bReference"); + ServiceReference bSR = componentContext.cast(b); + return bSR.getService().getBName(); + } + + public void illegalCast() { + componentContext.cast(""); + } + + public String testServiceLookup() { + return componentContext.getService(DComponent.class, "dReference").getName(); + } + + public String getRequestContextContent() { + return rcContent; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/AUnannotatedComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/AUnannotatedComponentImpl.java new file mode 100644 index 0000000000..e508687965 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/AUnannotatedComponentImpl.java @@ -0,0 +1,121 @@ +/* + * 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.vtest.javaapi.apis.componentcontext.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext.AComponent; +import org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext.BService; +import org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext.DComponent; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.RequestContext; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.EagerInit; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AComponent.class) +@Scope("COMPOSITE") +@EagerInit +public class AUnannotatedComponentImpl implements AComponent { + + public static String rcContent = null; + + protected ComponentContext componentContext; + + protected BService bReference; + + protected DComponent dReference; + + protected String aProperty; + + public String getName() { + return "ComponentA"; + } + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + @Init + public void init() { + RequestContext rc = componentContext.getRequestContext(); + if (rc != null) { + rcContent = "NotNull"; + } else { + rcContent = "Null"; + } + } + + public String getContextURI() { + return componentContext.getURI(); + } + + public String getServiceBName() { + return componentContext.getService(BService.class, "bReference").getBName(); + } + + public String getServiceReferenceBName() { + ServiceReference bSR = componentContext.getServiceReference(BService.class, "bReference"); + return bSR.getService().getBName(); + } + + public String getSelfReferenceName() { + ServiceReference aSR = componentContext.createSelfReference(AComponent.class); + return aSR.getService().getName(); + } + + public String getProperty() { + return componentContext.getProperty(String.class, "aProperty"); + } + + public String getRequestContextServiceName() { + return componentContext.getRequestContext().getServiceName(); + } + + public String getCastCallableReferenceServiceName() { + BService b = componentContext.getService(BService.class, "bReference"); + CallableReference bCR = componentContext.cast(b); + return bCR.getService().getBName(); + } + + public String getCastServiceReferenceServiceName() { + BService b = componentContext.getService(BService.class, "bReference"); + ServiceReference bSR = componentContext.cast(b); + return bSR.getService().getBName(); + } + + public void illegalCast() { + componentContext.cast(""); + } + + public String testServiceLookup() { + return componentContext.getService(DComponent.class, "dReference").getName(); + } + + public String getRequestContextContent() { + return rcContent; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/BComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/BComponentImpl.java new file mode 100644 index 0000000000..157864fd27 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/BComponentImpl.java @@ -0,0 +1,52 @@ +/* + * 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.vtest.javaapi.apis.componentcontext.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext.BService; +import org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext.CService; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Service; + +@Service(interfaces={BService.class, CService.class}) +public class BComponentImpl implements BService, CService { + + protected ComponentContext componentContext; + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + public String getBName() { + return "ServiceB"; + } + + public String getCName() { + return "ServiceC"; + } + + public String getSelfReferenceWithServiceName() { + ServiceReference cSR = componentContext.createSelfReference(CService.class, "CService"); + return cSR.getService().getCName(); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/DComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/DComponentImpl.java new file mode 100644 index 0000000000..9432c70ff3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/impl/DComponentImpl.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.vtest.javaapi.apis.componentcontext.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext.DComponent; +import org.oasisopen.sca.annotation.Service; + +@Service(DComponent.class) +public class DComponentImpl implements DComponent { + + public String getName() { + return "ComponentD"; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/resources/ab.composite b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/resources/ab.composite new file mode 100644 index 0000000000..19f110d5dc --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/main/resources/ab.composite @@ -0,0 +1,47 @@ + + + + + + + + + PropertyA + + + + + + + PropertyA + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/ComponentContextTestCase.java b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/ComponentContextTestCase.java new file mode 100644 index 0000000000..e9352a5c06 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/componentcontext/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/componentcontext/ComponentContextTestCase.java @@ -0,0 +1,191 @@ +/* + * 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.vtest.javaapi.apis.componentcontext; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +import org.oasisopen.sca.ServiceRuntimeException; + +/** + * This test class tests the ComponentContext interface described in 1.7.1 of + * the SCA Java Annotations & APIs Specification 1.0. Relevant sections of 1.4 + * will also be covered here. + */ +public class ComponentContextTestCase { + + protected static String compositeName = "ab.composite"; + protected static AComponent a; + protected static AComponent aUnannotated; + protected static BService b; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + a = ServiceFinder.getService(AComponent.class, "AComponent"); + aUnannotated = ServiceFinder.getService(AComponent.class, "AUnannotatedComponent"); + b = ServiceFinder.getService(BService.class, "BComponent/BService"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } + + /** + * Lines 776
    + * getURI() - Returns the absolute URI of the component within the SCA + * domain. + * + * @throws Exception + */ + @Test + public void testGetURI() throws Exception { + Assert.assertEquals("AComponent", a.getContextURI()); + Assert.assertEquals("AUnannotatedComponent", aUnannotated.getContextURI()); + } + + /** + * Lines 778
    + * getService(Class<B> businessInterface, String referenceName) ? + * Returns a proxy for the reference defined by the current component. + * + * @throws Exception + */ + @Test + public void testGetService() throws Exception { + Assert.assertEquals(a.getServiceBName(), "ServiceB"); + } + + /** + * Lines 780
    + * getServiceReference(Class<B> businessInterface, String + * referenceName) ? Returns a ServiceReference defined by the current + * component. + * + * @throws Exception + */ + @Test + public void testGetServiceReference() throws Exception { + Assert.assertEquals(a.getServiceReferenceBName(), "ServiceB"); + } + + /** + * Lines 783
    + * createSelfReference(Class<B> businessInterface) ? Returns a + * ServiceReference that can be used to invoke this component over the + * designated service. + * + * @throws Exception + */ + @Test + public void testCreateSelfReference() throws Exception { + Assert.assertEquals(a.getSelfReferenceName(), "ComponentA"); + } + + /** + * Lines 785
    + * getSelfReference(Class<B> businessInterface, String serviceName) - + * Returns a ServiceReference that can be used to invoke this component over + * the designated service. Service name explicitly declares the service name + * to invoke. + * + * @throws Exception + */ + @Test + public void testCreateSelfReferenceWithServiceName() throws Exception { + Assert.assertEquals("ServiceC", b.getSelfReferenceWithServiceName()); + } + + /** + * Lines 788
    + * getProperty (Class<B> type, String propertyName) - Returns the + * value of an SCA property defined by this component. + * + * @throws Exception + */ + @Test + public void testGetProperty() throws Exception { + Assert.assertEquals("PropertyA", a.getProperty()); + } + + /** + * Lines 793
    + * getRequestContext() - Returns the context for the current SCA service + * request, or null if there is no current request or if the context is + * unavailable. + * + * @throws Exception + */ + @Test + public void testGetRequestContext() throws Exception { + Assert.assertEquals("AComponent", a.getRequestContextServiceName()); + Assert.assertEquals("NotNull", a.getRequestContextContent()); + } + + /** + * Lines 790,794
    + * cast(B target) - Casts a type-safe reference to a CallableReference. + * + * @throws Exception + */ + @Test + public void testCast() throws Exception { + Assert.assertEquals("ServiceB", a.getCastCallableReferenceServiceName()); + Assert.assertEquals("ServiceB", a.getCastServiceReferenceServiceName()); + + String check = ""; + try { + a.illegalCast(); + } catch (IllegalArgumentException iae) { + check = "IllegalCast"; + } catch (ServiceRuntimeException sre) { + if (sre.getCause() instanceof IllegalArgumentException) { + check = "IllegalCast"; + } + } + Assert.assertEquals("IllegalCast", check); + } + + /** + * Lines 342-344
    + * When a component implementation needs access to a service where the + * reference to the service is not known at compile time, the reference can + * be located using the component?s ComponentContext. + * + * @throws Exception + */ + @Test + @Ignore("TUSCANY-2609") + public void testServiceLookup() throws Exception { + Assert.assertEquals("ComponentD", a.testServiceLookup()); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/conversation/pom.xml b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/pom.xml new file mode 100644 index 0000000000..e026dcc800 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/pom.xml @@ -0,0 +1,45 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-apis + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-apis-conversation + Apache Tuscany SCA Java APIs and Annotations Verification Tests - APIs - Conversation + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/AComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/AComponent.java new file mode 100644 index 0000000000..845c10303e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/AComponent.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.vtest.javaapi.apis.conversation; + +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Service A. + */ +@Conversational +public interface AComponent { + + public String getName(); + + public void testConversation(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/BComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/BComponent.java new file mode 100644 index 0000000000..a3148aa0d7 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/BComponent.java @@ -0,0 +1,39 @@ +/* + * 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.vtest.javaapi.apis.conversation; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.EndsConversation; + +/** + * Simple Service B. + */ +@Conversational +public interface BComponent { + + public String getName(); + + public void testCustomConversationID(); + public void testGeneratedConversationID(Object id); + + @EndsConversation + public void endsConversation(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/impl/AComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/impl/AComponentImpl.java new file mode 100644 index 0000000000..7160121388 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/impl/AComponentImpl.java @@ -0,0 +1,73 @@ +/* + * 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.vtest.javaapi.apis.conversation.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.conversation.AComponent; +import org.apache.tuscany.sca.vtest.javaapi.apis.conversation.BComponent; +import org.junit.Assert; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.Conversation; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.ConversationID; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AComponent.class) +@Scope("CONVERSATION") +public class AComponentImpl implements AComponent { + + protected ComponentContext componentContext; + + @Reference + protected CallableReference bReference; + + @ConversationID + protected String cid; + + public String getName() { + return "ComponentA"; + } + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + public void testConversation() { + ServiceReference bSR = componentContext.getServiceReference(BComponent.class, "bReference"); + bSR.setConversationID("AConversationID"); + bSR.getService().testCustomConversationID(); + + Conversation bc = bSR.getConversation(); + Assert.assertEquals("AConversationID", bc.getConversationID()); + bc.end(); + + Assert.assertEquals("ComponentB", bReference.getService().getName()); + bReference.getService().testGeneratedConversationID(bReference.getConversation().getConversationID()); + bReference.getConversation().end(); + + Assert.assertEquals(1, BComponentImpl.customInitCount); + Assert.assertEquals(1, BComponentImpl.customDestroyCount); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/impl/BComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/impl/BComponentImpl.java new file mode 100644 index 0000000000..c487559ca1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/impl/BComponentImpl.java @@ -0,0 +1,78 @@ +/* + * 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.vtest.javaapi.apis.conversation.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.conversation.BComponent; +import org.junit.Assert; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.ConversationID; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Init; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BComponent.class) +@Scope("CONVERSATION") +public class BComponentImpl implements BComponent { + + public static int customInitCount = 0; + public static int customDestroyCount = 0; + + protected ComponentContext componentContext; + + @ConversationID + protected String cid; + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + public String getName() { + return "ComponentB"; + } + + public void testCustomConversationID() { + Assert.assertEquals("AConversationID", cid); + } + + public void testGeneratedConversationID(Object id) { + Assert.assertEquals(id.toString(), cid); + } + + public void endsConversation() { + } + + @Init + public void initB() { + if (cid.equals("AConversationID")) { + customInitCount++; + } + } + + @Destroy + public void destroyB() { + if (cid.equals("AConversationID")) { + customDestroyCount++; + } + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/resources/conversation.composite b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/resources/conversation.composite new file mode 100644 index 0000000000..87cab2f479 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/main/resources/conversation.composite @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/ConversationTestCase.java b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/ConversationTestCase.java new file mode 100644 index 0000000000..9b46ac5e08 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/conversation/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/conversation/ConversationTestCase.java @@ -0,0 +1,70 @@ +/* + * 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.vtest.javaapi.apis.conversation; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * This test class tests the Conversation interface described in 1.7.5 of the + * SCA Java Annotations & APIs Specification 1.0. + */ +public class ConversationTestCase { + + protected static String compositeName = "conversation.composite"; + protected static AComponent a; + protected static BComponent b; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + a = ServiceFinder.getService(AComponent.class, "AComponent"); + b = ServiceFinder.getService(BComponent.class, "BComponent"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } + + /** + * Lines 941, 942
    + * getConversationID() – Returns the identifier for this conversation. If a + * user-defined identity had been supplied for this reference then its value + * will be returned; otherwise the identity generated by the system when the + * conversation was initiated will be returned.
    + * end() – Ends this conversation. + * + * @throws Exception + */ + @Test + public void testConversation() throws Exception { + a.testConversation(); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/pom.xml b/sca-java-2.x/contrib/vtest/java-api/apis/exception/pom.xml new file mode 100644 index 0000000000..ef6e5182ee --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/pom.xml @@ -0,0 +1,45 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-apis + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-apis-exception + Apache Tuscany SCA Java APIs and Annotations Verification Tests - APIs - Exception + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/AComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/AComponent.java new file mode 100644 index 0000000000..90582e88a2 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/AComponent.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.javaapi.apis.exception; + +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Service A. + */ +@Conversational +public interface AComponent { + + public String getName(); + + public void testConversation(); + public void testCallBack(); + + public boolean testServiceRuntimeException(); + public boolean testServiceUnavailableException(); + + public boolean testCheckedException(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/BCallback.java b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/BCallback.java new file mode 100644 index 0000000000..c1c1c6544c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/BCallback.java @@ -0,0 +1,26 @@ +/* + * 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.vtest.javaapi.apis.exception; + +public interface BCallback { + + public void processResults(String result); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/BComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/BComponent.java new file mode 100644 index 0000000000..11886277ad --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/BComponent.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.vtest.javaapi.apis.exception; + +import org.oasisopen.sca.annotation.Callback; + +/** + * Simple Service B. + */ +@Callback(BCallback.class) +public interface BComponent { + + public String getName(); + + public void testCallback(); + public void testRedirectedCallback(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/CComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/CComponent.java new file mode 100644 index 0000000000..466a32731a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/CComponent.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.vtest.javaapi.apis.exception; + +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Service C. + */ +@Conversational +public interface CComponent { + + public String getName(); + + public void testConversation(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/DComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/DComponent.java new file mode 100644 index 0000000000..c0aed7a707 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/DComponent.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.vtest.javaapi.apis.exception; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remote Service D. + */ +@Remotable +public interface DComponent { + + public String getName(); + public void testException() throws DException; + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/DException.java b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/DException.java new file mode 100644 index 0000000000..82873ed96d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/DException.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.vtest.javaapi.apis.exception; + +public class DException extends Exception { + + private static final long serialVersionUID = -3819913841563109423L; + + public DException(String message) { + super(message); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/AComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/AComponentImpl.java new file mode 100644 index 0000000000..1190e6900f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/AComponentImpl.java @@ -0,0 +1,128 @@ +/* + * 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.vtest.javaapi.apis.exception.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.exception.AComponent; +import org.apache.tuscany.sca.vtest.javaapi.apis.exception.BComponent; +import org.apache.tuscany.sca.vtest.javaapi.apis.exception.CComponent; +import org.apache.tuscany.sca.vtest.javaapi.apis.exception.DComponent; +import org.apache.tuscany.sca.vtest.javaapi.apis.exception.DException; +import org.junit.Assert; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.ConversationEndedException; +import org.oasisopen.sca.NoRegisteredCallbackException; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.ServiceRuntimeException; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.ConversationID; +import org.oasisopen.sca.annotation.Destroy; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AComponent.class) +@Scope("CONVERSATION") +public class AComponentImpl implements AComponent { + + protected ComponentContext componentContext; + + @Reference + protected CallableReference bReference; + + @Reference + protected ServiceReference cReference; + + @Reference + protected ServiceReference dReference; + + @ConversationID + protected String cid; + + public String getName() { + return "ComponentA"; + } + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + public void testConversation() { + ServiceReference cSR = componentContext.getServiceReference(CComponent.class, "cReference"); + cSR.setConversationID("AConversationID"); + Assert.assertEquals("ComponentC", cSR.getService().getName()); + + try { + Thread.sleep(1100); + cSR.getService().testConversation(); + + Assert.fail(); + } catch (InterruptedException ie) { + ie.printStackTrace(); + } catch (ConversationEndedException cee) { + // Expected + } + } + + public void testCallBack() { + ServiceReference bSR = componentContext.getServiceReference(BComponent.class, "bReference"); + bSR.setCallbackID("ComponentACallBack"); + + try { + bSR.getService().testCallback(); + Assert.fail(); + } catch (NoRegisteredCallbackException e) { + // Expected + } + } + + public boolean testServiceRuntimeException() { + try { + componentContext.getServiceReference(BComponent.class, "dummyBReference").getService().getName(); + } catch (ServiceRuntimeException sre) { + return true; + } + + return false; + } + + public boolean testServiceUnavailableException() { + return false; + } + + public boolean testCheckedException() { + try { + dReference.getService().testException(); + } catch (DException e) { + if (e.getMessage().equals("ADException")) { + return true; + } + } + + return false; + } + + @Destroy + public void destroy() { + System.out.println("This is a Destroy of AComponent .."); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/BComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/BComponentImpl.java new file mode 100644 index 0000000000..eca4b54109 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/BComponentImpl.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.vtest.javaapi.apis.exception.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.exception.BCallback; +import org.apache.tuscany.sca.vtest.javaapi.apis.exception.BComponent; +import org.junit.Assert; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Service; + +@Service(BComponent.class) +public class BComponentImpl implements BComponent { + + protected ComponentContext componentContext; + + @Callback + protected BCallback callback; + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + public String getName() { + return "ComponentB"; + } + + public void testCallback() { + callback = componentContext.getRequestContext().getCallback(); + callback.processResults("CallBackFromB"); + + CallableReference bCR = componentContext.getRequestContext().getCallbackReference(); + Assert.assertEquals("ComponentACallBack", bCR.getCallbackID()); + } + + public void testRedirectedCallback() { + callback = componentContext.getRequestContext().getCallback(); + callback.processResults("RedirectedCallBackFromB"); + + CallableReference bCR = componentContext.getRequestContext().getCallbackReference(); + Assert.assertEquals("RedirectedCallBack", bCR.getCallbackID()); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/CComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/CComponentImpl.java new file mode 100644 index 0000000000..57a34716e6 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/CComponentImpl.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.vtest.javaapi.apis.exception.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.exception.CComponent; +import org.junit.Assert; +import org.oasisopen.sca.RequestContext; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.ConversationAttributes; +import org.oasisopen.sca.annotation.ConversationID; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(CComponent.class) +@Scope("CONVERSATION") +@ConversationAttributes(maxIdleTime="1 seconds") +public class CComponentImpl implements CComponent { + + @Context + protected RequestContext requestContext; + + @ConversationID + protected String cid; + + public String getName() { + return "ComponentC"; + } + + public void testConversation() { + Assert.assertEquals("AConversationID", cid); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/DComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/DComponentImpl.java new file mode 100644 index 0000000000..c1f5a56a9a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/impl/DComponentImpl.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.vtest.javaapi.apis.exception.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.exception.DComponent; +import org.apache.tuscany.sca.vtest.javaapi.apis.exception.DException; +import org.oasisopen.sca.annotation.Service; + +@Service(DComponent.class) +public class DComponentImpl implements DComponent { + + public String getName() { + return "ComponentD"; + } + + public void testException() throws DException { + throw new DException("ADException"); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/resources/exception.composite b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/resources/exception.composite new file mode 100644 index 0000000000..5bd933ce96 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/main/resources/exception.composite @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/ExceptionTestCase.java b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/ExceptionTestCase.java new file mode 100644 index 0000000000..da7b1da0fa --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/exception/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/exception/ExceptionTestCase.java @@ -0,0 +1,132 @@ +/* + * 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.vtest.javaapi.apis.exception; + +import org.apache.tuscany.sca.host.embedded.SCADomain; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * This test class tests the Exceptions described in 1.7.6, 1.7.7, 1.7.8, and 1.7.9 of the SCA Java Annotations & APIs Specification 1.0. + * This also covers 1.5 of the specification. + */ +public class ExceptionTestCase { + + protected static SCADomain domain; + protected static String compositeName = "exception.composite"; + protected static AComponent a; + protected static BComponent b; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + domain = SCADomain.newInstance(compositeName); + a = domain.getService(AComponent.class, "AComponent"); + b = domain.getService(BComponent.class, "BComponent"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + if (domain != null) { + domain.close(); + } + } + + /** + * Lines 951
    + * NoRegisteredCallbackException. + * + * @throws Exception + */ + @Test + public void testNoRegisteredCallbackException() throws Exception { + a.testCallBack(); + } + + /** + * Lines 960
    + * ServiceRuntimeException - This exception signals problems in the management of SCA component execution. + * + * @throws Exception + */ + @Test + public void testServiceRuntimeException() throws Exception { + Assert.assertTrue(a.testServiceRuntimeException()); + } + + /** + * Lines 970
    + * ServiceUnavailableException – This exception signals problems in the interaction with remote services. + * + * @throws Exception + */ + @Test + //@Ignore + public void testServiceUnavailableException() throws Exception { + domain.getComponentManager().stopComponent("AComponent"); + + try { + a.getName(); + } catch (Exception e) { + e.printStackTrace(); + } + + try { + AComponent ac = domain.getService(AComponent.class, "AComponent"); + ac.getName(); + } catch (Exception e) { + e.printStackTrace(); + } + + domain.getComponentManager().startComponent("AComponent"); + } + + /** + * Lines 983
    + * ConversationEndedException. + * + * @throws Exception + */ + @Test + public void testConversationEndedException() throws Exception { + a.testConversation(); + } + + /** + * Lines 360-361
    + * Business exceptions are thrown by the implementation of the called service method, + * and are defined as checked exceptions on the interface that types the service. + * + * @throws Exception + */ + @Test + public void testCheckedException() throws Exception { + Assert.assertTrue(a.testCheckedException()); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/pom.xml b/sca-java-2.x/contrib/vtest/java-api/apis/pom.xml new file mode 100644 index 0000000000..164c67ebbb --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/pom.xml @@ -0,0 +1,64 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-java-api + 2.0-SNAPSHOT + ../pom.xml + + java-api-apis + pom + + Apache Tuscany SCA Java APIs and Annotations Verification Tests - APIs + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + + + default + + true + + + componentcontext + requestcontext + callablereference + servicereference + conversation + exception + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/pom.xml b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/pom.xml new file mode 100644 index 0000000000..d849fad4fe --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/pom.xml @@ -0,0 +1,45 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-apis + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-apis-requestcontext + Apache Tuscany SCA Java APIs and Annotations Verification Tests - APIs - RequestContext + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/AComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/AComponent.java new file mode 100644 index 0000000000..6fec5cada3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/AComponent.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.vtest.javaapi.apis.requestcontext; + +/** + * Simple Service A. + */ +public interface AComponent { + + public String getName(); + + public boolean isJAASSubject(); + public String getServiceName(); + public String getCallbackResult(); + public String getServiceReferenceName(); + public String getCallbackServiceReferenceName(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/BCallback.java b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/BCallback.java new file mode 100644 index 0000000000..4dd2088f90 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/BCallback.java @@ -0,0 +1,27 @@ +/* + * 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.vtest.javaapi.apis.requestcontext; + +public interface BCallback { + + public String getCallbackName(); + public void processResults(String result); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/BComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/BComponent.java new file mode 100644 index 0000000000..d913e95a53 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/BComponent.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.vtest.javaapi.apis.requestcontext; + +import org.oasisopen.sca.annotation.Callback; + +/** + * Simple Service B. + */ +@Callback(BCallback.class) +public interface BComponent { + + public String getName(); + + public void testCallback(); + public String getServiceReferenceName(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/impl/AComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/impl/AComponentImpl.java new file mode 100644 index 0000000000..5d3cbf6e3d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/impl/AComponentImpl.java @@ -0,0 +1,102 @@ +/* + * 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.vtest.javaapi.apis.requestcontext.impl; + +import javax.security.auth.Subject; + +import org.apache.tuscany.sca.vtest.javaapi.apis.requestcontext.AComponent; +import org.apache.tuscany.sca.vtest.javaapi.apis.requestcontext.BCallback; +import org.apache.tuscany.sca.vtest.javaapi.apis.requestcontext.BComponent; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(AComponent.class) +public class AComponentImpl implements AComponent, BCallback { + + private static Object monitor = new Object(); + private static String returnMessage = null; + private static CallableReference cbCR; + + protected ComponentContext componentContext; + + @Reference + protected BComponent bReference; + + public String getName() { + return "ComponentA"; + } + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + public boolean isJAASSubject() { + return componentContext.getRequestContext().getSecuritySubject() instanceof Subject; + } + + public String getServiceName() { + return componentContext.getRequestContext().getServiceName(); + } + + public String getCallbackResult() { + ServiceReference bSR = componentContext.getServiceReference(BComponent.class, "bReference"); + String cbID = "ComponentACallBack"; + bSR.setCallbackID(cbID); + bSR.getService().testCallback(); + + // Wait for 30s max. + int count = 0; + synchronized(monitor) { + while (returnMessage == null && count++ < 30) { + try { + monitor.wait(1000L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + return returnMessage; + } + + public void processResults(String result) { + returnMessage = result; + cbCR = componentContext.getRequestContext().getServiceReference(); + } + + public String getServiceReferenceName() { + CallableReference aCR = componentContext.getRequestContext().getServiceReference(); + return aCR.getService().getName(); + } + + public String getCallbackServiceReferenceName() { + return cbCR.getService().getCallbackName(); + } + + public String getCallbackName() { + return "CallBackB"; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/impl/BComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/impl/BComponentImpl.java new file mode 100644 index 0000000000..d358736daa --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/impl/BComponentImpl.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.vtest.javaapi.apis.requestcontext.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.requestcontext.BCallback; +import org.apache.tuscany.sca.vtest.javaapi.apis.requestcontext.BComponent; +import org.junit.Assert; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Service; + +@Service(BComponent.class) +public class BComponentImpl implements BComponent { + + protected ComponentContext componentContext; + + @Callback + protected BCallback callback; + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + public String getName() { + return "ComponentB"; + } + + public void testCallback() { + callback = componentContext.getRequestContext().getCallback(); + callback.processResults("CallBackFromB"); + + CallableReference bCR = componentContext.getRequestContext().getCallbackReference(); + Assert.assertEquals("ComponentACallBack", bCR.getCallbackID()); + } + + public String getServiceReferenceName() { + CallableReference bCR = componentContext.getRequestContext().getServiceReference(); + return bCR.getService().getName(); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/resources/requestcontext.composite b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/resources/requestcontext.composite new file mode 100644 index 0000000000..4aa5eeb25a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/main/resources/requestcontext.composite @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/RequestContextTestCase.java b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/RequestContextTestCase.java new file mode 100644 index 0000000000..e3b761bd37 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/requestcontext/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/requestcontext/RequestContextTestCase.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.vtest.javaapi.apis.requestcontext; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * This test class tests the RequestContext interface described in 1.7.2 of the + * SCA Java Annotations & APIs Specification 1.0. + */ +public class RequestContextTestCase { + + protected static String compositeName = "requestcontext.composite"; + protected static AComponent a; + protected static BComponent b; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + a = ServiceFinder.getService(AComponent.class, "AComponent"); + b = ServiceFinder.getService(BComponent.class, "BComponent"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } + + /** + * Lines 858
    + * getSecuritySubject() – Returns the JAAS Subject of the current request. + * + * @throws Exception + */ + @Ignore("TUSCANY-2608") + public void testGetSecuritySubject() throws Exception { + Assert.assertTrue(a.isJAASSubject()); + } + + /** + * Lines 860
    + * getServiceName() – Returns the name of the service on the Java + * implementation the request came in on. + * + * @throws Exception + */ + @Test + public void testGetServiceName() throws Exception { + Assert.assertEquals("AComponent", a.getServiceName()); + } + + /** + * Lines 861, 862
    + * getCallbackReference() – Returns a callable reference to the callback as + * specified by the caller. getCallback() – Returns a proxy for the callback + * as specified by the caller. + * + * @throws Exception + */ + @Test + public void testGetCallback() throws Exception { + Assert.assertEquals("CallBackFromB", a.getCallbackResult()); + } + + /** + * Lines 863
    + * getServiceReference() – When invoked during the execution of a service + * operation, this API MUST return a CallableReference that represents the + * service. When invoked during the execution of a callback operation, this + * API MUST return a CallableReference that represents the callback service. + * + * @throws Exception + */ + @Test + public void testGetServiceReference() throws Exception { + Assert.assertEquals("ComponentA", a.getServiceReferenceName()); + Assert.assertEquals("ComponentB", b.getServiceReferenceName()); + Assert.assertEquals("CallBackB", a.getCallbackServiceReferenceName()); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/pom.xml b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/pom.xml new file mode 100644 index 0000000000..1ad6a9c2ec --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/pom.xml @@ -0,0 +1,45 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-apis + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-apis-servicereference + Apache Tuscany SCA Java APIs and Annotations Verification Tests - APIs - ServiceReference + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/AComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/AComponent.java new file mode 100644 index 0000000000..6de5d6810e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/AComponent.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.vtest.javaapi.apis.servicereference; + +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Service A. + */ +@Conversational +public interface AComponent { + + public String getName(); + + public void testConversationID(); + public String getCallbackResult(); + public void redirectCallback(); + public void testGetCallback(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/BCallback.java b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/BCallback.java new file mode 100644 index 0000000000..f8c5c1272f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/BCallback.java @@ -0,0 +1,26 @@ +/* + * 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.vtest.javaapi.apis.servicereference; + +public interface BCallback { + + public void processResults(String result); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/BComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/BComponent.java new file mode 100644 index 0000000000..65a444d100 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/BComponent.java @@ -0,0 +1,38 @@ +/* + * 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.vtest.javaapi.apis.servicereference; + +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Service B. + */ +@Conversational +@Callback(BCallback.class) +public interface BComponent { + + public String getName(); + + public void testCallback(); + public void testConversationID(); + public void testRedirectedCallback(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/CComponent.java b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/CComponent.java new file mode 100644 index 0000000000..28c90e2071 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/CComponent.java @@ -0,0 +1,27 @@ +/* + * 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.vtest.javaapi.apis.servicereference; + +/** + * Simple Service C. + */ +public interface CComponent extends BCallback { + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/AComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/AComponentImpl.java new file mode 100644 index 0000000000..86dc80a4e1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/AComponentImpl.java @@ -0,0 +1,119 @@ +/* + * 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.vtest.javaapi.apis.servicereference.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.servicereference.AComponent; +import org.apache.tuscany.sca.vtest.javaapi.apis.servicereference.BCallback; +import org.apache.tuscany.sca.vtest.javaapi.apis.servicereference.BComponent; +import org.apache.tuscany.sca.vtest.javaapi.apis.servicereference.CComponent; +import org.junit.Assert; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.ConversationID; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AComponent.class) +@Scope("CONVERSATION") +public class AComponentImpl implements AComponent, BCallback { + + private static Object monitor = new Object(); + private static String returnMessage = null; + + protected ComponentContext componentContext; + + @Reference + protected CallableReference bReference; + + @Reference + protected ServiceReference cReference; + + @ConversationID + protected String cid; + + public String getName() { + return "ComponentA"; + } + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + public void testConversationID() { + ServiceReference bSR = componentContext.getServiceReference(BComponent.class, "bReference"); + bSR.setConversationID("AConversationID"); + bSR.getService().testConversationID(); + + Assert.assertEquals("AConversationID", bSR.getConversation().getConversationID()); + } + + public String getCallbackResult() { + ServiceReference bSR = componentContext.getServiceReference(BComponent.class, "bReference"); + String cbID = "ComponentACallBack"; + bSR.setCallbackID(cbID); + bSR.getService().testCallback(); + + // Wait for 30s max. + int count = 0; + synchronized(monitor) { + while (returnMessage == null && count++ < 30) { + try { + monitor.wait(1000L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + return returnMessage; + } + + public void processResults(String result) { + returnMessage = result; + } + + public void redirectCallback() { + ServiceReference bSR = componentContext.getServiceReference(BComponent.class, "bReference"); + bSR.setCallbackID("RedirectedCallBack"); + bSR.setCallback(cReference); + bSR.getService().testRedirectedCallback(); + } + + public void testGetCallback() { + ServiceReference bSR = componentContext.getServiceReference(BComponent.class, "bReference"); + bSR.setCallback(cReference); + Assert.assertEquals(cReference, bSR.getCallback()); + + TestObject aCallback = new TestObject(); + bSR.setCallback(aCallback); + Assert.assertEquals(aCallback, bSR.getCallback()); + Assert.assertEquals(1, ((TestObject) bSR.getCallback()).getId()); + + TestObject bCallback = new TestObject(); + bSR.setCallback(bCallback); + Assert.assertEquals(bCallback, bSR.getCallback()); + Assert.assertEquals(2, ((TestObject) bSR.getCallback()).getId()); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/BComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/BComponentImpl.java new file mode 100644 index 0000000000..c5af80291e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/BComponentImpl.java @@ -0,0 +1,74 @@ +/* + * 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.vtest.javaapi.apis.servicereference.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.servicereference.BCallback; +import org.apache.tuscany.sca.vtest.javaapi.apis.servicereference.BComponent; +import org.junit.Assert; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.ConversationID; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BComponent.class) +@Scope("CONVERSATION") +public class BComponentImpl implements BComponent { + + protected ComponentContext componentContext; + + @Callback + protected BCallback callback; + + @ConversationID + protected String cid; + + @Context + public void setComponentContext(ComponentContext context) { + this.componentContext = context; + } + + public String getName() { + return "ComponentB"; + } + + public void testCallback() { + callback = componentContext.getRequestContext().getCallback(); + callback.processResults("CallBackFromB"); + + CallableReference bCR = componentContext.getRequestContext().getCallbackReference(); + Assert.assertEquals("ComponentACallBack", bCR.getCallbackID()); + } + + public void testConversationID() { + Assert.assertEquals("AConversationID", cid); + } + + public void testRedirectedCallback() { + callback = componentContext.getRequestContext().getCallback(); + callback.processResults("RedirectedCallBackFromB"); + + CallableReference bCR = componentContext.getRequestContext().getCallbackReference(); + Assert.assertEquals("RedirectedCallBack", bCR.getCallbackID()); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/CComponentImpl.java b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/CComponentImpl.java new file mode 100644 index 0000000000..563d3ceab6 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/CComponentImpl.java @@ -0,0 +1,38 @@ +/* + * 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.vtest.javaapi.apis.servicereference.impl; + +import org.apache.tuscany.sca.vtest.javaapi.apis.servicereference.CComponent; +import org.junit.Assert; +import org.oasisopen.sca.RequestContext; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Service; + +@Service(CComponent.class) +public class CComponentImpl implements CComponent { + + @Context + protected RequestContext requestContext; + + public void processResults(String result) { + Assert.assertEquals("RedirectedCallBackFromB", result); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/TestObject.java b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/TestObject.java new file mode 100644 index 0000000000..ba3edf13ae --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/impl/TestObject.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.vtest.javaapi.apis.servicereference.impl; + +public class TestObject { + + public static int count = 0; + + private int id; + + public TestObject() { + count++; + id = count; + } + + public int getId() { + return id; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/resources/servicereference.composite b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/resources/servicereference.composite new file mode 100644 index 0000000000..9bded61947 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/main/resources/servicereference.composite @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/ServiceReferenceTestCase.java b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/ServiceReferenceTestCase.java new file mode 100644 index 0000000000..fda917d60a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/apis/servicereference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/servicereference/ServiceReferenceTestCase.java @@ -0,0 +1,106 @@ +/* + * 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.vtest.javaapi.apis.servicereference; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * This test class tests the ServiceReference interface described in 1.7.4 of + * the SCA Java Annotations & APIs Specification 1.0. + */ +public class ServiceReferenceTestCase { + + protected static String compositeName = "servicereference.composite"; + protected static AComponent a; + protected static BComponent b; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + a = ServiceFinder.getService(AComponent.class, "AComponent"); + b = ServiceFinder.getService(BComponent.class, "BComponent"); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } + + /** + * Lines 915-916
    + * getConversationID() - Returns the id supplied by the user that will be + * associated with conversations initiated through this reference.
    + * setConversationID(Object conversationId) – Set the id to associate with + * any conversation started through this reference. If the value supplied is + * null then the id will be generated by the implementation. Throws an + * IllegalStateException if a conversation is currently associated with this + * reference. + * + * @throws Exception + */ + @Test + public void testConversationID() throws Exception { + a.testConversationID(); + } + + /** + * Lines 917
    + * setCallbackID(Object callbackID) – Sets the callback ID. + * + * @throws Exception + */ + @Test + public void testSetCallbackID() throws Exception { + Assert.assertEquals("CallBackFromB", a.getCallbackResult()); + } + + /** + * Lines 918
    + * getCallback() – Returns the callback object. + * + * @throws Exception + */ + @Test + public void testGetCallback() throws Exception { + a.testGetCallback(); + } + + /** + * Lines 919
    + * setCallback(Object callback) – Sets the callback object. + * + * @throws Exception + */ + @Test + public void testSetCallback() throws Exception { + a.redirectCallback(); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/pom.xml b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/pom.xml new file mode 100644 index 0000000000..656ee9c3cd --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-conversation-callback + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Conversation - Callback + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/AService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/AService.java new file mode 100644 index 0000000000..e78736d4df --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/AService.java @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.conversation.callback; + +/** + * Simple Service + */ +public interface AService { + + public void testCallback(); + + public void testCallback2(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/AServiceCallback.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/AServiceCallback.java new file mode 100644 index 0000000000..f4271d0d92 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/AServiceCallback.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.vtest.javaapi.conversation.callback; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +@Conversational +public interface AServiceCallback { + + public void callBack(String someState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/BService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/BService.java new file mode 100644 index 0000000000..d7ecbb7427 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/BService.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.javaapi.conversation.callback; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AServiceCallback; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +@Conversational +@Callback(AServiceCallback.class) +public interface BService { + + public void setState(String someState); + + public String getState(); + + public void testCallBack(String string); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/BServiceCallback.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/BServiceCallback.java new file mode 100644 index 0000000000..be7ea97eac --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/BServiceCallback.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.vtest.javaapi.conversation.callback; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +@Conversational +public interface BServiceCallback { + + public void callBack(String someState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/CService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/CService.java new file mode 100644 index 0000000000..19a8b86f28 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/CService.java @@ -0,0 +1,39 @@ +/* + * 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.vtest.javaapi.conversation.callback; + +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +@Conversational +@Callback(BServiceCallback.class) +public interface CService { + + public void setState(String someState); + + public String getState(); + + public void testCallBack(String string); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/Utilities.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/Utilities.java new file mode 100644 index 0000000000..15672f9ee0 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/Utilities.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.vtest.javaapi.conversation.callback; + +public class Utilities { + + public static void delayQuarterSecond() { + try { + Thread.sleep(250);// millisecs + } catch (InterruptedException ex) { + throw new Error(ex); + } + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/AServiceCallback.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/AServiceCallback.java new file mode 100644 index 0000000000..31479f1848 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/AServiceCallback.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.vtest.javaapi.conversation.callback.accessing; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +@Conversational +public interface AServiceCallback { + + public void callBack(String someState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/BService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/BService.java new file mode 100644 index 0000000000..b6359f348b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/BService.java @@ -0,0 +1,41 @@ +/* + * 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.vtest.javaapi.conversation.callback.accessing; + +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +@Conversational +@Callback(AServiceCallback.class) +public interface BService { + + public void setState(String someState); + + public String getState(); + + public void testCallBack(String string); + + public void testCallBack2(String string); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/impl/AServiceImpl.java new file mode 100644 index 0000000000..9e8b64e3b9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/impl/AServiceImpl.java @@ -0,0 +1,67 @@ +/* + * 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.vtest.javaapi.conversation.callback.accessing.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.Utilities; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.accessing.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.accessing.BService; +import org.junit.Assert; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +@Scope("CONVERSATION") +public class AServiceImpl implements AService, AServiceCallback { + + @Reference + protected ServiceReference b; + + private String someState; + + public void callBack(String someState) { + System.out.println("A-callback called with this state => " + someState); + this.someState = someState; + } + + public void testCallback() { + b.getService().testCallBack("Some string"); + int count = 4; + while (someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (someState == null) + Assert.fail("Callback not received by this instance"); + } + + public void testCallback2() { + b.getService().testCallBack2("Some string"); + int count = 4; + while (someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (someState == null) + Assert.fail("Callback not received by this instance"); + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/impl/BServiceImpl.java new file mode 100644 index 0000000000..acf262512e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/accessing/impl/BServiceImpl.java @@ -0,0 +1,60 @@ +/* + * 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.vtest.javaapi.conversation.callback.accessing.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.accessing.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.accessing.BService; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +public class BServiceImpl implements BService { + + String someState; + + @Callback + protected CallableReference callback; + + @Context + protected ComponentContext componentContext; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void testCallBack(String someState) { + callback.getService().callBack(someState); + } + + public void testCallBack2(String someState) { + AServiceCallback callback = componentContext.getRequestContext().getCallback(); + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/AServiceCallback.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/AServiceCallback.java new file mode 100644 index 0000000000..b1439770da --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/AServiceCallback.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.vtest.javaapi.conversation.callback.custom; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +@Conversational +public interface AServiceCallback { + + public void callBack(String someState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/BService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/BService.java new file mode 100644 index 0000000000..dae4152333 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/BService.java @@ -0,0 +1,38 @@ +/* + * 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.vtest.javaapi.conversation.callback.custom; + +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +@Conversational +@Callback(AServiceCallback.class) +public interface BService { + + public void setState(String someState); + + public String getState(); + + public void testCallBack(String string); +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/CustomCallback.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/CustomCallback.java new file mode 100644 index 0000000000..d1a30fd305 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/CustomCallback.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.vtest.javaapi.conversation.callback.custom; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +@Conversational +public interface CustomCallback { + + public void someMethod(); + + public void callBack(String someState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/impl/AServiceImpl.java new file mode 100644 index 0000000000..7732b3865f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/impl/AServiceImpl.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.vtest.javaapi.conversation.callback.custom.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.Utilities; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.custom.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.custom.CustomCallback; +import org.junit.Assert; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +@Scope("CONVERSATION") +public class AServiceImpl implements AService { + + @Reference + protected ServiceReference b; + + @Reference + protected CustomCallback customCallback; + + protected static String someState; + + public void testCallback() { + b.setCallback(customCallback); + b.getService().testCallBack("Some string"); + int count = 4; + while (someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (someState == null) + Assert.fail("Callback not received by this instance"); + } + + public void testCallback2() { + Assert.fail("Should never get here"); + + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/impl/BServiceImpl.java new file mode 100644 index 0000000000..9bda00413b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/impl/BServiceImpl.java @@ -0,0 +1,49 @@ +/* + * 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.vtest.javaapi.conversation.callback.custom.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.custom.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.custom.BService; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +public class BServiceImpl implements BService { + + String someState; + + @Callback + protected AServiceCallback callback; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void testCallBack(String someState) { + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/impl/CustomCallbackImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/impl/CustomCallbackImpl.java new file mode 100644 index 0000000000..1bbc1fa4eb --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/custom/impl/CustomCallbackImpl.java @@ -0,0 +1,38 @@ +/* + * 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.vtest.javaapi.conversation.callback.custom.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.custom.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.custom.CustomCallback; +import org.oasisopen.sca.annotation.Scope; + +@Scope("CONVERSATION") +public class CustomCallbackImpl implements CustomCallback, AServiceCallback { + + public void someMethod() { + System.out.println("Custom-callback some method called"); + } + + public void callBack(String someState) { + System.out.println("Custom-callback called with this state => " + someState); + AServiceImpl.someState = someState; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/AServiceCallback.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/AServiceCallback.java new file mode 100644 index 0000000000..6a66e73569 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/AServiceCallback.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.vtest.javaapi.conversation.callback.id; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +@Conversational +public interface AServiceCallback { + + public void callBack(String someState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/BService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/BService.java new file mode 100644 index 0000000000..24dbad3d4a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/BService.java @@ -0,0 +1,41 @@ +/* + * 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.vtest.javaapi.conversation.callback.id; + +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +@Conversational +@Callback(AServiceCallback.class) +public interface BService { + + public void setState(String someState); + + public String getState(); + + public void testCallBack(String string); + + public void testCallBack2(String string); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/impl/AServiceImpl.java new file mode 100644 index 0000000000..b9785fa657 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/impl/AServiceImpl.java @@ -0,0 +1,73 @@ +/* + * 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.vtest.javaapi.conversation.callback.id.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.Utilities; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.id.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.id.BService; +import org.junit.Assert; +import org.oasisopen.sca.RequestContext; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +@Scope("CONVERSATION") +public class AServiceImpl implements AService, AServiceCallback { + + @Reference + protected ServiceReference b; + + @Context + protected RequestContext requestContext; + + private String someState; + + public void callBack(String someState) { + System.out.println("A-callback called with this state => " + someState); + Assert.assertNotNull(requestContext.getServiceReference().getCallbackID()); + this.someState = someState; + } + + public void testCallback() { + b.getService().testCallBack("Some string"); + int count = 4; + while (someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (someState == null) + Assert.fail("Callback not received by this instance"); + } + + public void testCallback2() { + b.getService().testCallBack2("Some string"); + int count = 4; + while (someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (someState == null) + Assert.fail("Callback not received by this instance"); + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/impl/BServiceImpl.java new file mode 100644 index 0000000000..dc546a81a0 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/id/impl/BServiceImpl.java @@ -0,0 +1,60 @@ +/* + * 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.vtest.javaapi.conversation.callback.id.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.id.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.id.BService; +import org.oasisopen.sca.CallableReference; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +public class BServiceImpl implements BService { + + String someState; + + @Callback + protected CallableReference callback; + + @Context + protected ComponentContext componentContext; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void testCallBack(String someState) { + callback.getService().callBack(someState); + } + + public void testCallBack2(String someState) { + AServiceCallback callback = componentContext.getRequestContext().getCallback(); + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/impl/AServiceImpl.java new file mode 100644 index 0000000000..01260c67f1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/impl/AServiceImpl.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.vtest.javaapi.conversation.callback.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.Utilities; +import org.junit.Assert; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +@Scope("CONVERSATION") +public class AServiceImpl implements AService, AServiceCallback { + + @Reference + protected ServiceReference b; + + private String someState; + + public void callBack(String someState) { + System.out.println("A-callback called with this state => " + someState); + this.someState = someState; + } + + public void testCallback() { + b.getService().testCallBack("Some string"); + int count = 4; + while (someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (someState == null) + Assert.fail("Callback not received by this instance"); + } + + public void testCallback2() { + Assert.fail("Should not be called"); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/impl/BServiceImpl.java new file mode 100644 index 0000000000..78dfe7221f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/impl/BServiceImpl.java @@ -0,0 +1,73 @@ +/* + * 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.vtest.javaapi.conversation.callback.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.BServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.CService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.Utilities; +import org.junit.Assert; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +public class BServiceImpl implements BService, BServiceCallback { + + String someState; + + @Callback + protected AServiceCallback callback; + + @Reference + protected ServiceReference c; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void callBack(String someState) { + System.out.println("B-callback called with this state => " + someState); + this.someState = someState; + } + + public void testCallBack(String someState) { + + c.getService().testCallBack(someState); + int count = 4; + while (this.someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (this.someState == null) + Assert.fail("Callback not received by this instance"); + + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/impl/CServiceImpl.java new file mode 100644 index 0000000000..6120b815d5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/impl/CServiceImpl.java @@ -0,0 +1,49 @@ +/* + * 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.vtest.javaapi.conversation.callback.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.BServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.CService; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +@Scope("CONVERSATION") +public class CServiceImpl implements CService { + + String someState; + + @Callback + protected BServiceCallback callback; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void testCallBack(String someState) { + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/AServiceCallback.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/AServiceCallback.java new file mode 100644 index 0000000000..50feee41d6 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/AServiceCallback.java @@ -0,0 +1,31 @@ +/* + * 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.vtest.javaapi.conversation.callback.local; + +import org.oasisopen.sca.annotation.Conversational; + +/** + * + */ +@Conversational +public interface AServiceCallback { + + public void callBack(String someState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/BService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/BService.java new file mode 100644 index 0000000000..67dd77ce7b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/BService.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.vtest.javaapi.conversation.callback.local; + +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Local Service + */ +@Conversational +@Callback(AServiceCallback.class) +public interface BService { + + public void setState(String someState); + + public String getState(); + + public void testCallBack(String string); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/BServiceCallback.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/BServiceCallback.java new file mode 100644 index 0000000000..fd19c8d7b1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/BServiceCallback.java @@ -0,0 +1,31 @@ +/* + * 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.vtest.javaapi.conversation.callback.local; + +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Service + */ +@Conversational +public interface BServiceCallback { + + public void callBack(String someState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/CService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/CService.java new file mode 100644 index 0000000000..c3b2e04ff2 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/CService.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.vtest.javaapi.conversation.callback.local; + +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Service + */ +@Conversational +@Callback(BServiceCallback.class) +public interface CService { + + public void setState(String someState); + + public String getState(); + + public void testCallBack(String string); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/impl/AServiceImpl.java new file mode 100644 index 0000000000..0298b39825 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/impl/AServiceImpl.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.vtest.javaapi.conversation.callback.local.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.Utilities; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.local.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.local.BService; +import org.junit.Assert; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +@Scope("CONVERSATION") +public class AServiceImpl implements AService, AServiceCallback { + + @Reference + protected ServiceReference b; + + private String someState; + + public void callBack(String someState) { + System.out.println("A-callback called with this state => " + someState); + this.someState = someState; + } + + public void testCallback() { + b.getService().testCallBack("Some local string"); + int count = 4; + while (someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (someState == null) + Assert.fail("Callback not received by this instance"); + } + + public void testCallback2() { + Assert.fail("Not implemented"); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/impl/BServiceImpl.java new file mode 100644 index 0000000000..4374306609 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/impl/BServiceImpl.java @@ -0,0 +1,73 @@ +/* + * 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.vtest.javaapi.conversation.callback.local.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.Utilities; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.local.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.local.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.local.BServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.local.CService; +import org.junit.Assert; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +public class BServiceImpl implements BService, BServiceCallback { + + String someState; + + @Callback + protected AServiceCallback callback; + + @Reference + protected ServiceReference c; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void callBack(String someState) { + System.out.println("B-callback called with this state => " + someState); + this.someState = someState; + } + + public void testCallBack(String someState) { + + c.getService().testCallBack(someState); + int count = 4; + while (this.someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (this.someState == null) + Assert.fail("Callback not received by this instance"); + + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/impl/CServiceImpl.java new file mode 100644 index 0000000000..d487c94fd3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/local/impl/CServiceImpl.java @@ -0,0 +1,49 @@ +/* + * 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.vtest.javaapi.conversation.callback.local.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.local.BServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.local.CService; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +@Scope("CONVERSATION") +public class CServiceImpl implements CService { + + String someState; + + @Callback + protected BServiceCallback callback; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void testCallBack(String someState) { + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/mixed/CService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/mixed/CService.java new file mode 100644 index 0000000000..164397bf6b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/mixed/CService.java @@ -0,0 +1,38 @@ +/* + * 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.vtest.javaapi.conversation.callback.mixed; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.BServiceCallback; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; + +/** + * Simple Service + */ +@Conversational +@Callback(BServiceCallback.class) +public interface CService { + + public void setState(String someState); + + public String getState(); + + public void testCallBack(String string); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/mixed/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/mixed/impl/BServiceImpl.java new file mode 100644 index 0000000000..d71c89d565 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/mixed/impl/BServiceImpl.java @@ -0,0 +1,73 @@ +/* + * 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.vtest.javaapi.conversation.callback.mixed.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.BServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.mixed.CService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.Utilities; +import org.junit.Assert; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +public class BServiceImpl implements BService, BServiceCallback { + + String someState; + + @Callback + protected AServiceCallback callback; + + @Reference + protected ServiceReference c; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void callBack(String someState) { + System.out.println("B-callback called with this state => " + someState); + this.someState = someState; + } + + public void testCallBack(String someState) { + + c.getService().testCallBack(someState); + int count = 4; + while (this.someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (this.someState == null) + Assert.fail("Callback not received by this instance"); + + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/mixed/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/mixed/impl/CServiceImpl.java new file mode 100644 index 0000000000..5dcaf9c06f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/mixed/impl/CServiceImpl.java @@ -0,0 +1,49 @@ +/* + * 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.vtest.javaapi.conversation.callback.mixed.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.BServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.mixed.CService; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +@Scope("CONVERSATION") +public class CServiceImpl implements CService { + + String someState; + + @Callback + protected BServiceCallback callback; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void testCallBack(String someState) { + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/AServiceCallback.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/AServiceCallback.java new file mode 100644 index 0000000000..4b2ee3a838 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/AServiceCallback.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.vtest.javaapi.conversation.callback.multi; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +@Conversational +public interface AServiceCallback { + + public void callBack(String someState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/AServiceCallback2.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/AServiceCallback2.java new file mode 100644 index 0000000000..88059ccb45 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/AServiceCallback2.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.vtest.javaapi.conversation.callback.multi; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +@Conversational +public interface AServiceCallback2 { + + public void callBack2(String someState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/BService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/BService.java new file mode 100644 index 0000000000..691dc80632 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/BService.java @@ -0,0 +1,39 @@ +/* + * 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.vtest.javaapi.conversation.callback.multi; + +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +@Conversational +@Callback(AServiceCallback.class) +public interface BService { + + public void setState(String someState); + + public String getState(); + + public void testCallBack(String string); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/BService2.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/BService2.java new file mode 100644 index 0000000000..7c691efa8d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/BService2.java @@ -0,0 +1,39 @@ +/* + * 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.vtest.javaapi.conversation.callback.multi; + +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +@Conversational +@Callback(AServiceCallback2.class) +public interface BService2 { + + public void setState(String someState); + + public String getState(); + + public void testCallBack2(String string); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/impl/AServiceImpl.java new file mode 100644 index 0000000000..272484a6f0 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/impl/AServiceImpl.java @@ -0,0 +1,79 @@ +/* + * 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.vtest.javaapi.conversation.callback.multi.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.Utilities; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.multi.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.multi.AServiceCallback2; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.multi.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.multi.BService2; +import org.junit.Assert; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +@Scope("CONVERSATION") +public class AServiceImpl implements AService, AServiceCallback , AServiceCallback2 { + + @Reference + protected ServiceReference b; + + @Reference + protected ServiceReference b2; + + + private String someState; + private String someState2; + + public void callBack(String someState) { + System.out.println("A-callback called with this state => " + someState); + this.someState = someState; + } + + public void callBack2(String someState) { + System.out.println("A-callback2 called with this state => " + someState); + this.someState2 = someState; + } + + public void testCallback() { + b.getService().testCallBack("Some string"); + int count = 4; + while (someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (someState == null) + Assert.fail("Callback not received by this instance"); + } + + public void testCallback2() { + b2.getService().testCallBack2("Some string"); + int count = 4; + while (someState2 == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (someState2 == null) + Assert.fail("Callback not received by this instance"); + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/impl/BServiceImpl.java new file mode 100644 index 0000000000..d9c4866466 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/multi/impl/BServiceImpl.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.vtest.javaapi.conversation.callback.multi.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.multi.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.multi.AServiceCallback2; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.multi.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.multi.BService2; +import org.junit.Assert; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(interfaces= {BService.class,BService2.class}) +@Scope("CONVERSATION") +public class BServiceImpl implements BService, BService2 { + + String someState; + + @Callback + protected AServiceCallback callback; + + @Callback + protected AServiceCallback2 callback2; + + @Callback + protected AServiceCallback2 callback3; + + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void testCallBack(String someState) { + callback.callBack(someState); + } + + public void testCallBack2(String someState) { + Assert.assertNotNull(callback3); //Spec lines 670,671 + callback2.callBack2(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/BServiceCallback.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/BServiceCallback.java new file mode 100644 index 0000000000..1c2d20ff94 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/BServiceCallback.java @@ -0,0 +1,31 @@ +/* + * 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.vtest.javaapi.conversation.callback.stateless; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +public interface BServiceCallback { + + public void callBack(String someState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/CService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/CService.java new file mode 100644 index 0000000000..5dd429077d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/CService.java @@ -0,0 +1,39 @@ +/* + * 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.vtest.javaapi.conversation.callback.stateless; + +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service + */ +@Remotable +@Conversational +@Callback(BServiceCallback.class) +public interface CService { + + public void setState(String someState); + + public String getState(); + + public void testCallBack(String string); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/BServiceImpl.java new file mode 100644 index 0000000000..b263eb869b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/BServiceImpl.java @@ -0,0 +1,73 @@ +/* + * 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.vtest.javaapi.conversation.callback.stateless.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.stateless.BServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.CService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.Utilities; +import org.junit.Assert; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +public class BServiceImpl implements BService, BServiceCallback { + + String someState; + + @Callback + protected AServiceCallback callback; + + @Reference + protected ServiceReference c; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void callBack(String someState) { + System.out.println("B-callback called with this state => " + someState); + this.someState = someState; + } + + public void testCallBack(String someState) { + + c.getService().testCallBack(someState); + int count = 4; + while (this.someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (this.someState != null) + Assert.fail("Callback should NOT have been received by this instance"); + + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/BServiceImpl2.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/BServiceImpl2.java new file mode 100644 index 0000000000..4f08ac7a1b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/BServiceImpl2.java @@ -0,0 +1,81 @@ +/* + * 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.vtest.javaapi.conversation.callback.stateless.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.stateless.BServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.CService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.Utilities; +import org.junit.Assert; +import org.oasisopen.sca.RequestContext; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +public class BServiceImpl2 implements BService, BServiceCallback { + + String someState; + + @Context + protected RequestContext rc; + + @Callback + protected AServiceCallback callback; + + @Reference + protected ServiceReference c; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void callBack(String someState) { + System.out.println("B-callback called with this state => " + someState); + this.someState = someState; + Assert.assertSame("1234", rc.getServiceReference().getCallbackID()); + } + + public void testCallBack(String someState) { + + c.setCallbackID("1234"); + + c.getService().testCallBack(someState); + int count = 4; + while (this.someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (this.someState != null) + Assert.fail("Callback should NOT have been received by this instance"); + + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/BServiceImpl3.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/BServiceImpl3.java new file mode 100644 index 0000000000..11c896a06d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/BServiceImpl3.java @@ -0,0 +1,74 @@ +/* + * 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.vtest.javaapi.conversation.callback.stateless.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.stateless.BServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.CService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.Utilities; +import org.junit.Assert; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +public class BServiceImpl3 implements BService, BServiceCallback { + + String someState; + + @Callback + protected AServiceCallback callback; + + @Reference + protected ServiceReference c; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void callBack(String someState) { + System.out.println("B-callback called with this state => " + someState); + this.someState = someState; + Assert.assertSame(null, callback); + } + + public void testCallBack(String someState) { + + c.getService().testCallBack(someState); + int count = 4; + while (this.someState == null && count > 0) { + Utilities.delayQuarterSecond(); + count--; + } + if (this.someState != null) + Assert.fail("Callback should NOT have been received by this instance"); + + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/CServiceImpl.java new file mode 100644 index 0000000000..00984ae565 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/stateless/impl/CServiceImpl.java @@ -0,0 +1,49 @@ +/* + * 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.vtest.javaapi.conversation.callback.stateless.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.stateless.BServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.callback.stateless.CService; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +@Scope("CONVERSATION") +public class CServiceImpl implements CService { + + String someState; + + @Callback + protected BServiceCallback callback; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void testCallBack(String someState) { + callback.callBack(someState); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-accessing.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-accessing.composite new file mode 100644 index 0000000000..802c9c30db --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-accessing.composite @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-custom.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-custom.composite new file mode 100644 index 0000000000..e66ea5d537 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-custom.composite @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-id.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-id.composite new file mode 100644 index 0000000000..4d93d2279d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-id.composite @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-local.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-local.composite new file mode 100644 index 0000000000..cd8c589a59 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-local.composite @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-mixed.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-mixed.composite new file mode 100644 index 0000000000..d2d9956103 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-mixed.composite @@ -0,0 +1,40 @@ + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-multi.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-multi.composite new file mode 100644 index 0000000000..6c69330ce5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-multi.composite @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-stateless-callbackfieldnull.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-stateless-callbackfieldnull.composite new file mode 100644 index 0000000000..72c08e8344 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-stateless-callbackfieldnull.composite @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-stateless-callbackid.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-stateless-callbackid.composite new file mode 100644 index 0000000000..144f7f3d00 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-stateless-callbackid.composite @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-stateless.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-stateless.composite new file mode 100644 index 0000000000..ace06b245c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback-stateless.composite @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback.composite new file mode 100644 index 0000000000..4623f17ca2 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/main/resources/callback.composite @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/CallbackTestCase.java b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/CallbackTestCase.java new file mode 100644 index 0000000000..2680370c5b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/callback/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/callback/CallbackTestCase.java @@ -0,0 +1,377 @@ +/* + * 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.vtest.javaapi.conversation.callback; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.After; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.oasisopen.sca.ServiceRuntimeException; + +/** + * + */ +public class CallbackTestCase { + + protected static AService aService = null; + + @Before + public void init() throws Exception { + try { + System.out.println("Setting up"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @After + public void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } + + /** + * Lines 529-610 + *

    + * A callback service is a service that is used for asynchronous + * communication from a service provider back to its client in contrast to + * the communication through return values from synchronous operations. + * Callbacks are used by bidirectional services, which are services that + * have two interfaces: • an interface for the provided service • a callback + * interface that must be provided by the client + *

    + * Callbacks may be used for both remotable and local services. Either both + * interfaces of a bidirectional service must be remotable, or both must be + * local. It is illegal to mix the two. There are two basic forms of + * callbacks: stateless callbacks and stateful callbacks. A callback + * interface is declared by using the "@Callback" annotation on a remotable + * service interface, which takes the Java Class object of the interface as + * a parameter. The annotation may also be applied to a method or to a field + * of an implementation, which is used in order to have a callback injected, + * as explained in the next section. + *

    + * 1.6.7.1. Stateful Callbacks A stateful callback represents a specific + * implementation instance of the component that is the client of the + * service. The interface of a stateful callback should be marked as + * conversational. The following example interfaces define an interaction + * over stateful callback. + *

    + * An implementation of the service in this example could use the + * "@Callback" annotation to request that a stateful callback be injected. + * The following is a fragment of an implementation of the example service. + * In this example, the request is passed on to some other component, so + * that the example service acts essentially as an intermediary. Because the + * service is conversation scoped, the callback will still be available when + * the backend service sends back its asynchronous response. + *

    + * This fragment must come from an implementation that offers two services, + * one that it offers to it clients (MyService) and one that is used for + * receiving callbacks from the back end (MyServiceCallback). The client of + * this service would also implement the methods defined in + * MyServiceCallback. + *

    + * Stateful callbacks support some of the same use cases as are supported by + * the ability to pass service references as parameters. The primary + * difference is that stateful callbacks do not require any additional + * parameters be passed with service operations. This can be a great + * convenience. If the service has many operations and any of those + * operations could be the first operation of the conversation, it would be + * unwieldy to have to take a callback parameter as part of every operation, + * just in case it is the first operation of the conversation. It is also + * more natural than requiring the application developers to invoke an + * explicit operation whose only purpose is to pass the callback object that + * should be used. + *

    + * This tests the *remote* bidirectional interfaces option + */ + @Test + public void statefulCallback() throws Exception { + System.out.println("Setting up for callback tests"); + ServiceFinder.init("callback.composite"); + aService = ServiceFinder.getService(AService.class, "AComponent"); + aService.testCallback(); + } + + /** + * Lines 529-610 + *

    + * A callback service is a service that is used for asynchronous + * communication from a service provider back to its client in contrast to + * the communication through return values from synchronous operations. + * Callbacks are used by bidirectional services, which are services that + * have two interfaces: • an interface for the provided service • a callback + * interface that must be provided by the client + *

    + * Callbacks may be used for both remotable and local services. Either both + * interfaces of a bidirectional service must be remotable, or both must be + * local. It is illegal to mix the two. There are two basic forms of + * callbacks: stateless callbacks and stateful callbacks. A callback + * interface is declared by using the "@Callback" annotation on a remotable + * service interface, which takes the Java Class object of the interface as + * a parameter. The annotation may also be applied to a method or to a field + * of an implementation, which is used in order to have a callback injected, + * as explained in the next section. + *

    + * 1.6.7.1. Stateful Callbacks A stateful callback represents a specific + * implementation instance of the component that is the client of the + * service. The interface of a stateful callback should be marked as + * conversational. The following example interfaces define an interaction + * over stateful callback. + *

    + * An implementation of the service in this example could use the + * "@Callback" annotation to request that a stateful callback be injected. + * The following is a fragment of an implementation of the example service. + * In this example, the request is passed on to some other component, so + * that the example service acts essentially as an intermediary. Because the + * service is conversation scoped, the callback will still be available when + * the backend service sends back its asynchronous response. + *

    + * This fragment must come from an implementation that offers two services, + * one that it offers to it clients (MyService) and one that is used for + * receiving callbacks from the back end (MyServiceCallback). The client of + * this service would also implement the methods defined in + * MyServiceCallback. + *

    + * Stateful callbacks support some of the same use cases as are supported by + * the ability to pass service references as parameters. The primary + * difference is that stateful callbacks do not require any additional + * parameters be passed with service operations. This can be a great + * convenience. If the service has many operations and any of those + * operations could be the first operation of the conversation, it would be + * unwieldy to have to take a callback parameter as part of every operation, + * just in case it is the first operation of the conversation. It is also + * more natural than requiring the application developers to invoke an + * explicit operation whose only purpose is to pass the callback object that + * should be used. + *

    + * This tests the *local* bidirectional interfaces option + */ + @Test + public void localstatefulCallback() throws Exception { + System.out.println("Setting up for local callback tests"); + ServiceFinder.init("callback-local.composite"); + aService = ServiceFinder.getService(AService.class, "AComponent"); + aService.testCallback(); + } + + /** + * Lines 534, 535 + *

    + * Callbacks may be used for both remotable and local services. Either both + * interfaces of a bidirectional service must be remotable, or both must be + * local. It is illegal to mix the two. + *

    + * In this test configuration BServiceCallback is remotable and CService is + * not + */ + @Test(expected = ServiceRuntimeException.class) + @Ignore("TUSCANY-2291") + public void statefulMixedCallback() throws Exception { + System.out.println("Setting up for mixed local/remote callback tests"); + ServiceFinder.init("callback-mixed.composite"); + aService = ServiceFinder.getService(AService.class, "AComponent"); + aService.testCallback(); + } + + /** + * Lines 613-615 + *

    + * A stateless callback interface is a callback whose interface is not + * marked as conversational. Unlike stateless services, the client of that + * uses stateless callbacks will not have callback methods routed to an + * instance of the client that contains any state that is relevant to the + * conversation. + *

    + * This test is identical in structure to the stateful test except that + * BServiceCallback is not conversational and we test that the callback is + * NOT routed to the same instance. + */ + @Test + public void statelessCallback() throws Exception { + System.out.println("Setting up for stateless callback tests"); + ServiceFinder.init("callback-stateless.composite"); + aService = ServiceFinder.getService(AService.class, "AComponent"); + aService.testCallback(); + } + + /** + * Lines 616-621 + *

    + * The only information that the client has to work with (other than the + * parameters of the callback method) is a callback ID object that is passed + * with requests to the service and is guaranteed to be returned with any + * callback. + *

    + * The following is a repeat of the client code fragment above, but with the + * assumption that in this case the MyServiceCallback is stateless. The + * client in this case needs to set the callback ID before invoking the + * service and then needs to get the callback ID when the response is + * received. + *

    + * Lines 747-755 + *

    + * The identity that is used to identify a callback request is, by default, + * generated by the system. However, it is possible to provide an + * application specified identity that should be used to identify the + * callback by calling the ServiceReference.setCallbackID() method. This can + * be used even either stateful or stateless callbacks. The identity will be + * sent to the service provider, and the binding must guarantee that the + * service provider will send the ID back when any callback method is + * invoked. The callback identity has the same restrictions as the + * conversation ID. It should either be a string or an object that can be + * serialized into XML. Bindings determine the particular mechanisms to use + * for transmission of the identity and these may lead to further + * restrictions when using a given binding. + *

    + * TODO - Need to add explicit test back to stateful for 747-755 + */ + @Test + public void statelessCallback2() throws Exception { + System.out.println("Setting up for stateless callback id tests"); + ServiceFinder.init("callback-stateless-callbackid.composite"); + aService = ServiceFinder.getService(AService.class, "AComponent"); + aService.testCallback(); + + } + + /** + * Lines 650-654 + *

    + * The difference for stateless services is that the callback field would + * not be available if the component is servicing a request for anything + * other than the original client. So, the technique used in the previous + * section, where there was a response from the backend Service which was + * forwarded as a callback from MyService would not work because the + * callback field would be null when the message from the backend system was + * received. + *

    + */ + @Test + public void statelessCallback3() throws Exception { + System.out.println("Setting up for stateless callback ref null tests"); + ServiceFinder.init("callback-stateless-callbackfieldnull.composite"); + aService = ServiceFinder.getService(AService.class, "AComponent"); + aService.testCallback(); + + } + + /** + * Lines 658-669 + *

    + * Since it is possible for a single implementation class to implement + * multiple services, it is also possible for callbacks to be defined for + * each of the services that it implements. The service implementation can + * include an injected field for each of its callbacks. The runtime injects + * the callback onto the appropriate field based on the type of the + * callback. The following shows the declaration of two fields, each of + * which corresponds to a particular service offered by the implementation. + *

    + * Lines 670,671 + *

    + * If a single callback has a type that is compatible with multiple declared + * callback fields, then all of them will be set. + */ + @Test + public void statefulMultiBidirectional() throws Exception { + System.out.println("Setting up for multi-bidirectional interfaces tests"); + ServiceFinder.init("callback-multi.composite"); + aService = ServiceFinder.getService(AService.class, "AComponent"); + aService.testCallback(); + aService.testCallback2(); // Includes test for 670,671 + + } + + /** + * Lines 675-706 + *

    + * In addition to injecting a reference to a callback service, it is also + * possible to obtain a reference to a Callback instance by annotating a + * field or method with the "@Callback" annotation. A reference implementing + * the callback service interface may be obtained using + * CallableReference.getService(). The following fragments come from a + * service implementation that uses the callback API: + *

    + * Alternatively a callback may be retrieved programmatically using the + * RequestContext API. The snippet below show how to retrieve a callback in + * a method programmatically: + *

    + * Lines 695, 696 + *

    + * Alternatively a callback may be retrieved programmatically using the + * RequestContext API. The snippet below show how to retrieve a callback in + * a method programmatically: + */ + @Test + public void accessingCallbacks() throws Exception { + System.out.println("Setting up for callback accessing tests"); + ServiceFinder.init("callback-accessing.composite"); + aService = ServiceFinder.getService(AService.class, "AComponent"); + aService.testCallback(); + aService.testCallback2(); // Lines 695-696 + + } + + /** + * Lines 708-724 + *

    + * On the client side, the service that implements the callback can access + * the callback ID (i.e. reference parameters) that was returned with the + * callback operation also by accessing the request context, as follows: + *

    + * On the client side, the object returned by the getServiceReference() + * method represents the service reference that was used to send the + * original request. The object returned by getCallbackID() represents the + * identity associated with the callback, which may be a single String or + * may be an object (as described below in “Customizing the Callback + * Identity”). + */ + @Test + public void callbackId() throws Exception { + System.out.println("Setting up for callback id tests"); + ServiceFinder.init("callback-id.composite"); + aService = ServiceFinder.getService(AService.class, "AComponent"); + aService.testCallback(); + + } + + /** + * Lines 728-732 + *

    + * By default, the client component of a service is assumed to be the + * callback service for the bidirectional service. However, it is possible + * to change the callback by using the ServiceReference.setCallback() + * method. The object passed as the callback should implement the interface + * defined for the callback, including any additional SCA semantics on that + * interface such as its scope and whether or not it is remotable. + *

    + * TODO - Need to complete testing of 1.6.7.5 after resolution of t-2312 + */ + @Test + public void customCallback() throws Exception { + System.out.println("Setting up for custom callback tests; create domain instance"); + ServiceFinder.init("callback-custom.composite"); + System.out.println("Setting up for custom callback tests; get AService handle"); + aService = ServiceFinder.getService(AService.class, "AComponent"); + aService.testCallback(); + + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/id/pom.xml b/sca-java-2.x/contrib/vtest/java-api/conversation/id/pom.xml new file mode 100644 index 0000000000..68bfdc7fe1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/id/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-conversation-id + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Conversation - ID + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/AService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/AService.java new file mode 100644 index 0000000000..39719539ba --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/AService.java @@ -0,0 +1,39 @@ +/* + * 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.vtest.javaapi.conversation.id; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +public interface AService { + + public void testAnnotation(); + + public void testAnnotation2(); + + public void testAnnotation3(); + + public void testAnnotation4(); + + public void testAnnotation5(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/BService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/BService.java new file mode 100644 index 0000000000..b5911101b8 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/BService.java @@ -0,0 +1,41 @@ +/* + * 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.vtest.javaapi.conversation.id; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Local Service + */ +@Remotable +@Conversational +public interface BService { + + public void setState(String someState); + + public String getState(); + + public void testAnnotation(); + + public void testAnnotation2(); + + public void testAnnotation3(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/CService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/CService.java new file mode 100644 index 0000000000..1730f863b5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/CService.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.vtest.javaapi.conversation.id; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Local Service + */ +@Remotable +@Conversational +public interface CService { + + public void setState(String someState); + + public String getState(); + + public void testAnnotation(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/CustomConversationId.java b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/CustomConversationId.java new file mode 100644 index 0000000000..ac40c56ee6 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/CustomConversationId.java @@ -0,0 +1,54 @@ +/* + * 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.vtest.javaapi.conversation.id; + + +public class CustomConversationId { + + int id; + String name; + + public CustomConversationId(int id, String name) { + super(); + this.id = id; + this.name = name; + } + + public String getName() { + return name; + } + + public int getNumber() { + return id; + } + + public void setName(String someName) { + name = someName; + } + + public void setNumber(int someInt) { + id = someInt; + } + + public String toString() { + return "id->" + id + " name->" + name; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/impl/AServiceImpl.java new file mode 100644 index 0000000000..bac842dfca --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/impl/AServiceImpl.java @@ -0,0 +1,69 @@ +/* + * 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.vtest.javaapi.conversation.id.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.id.AService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.id.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.id.CService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.id.CustomConversationId; +import org.junit.Assert; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +@Scope("CONVERSATION") +public class AServiceImpl implements AService { + + @Reference + protected ServiceReference b; + + @Reference + protected ServiceReference c; + + public void testAnnotation() { + b.getService().testAnnotation(); + } + + public void testAnnotation2() { + b.getService().testAnnotation2(); + } + + public void testAnnotation3() { + b.getService().testAnnotation3(); + } + + public void testAnnotation4() { + CustomConversationId id = new CustomConversationId (1, "One"); + c.setConversationID(id); + c.getService().testAnnotation(); + } + + public void testAnnotation5() { + b.getService().getState(); + Assert.assertNotNull(b.getConversation().getConversationID()); +// Assert.assertNotNull(b.getConversationID()); + + CustomConversationId id = new CustomConversationId (1, "One"); + c.setConversationID(id); + Assert.assertSame(id, c.getConversationID()); + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/impl/BServiceImpl.java new file mode 100644 index 0000000000..3c4eea4bc9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/impl/BServiceImpl.java @@ -0,0 +1,65 @@ +/* + * 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.vtest.javaapi.conversation.id.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.id.BService; +import org.junit.Assert; +import org.oasisopen.sca.annotation.ConversationAttributes; +import org.oasisopen.sca.annotation.ConversationID; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +@ConversationAttributes(maxAge = "1 seconds") +public class BServiceImpl implements BService { + + String someState; + + @ConversationID + protected String conversationID; + + @ConversationID + protected Object conversationID2; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void testAnnotation() { + Assert.assertNotNull(conversationID); + System.out.println(conversationID); + } + + public void testAnnotation2() { + Assert.assertNotNull(conversationID2); + System.out.println(conversationID); + } + + public void testAnnotation3() { + Assert.assertTrue(conversationID2 instanceof String); + System.out.println(conversationID); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/impl/CServiceImpl.java new file mode 100644 index 0000000000..1e5a459954 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/impl/CServiceImpl.java @@ -0,0 +1,56 @@ +/* + * 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.vtest.javaapi.conversation.id.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.id.CService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.id.CustomConversationId; +import org.junit.Assert; +import org.oasisopen.sca.annotation.ConversationID; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +@Scope("CONVERSATION") +public class CServiceImpl implements CService { + + String someState; + + @ConversationID + protected Object conversationID; + + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void testAnnotation() { + Assert.assertNotNull(conversationID); + Assert.assertTrue(conversationID instanceof CustomConversationId); + + Assert.assertSame(1, ((CustomConversationId)conversationID).getNumber()); + Assert.assertSame("One", ((CustomConversationId)conversationID).getName()); + System.out.println(conversationID); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/resources/conversation-id.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/resources/conversation-id.composite new file mode 100644 index 0000000000..25e7154fca --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/main/resources/conversation-id.composite @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/ConversationIDTestCase.java b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/ConversationIDTestCase.java new file mode 100644 index 0000000000..d3cb107a61 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/id/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/id/ConversationIDTestCase.java @@ -0,0 +1,118 @@ +/* + * 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.vtest.javaapi.conversation.id; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * + */ +public class ConversationIDTestCase { + + protected static String compositeName = "conversation-id.composite"; + protected static AService aService = null; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + aService = ServiceFinder.getService(AService.class, "AComponent"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + + } + + /** + * Lines 504, 505 + *

    + * If a protected or public field or setter method is annotated with + * "@ConversationID", then the conversation ID for the conversation is + * injected onto the field + */ + @Test + public void idAnnotation() throws Exception { + aService.testAnnotation(); + } + + /** + * Lines 505 + *

    + * The type of the field is not necessarily String + */ + @Test + public void idAnnotation2() throws Exception { + aService.testAnnotation2(); + } + + /** + * Lines 505, 506 + *

    + * System generated conversation IDs are always strings + */ + @Test + public void idAnnotation3() throws Exception { + aService.testAnnotation3(); + } + + /** + * Lines 506, 507 + *

    + * ... but application generated conversation IDs may be other complex + * types. + *

    + * Lines 513, 514 + *

    + * ... To do this, the client would not use reference injection, but would + * use the of ServiceReference.setConversationID() API. + */ + @Test + public void idAnnotation4() throws Exception { + aService.testAnnotation4(); + } + + /** + * Lines 522, 523 + *

    + * Whether the conversation ID is chosen by the client or is generated by + * the system, the client may access the conversation ID by calling + * ServiceReference.getConversationID(). + *

    + * This test is following updates to this section of the specification per + * the OASIS TC under issue JAVA-31. The updated text reads: "...by calling + * getConversationID() on the current conversation object". + */ + @Test + public void idAnnotation5() throws Exception { + aService.testAnnotation5(); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/pom.xml b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/pom.xml new file mode 100644 index 0000000000..1d4a2d3c4e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-conversation-lifetime + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Conversation - Lifetime + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/AService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/AService.java new file mode 100644 index 0000000000..f5249b3a5b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/AService.java @@ -0,0 +1,56 @@ +/* + * 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.vtest.javaapi.conversation.lifetime; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +public interface AService { + + public void testConversationStarted(); + + public void testConversationStarted2(); + + public void testConversationContinue(); + + public void testConversationContinue2(); + + public void testConversationContinue3(); + + public void testConversationEnd(); + + public void testConversationEnd2(); + + public void testConversationEnd3(); + + public void testConversationEnd4(); + + public void testConversationEnd5(); + + public void testConversationEnd6(); + + public void testConversationEnd7(); + + public void testConversationEnd8(); + + public void testConversationEnd9(); +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/AServiceCallback.java b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/AServiceCallback.java new file mode 100644 index 0000000000..635e6e74d4 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/AServiceCallback.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.vtest.javaapi.conversation.lifetime; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.EndsConversation; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Remotable Service + */ +@Remotable +@Conversational +public interface AServiceCallback { + + @EndsConversation + public void endConversation(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/BService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/BService.java new file mode 100644 index 0000000000..b28a31da38 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/BService.java @@ -0,0 +1,47 @@ +/* + * 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.vtest.javaapi.conversation.lifetime; + +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.EndsConversation; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Local Service + */ +@Remotable +@Conversational +@Callback(AServiceCallback.class) +public interface BService { + + public void setState(String someState); + + public String getState(); + + @EndsConversation + public void endConversation(); + + public void endConversationViaCallback(); + + public void throwNonBusinessException(); + + public void throwBusinessException() throws BServiceBusinessException; + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/BServiceBusinessException.java b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/BServiceBusinessException.java new file mode 100644 index 0000000000..ab186ee7eb --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/BServiceBusinessException.java @@ -0,0 +1,53 @@ +/* + * 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.vtest.javaapi.conversation.lifetime; + + +/** + * Denotes an error starting the runtime + * + * @version $Rev$ $Date$ + */ +public class BServiceBusinessException extends Exception { + + static final long serialVersionUID = 2096658015909178325L; + + private String message; + + public BServiceBusinessException() { + } + + public BServiceBusinessException(String message) { + super(message); + setMessage(message); + } + + public BServiceBusinessException(Throwable cause) { + super(cause); + setMessage(cause.getMessage()); + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/CService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/CService.java new file mode 100644 index 0000000000..020d18b862 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/CService.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.vtest.javaapi.conversation.lifetime; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Local Service + */ +@Remotable +@Conversational +public interface CService { + + public void setState(String someState); + public String getState(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/DService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/DService.java new file mode 100644 index 0000000000..c339ebd6ea --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/DService.java @@ -0,0 +1,38 @@ +/* + * 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.vtest.javaapi.conversation.lifetime; + +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Local Service + */ +@Remotable +@Conversational +public interface DService { + + public void setState(String someState); + public String getState(); + + public void continueConversation(ServiceReference b, Object convId); + public void continueConversation2(String filename, Object id, String serializedState); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/AServiceImpl.java new file mode 100644 index 0000000000..18d592f9d0 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/AServiceImpl.java @@ -0,0 +1,197 @@ +/* + * 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.vtest.javaapi.conversation.lifetime.impl; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectOutputStream; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.lifetime.AService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.lifetime.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.lifetime.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.lifetime.BServiceBusinessException; +import org.apache.tuscany.sca.vtest.javaapi.conversation.lifetime.CService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.lifetime.DService; +import org.junit.Assert; +import org.oasisopen.sca.ComponentContext; +import org.oasisopen.sca.ConversationEndedException; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Context; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +@Scope("CONVERSATION") +public class AServiceImpl implements AService, AServiceCallback { + + @Context + public ComponentContext context; + + @Reference + protected ServiceReference b; + + @Reference + protected DService d; + + public void testConversationStarted() { + b.getService().setState("Some state"); + Assert.assertNotNull(b.getConversation().getConversationID()); + } + + public void testConversationStarted2() { + ServiceReference ref = context.getServiceReference(BService.class, "b"); + ref.getService().setState("Some state"); + Assert.assertNotNull(ref.getConversation().getConversationID()); + } + + public void testConversationContinue() { + + b.getService().setState("Some state"); + Object id = b.getConversation().getConversationID(); + b.getService().setState("Some more state"); + Assert.assertEquals(id, b.getConversation().getConversationID()); + } + + public void testConversationContinue2() { + + b.getService().setState("Some state"); + d.continueConversation(b, b.getConversation().getConversationID()); + + } + + public void testConversationContinue3() { + + String serializedState = "Serialized State"; + + String filename = "target/Serialized-Reference.txt"; + b.getService().setState(serializedState); + Object id = b.getConversation().getConversationID(); + writeReference(b, filename); + d.continueConversation2(filename, id, serializedState); + + } + + // Utilities + + private void delayForSeconds(int numSeconds) { + try { + Thread.sleep(numSeconds * 1000);// millisecs + } catch (InterruptedException ex) { + throw new Error(ex); + } + } + + private void writeReference(ServiceReference ref, String filename) { + + FileOutputStream fos = null; + ObjectOutputStream out = null; + try { + fos = new FileOutputStream(filename); + out = new ObjectOutputStream(fos); + out.writeObject(ref); + out.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + public void testConversationEnd() { + String someState = "Some state"; + b.getService().setState(someState); + b.getService().endConversation(); + Assert.assertNotSame(someState, b.getService().getState()); + } + + public void testConversationEnd2() { + String someState = "Some state"; + b.getService().setState(someState); + b.getService().endConversationViaCallback(); + Assert.assertNotSame(someState, b.getService().getState()); + } + + public void endConversation() { + System.out.println("A-callback to end conversation"); + } + + public void testConversationEnd3() { + String someState = "Some state"; + b.getService().setState(someState); + delayForSeconds(2); + try { + b.getService().getState(); + } catch (ConversationEndedException e) { + b.getConversation().end();// need to clean up to avoid exception + } + Assert.assertNotSame(someState, b.getService().getState()); + } + + public void testConversationEnd4() { + String someState = "Some state"; + b.getService().setState(someState); + b.getConversation().end(); + Assert.assertNotSame(someState, b.getService().getState()); + } + + public void testConversationEnd5() { + String someState = "Some state"; + b.getService().setState(someState); + try { + b.getService().throwNonBusinessException(); + } catch (Error e) { + // Expected + } + Assert.assertNotSame(someState, b.getService().getState()); + } + + public void testConversationEnd6() { + String someState = "Some state"; + b.getService().setState(someState); + Object id = b.getConversation().getConversationID(); + b.getService().endConversation(); + Assert.assertNotSame(someState, b.getService().getState()); + Assert.assertNotSame(id, b.getConversation().getConversationID()); + } + + public void testConversationEnd7() { + b.getService().setState("Some state"); + b.getService().endConversation(); + Assert.assertNull(b.getConversationID()); + } + + public void testConversationEnd8() { + String someState = "Some state"; + b.getService().setState(someState); + delayForSeconds(2); + b.getService().getState(); + } + + public void testConversationEnd9() { + String someState = "Some state"; + b.getService().setState(someState); + try { + b.getService().throwBusinessException(); + } catch (BServiceBusinessException e) { + // Expected + } + Assert.assertSame(someState, b.getService().getState()); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/BServiceImpl.java new file mode 100644 index 0000000000..71e09c38b3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/BServiceImpl.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.vtest.javaapi.conversation.lifetime.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.lifetime.AServiceCallback; +import org.apache.tuscany.sca.vtest.javaapi.conversation.lifetime.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.lifetime.BServiceBusinessException; +import org.oasisopen.sca.annotation.Callback; +import org.oasisopen.sca.annotation.ConversationAttributes; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +@ConversationAttributes(maxAge="1 seconds") +public class BServiceImpl implements BService { + + String someState; + + @Callback + protected AServiceCallback callback; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void endConversation() { + System.out.println("Someone called Bservice.endsConversation()"); + } + + public void endConversationViaCallback() { + callback.endConversation(); + } + + public void throwNonBusinessException() { + throw new Error(); + } + + public void throwBusinessException() throws BServiceBusinessException { + throw new BServiceBusinessException("Business Exception"); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/CServiceImpl.java new file mode 100644 index 0000000000..e182613932 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/CServiceImpl.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.javaapi.conversation.lifetime.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.lifetime.CService; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +@Scope("CONVERSATION") +public class CServiceImpl implements CService { + + String someState; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/DServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/DServiceImpl.java new file mode 100644 index 0000000000..15a4ab3b76 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/impl/DServiceImpl.java @@ -0,0 +1,78 @@ +/* + * 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.vtest.javaapi.conversation.lifetime.impl; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.ObjectInputStream; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.lifetime.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.lifetime.DService; +import org.junit.Assert; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(DService.class) +@Scope("CONVERSATION") +public class DServiceImpl implements DService { + + String someState; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public void continueConversation(ServiceReference b, Object convId) { + + b.getService().setState("Some more state"); + Assert.assertEquals(convId, b.getConversation().getConversationID()); + } + + public void continueConversation2(String filename, Object convId, String serializedState) { + ServiceReference b = readReference(filename); + Assert.assertEquals(serializedState, b.getService().getState()); + Assert.assertEquals(convId, b.getConversation().getConversationID()); + } + + // Utilities + @SuppressWarnings("unchecked") + private ServiceReference readReference(String filename) { + ServiceReference b = null; + FileInputStream fis = null; + ObjectInputStream in = null; + try { + fis = new FileInputStream(filename); + in = new ObjectInputStream(fis); + ServiceReference readObject = (ServiceReference)in.readObject(); + b = readObject; + in.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } catch (ClassNotFoundException ex) { + ex.printStackTrace(); + } + return b; + } +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/resources/lifetime.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/resources/lifetime.composite new file mode 100644 index 0000000000..21ee8acac1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/main/resources/lifetime.composite @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/LifetimeTestCase.java b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/LifetimeTestCase.java new file mode 100644 index 0000000000..52c11b881c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/lifetime/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/lifetime/LifetimeTestCase.java @@ -0,0 +1,216 @@ +/* + * 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.vtest.javaapi.conversation.lifetime; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; +import org.oasisopen.sca.ConversationEndedException; + +/** + * + */ +public class LifetimeTestCase { + + protected static String compositeName = "lifetime.composite"; + protected static AService aService = null; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + aService = ServiceFinder.getService(AService.class, "AComponent"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + + } + + /** + * Lines 475, 476 + *

    + * Conversations start on the client side when one of the following occur: A + * "@Reference" to a conversational service is injected, ... and then a + * method of the service is called + */ + @Test + public void lifetime1() throws Exception { + aService.testConversationStarted(); + } + + /** + * Lines 477, 478, 479 + *

    + * Conversations start on the client side when one of the following occur + * ... A call is made to CompositeContext.getServiceReference and then a + * method of the service is called. + */ + @Test + //@Ignore("TUSCANY-2243") + public void lifetime2() throws Exception { + aService.testConversationStarted2(); + } + + /** + * Line 481, 482 + *

    + * The client can continue an existing conversation, by: Holding the service + * reference that was created when the conversation started + */ + @Test + public void lifetime3() throws Exception { + aService.testConversationContinue(); + } + + /** + * Line 481, 483 + *

    + * The client can continue an existing conversation, by: ... • Getting the + * service reference object passed as a parameter from another service, even + * remotely + */ + @Test + public void lifetime4() throws Exception { + // aService.testConversationContinue2(); + } + + /** + * Line 481, 484 + *

    + * The client can continue an existing conversation, by:
    • Loading a + * service reference that had been written to some form of persistent + * storage + */ + @Test + public void lifetime6() throws Exception { + aService.testConversationContinue3(); + } + + /** + * Line 487, 488 + *

    + * A conversation ends, and any state associated with the conversation is + * freed up, when:
    + * ...A server operation that has been annotated "@EndConveration" has been + * called + */ + @Test + public void lifetime7() throws Exception { + aService.testConversationEnd(); + } + + /** + * Line 487, 489 + *

    + * A conversation ends, and any state associated with the conversation is + * freed up, when:
    + * ...The server calls an "@EndsConversation" method on the "@Callback" + * reference
    + */ + @Test + public void lifetime8() throws Exception { + aService.testConversationEnd2(); + } + + /** + * Line 487, 490 + *

    + * 487 A conversation ends, and any state associated with the conversation + * is freed up, when:
    + * ... The server's conversation lifetime timeout occurs + */ + @Test + public void lifetime9() throws Exception { + aService.testConversationEnd3(); + } + + /** + * Line 487, 491 + *

    + * A conversation ends, and any state associated with the conversation is + * freed up, when:
    + * ...The client calls Conversation.end() + */ + @Test + public void lifetime10() throws Exception { + aService.testConversationEnd4(); + } + + /** + * Line 487, 492 + *

    + * A conversation ends, and any state associated with the conversation is + * freed up, when:
    + * ...Any non-business exception is thrown by a conversational operation + */ + @Test + //@Ignore("TUSCANY-2283") + public void lifetime11() throws Exception { + aService.testConversationEnd5(); + aService.testConversationEnd9(); + } + + /** + * Line 494, 495 + *

    + * If a method is invoked on a service reference after an + * "@EndsConversation" method has been called then a new conversation will + * automatically be started. + */ + @Test + public void lifetime12() throws Exception { + aService.testConversationEnd6(); + } + + /** + * Line 495, 496, 497 + *

    + * If ServiceReference.getConversationID() is called after the + * "@EndsConversation" method: is called, but before the next conversation + * has been started, it will return null. + */ + @Test + public void lifetime13() throws Exception { + aService.testConversationEnd7(); + } + + /** + * Line 498, 499 + *

    + * If a service reference is used after the service provider's conversation + * timeout has caused the conversation to be ended, then + * ConversationEndedException will be thrown. + */ + @Test(expected = ConversationEndedException.class) + public void lifetime14() throws Exception { + aService.testConversationEnd8(); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/pom.xml b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/pom.xml new file mode 100644 index 0000000000..dba54f0f4c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + java-api-annotations + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-conversation-parameters + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Conversation - Parameters + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/AService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/AService.java new file mode 100644 index 0000000000..bd19b504d9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/AService.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.javaapi.conversation.parameters; + +/** + * Simple Remotable Service + */ +public interface AService { + + public void setBStateThenGetCState(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/BService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/BService.java new file mode 100644 index 0000000000..c404b91673 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/BService.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.vtest.javaapi.conversation.parameters; + +import org.oasisopen.sca.annotation.Conversational; +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Local Service + */ +@Remotable +@Conversational +public interface BService { + + public void setState(String someState); + public String getState(); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/CService.java b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/CService.java new file mode 100644 index 0000000000..d9f32dcfea --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/CService.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.vtest.javaapi.conversation.parameters; + +import org.oasisopen.sca.ServiceReference; + +/** + * Simple Local Service + */ +public interface CService { + + public void setState(String someState); + public String getState(); + public Object continueConversation(ServiceReference bref); + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/impl/AServiceImpl.java new file mode 100644 index 0000000000..920d1294b3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/impl/AServiceImpl.java @@ -0,0 +1,47 @@ +/* + * 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.vtest.javaapi.conversation.parameters.impl; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.parameters.AService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.parameters.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.parameters.CService; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference + protected ServiceReference b; + + @Reference + protected CService c; + + public void setBStateThenGetCState() { + String someState = "set by A"; + b.getService().setState(someState); + Assert.assertEquals(someState, c.continueConversation(b)); + } + + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/impl/BServiceImpl.java new file mode 100644 index 0000000000..98cf59c084 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/impl/BServiceImpl.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.javaapi.conversation.parameters.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.parameters.BService; +import org.oasisopen.sca.annotation.Scope; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +@Scope("CONVERSATION") +public class BServiceImpl implements BService { + + String someState; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/impl/CServiceImpl.java new file mode 100644 index 0000000000..5f223dfcf0 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/impl/CServiceImpl.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.vtest.javaapi.conversation.parameters.impl; + +import org.apache.tuscany.sca.vtest.javaapi.conversation.parameters.BService; +import org.apache.tuscany.sca.vtest.javaapi.conversation.parameters.CService; +import org.oasisopen.sca.ServiceReference; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl implements CService { + + String someState; + + public void setState(String someState) { + this.someState = someState; + } + + public String getState() { + return someState; + } + + public String continueConversation(ServiceReference bref) { + return bref.getService().getState(); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/resources/parameters.composite b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/resources/parameters.composite new file mode 100644 index 0000000000..a8500dfb09 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/main/resources/parameters.composite @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/ConversationParametersTestCase.java b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/ConversationParametersTestCase.java new file mode 100644 index 0000000000..929fe06115 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/parameters/src/test/java/org/apache/tuscany/sca/vtest/javaapi/conversation/parameters/ConversationParametersTestCase.java @@ -0,0 +1,69 @@ +/* + * 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.vtest.javaapi.conversation.parameters; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * This test class tests the Service annotation described in section 1.2.1 and + * 1.8.17 + */ +public class ConversationParametersTestCase { + + protected static ServiceFinder serviceFinder; + protected static String compositeName = "parameters.composite"; + protected static AService aService = null; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + aService = ServiceFinder.getService(AService.class, "AComponent"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + @AfterClass + public static void destroy() throws Exception { + + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + + } + + /** + * Line 423, 424, 425:
    + *

    + * The service reference which represents a single conversation can be + * passed as a parameter to another service, even if that other service is + * remote. This may be used in order to allow one component to continue a + * conversation that had been started by another. + */ + @Test + public void passParameter1() throws Exception { + aService.setBStateThenGetCState(); + } + +} diff --git a/sca-java-2.x/contrib/vtest/java-api/conversation/pom.xml b/sca-java-2.x/contrib/vtest/java-api/conversation/pom.xml new file mode 100644 index 0000000000..08fa85c79d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/conversation/pom.xml @@ -0,0 +1,63 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-java-api + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api-conversation + pom + + Apache Tuscany SCA Java APIs and Annotations Verification Tests - Conversation + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + + + + default + + true + + + parameters + lifetime + id + callback + + + + diff --git a/sca-java-2.x/contrib/vtest/java-api/pom.xml b/sca-java-2.x/contrib/vtest/java-api/pom.xml new file mode 100644 index 0000000000..9b5e957b6e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/java-api/pom.xml @@ -0,0 +1,70 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-vtest + 2.0-SNAPSHOT + ../pom.xml + + vtest-java-api + pom + Apache Tuscany SCA Java APIs and Annotations Verification Tests + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + vtest-utilities + 2.0-SNAPSHOT + runtime + + + + + + + + default + + true + + + annotations + apis + conversation + + + + + diff --git a/sca-java-2.x/contrib/vtest/pom.xml b/sca-java-2.x/contrib/vtest/pom.xml new file mode 100644 index 0000000000..a49648244b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/pom.xml @@ -0,0 +1,56 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-sca + 2.0-SNAPSHOT + ../pom.xml + + tuscany-vtest + pom + Apache Tuscany SCA Specification Verification Tests + + + + junit + junit + 4.5 + compile + + + + + + default + + true + + + java-api + wsbinding + utilities + assembly + + + + + diff --git a/sca-java-2.x/contrib/vtest/processcomments.rb b/sca-java-2.x/contrib/vtest/processcomments.rb new file mode 100644 index 0000000000..b7a7fc1cc3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/processcomments.rb @@ -0,0 +1,198 @@ +=begin + +/* + * 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. + */ + +Scans java test source files, recursively from the current directory, +and produces a list of test metods sorted by specification line number. + +The implementation makes heavy use of my scant knowledge of regex. I'll +comeback and clean this up as time allows. + +Assumes a test comment convention like this: + + /** + * Lines 410,411,412,413: + *

    + * A method of a conversational interface may be marked with an + * "@EndsConversation" annotation. Once a method marked with + * "@EndsConversation" has been called, the conversation between client and + * service provider is at an end, which implies no further methods may be + * called on that service within the *same* conversation. + */ + @Test + public void atEndsConversation1() throws Exception { + +Example command line usage +>ruby processcomments.rb > comment_scan.txt + +Current output is formatted for a cwiki page and can be directly pasted to a blank page + +Some TODO's: + Add logic to process number ranges such as "Lines 523-556" or "Lines 523 to 556" +=end +class TestMethod + + attr_accessor :lines_tested, :first_line_tested + + def initialize(text, parent) + @text = text + @parent = parent + @lines_tested = init_lines_tested + @first_line_tested = @lines_tested.first + end + + #Define sort criteria + def <=>(test_method) + @first_line_tested.<=>(test_method.first_line_tested) + end + + def name + regex = /void\s*\S*\(\) / + str = @text[regex] + str.sub(/void\s*/, '') + end + + def init_lines_tested + lines_regex = /Line.*?$/ + lines_array = @text.scan(lines_regex) + nums_regex = /\d{1,4}/ + line_numbers = Array.new + lines_array.each do |line_text| + number_strings =line_text.scan(nums_regex) + number_strings.each {|num_string| line_numbers< + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-vtest + 2.0-SNAPSHOT + ../pom.xml + + vtest-utilities + Apache Tuscany SCA Verification Tests - Utilities + + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + wsdl4j + wsdl4j + 1.6.2 + + + + + diff --git a/sca-java-2.x/contrib/vtest/utilities/src/main/java/org/apache/tuscany/sca/vtest/utilities/ServiceFinder.java b/sca-java-2.x/contrib/vtest/utilities/src/main/java/org/apache/tuscany/sca/vtest/utilities/ServiceFinder.java new file mode 100644 index 0000000000..9b6792e51b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/utilities/src/main/java/org/apache/tuscany/sca/vtest/utilities/ServiceFinder.java @@ -0,0 +1,104 @@ +/* + * 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.vtest.utilities; + +import java.util.List; + +import javax.wsdl.Definition; +import javax.wsdl.WSDLException; +import javax.wsdl.factory.WSDLFactory; +import javax.wsdl.xml.WSDLReader; + +import org.apache.tuscany.sca.assembly.Binding; +import org.apache.tuscany.sca.assembly.ComponentService; +import org.apache.tuscany.sca.host.embedded.SCADomain; + +/** + * + * + */ +public class ServiceFinder { + + private static SCADomain domain; + + protected ServiceFinder() { + super(); + } + + public static void init(String compositeFileName) { + if (domain != null) + System.out.println("VTEST WARNING: domain already exists and is will be overwritten!"); + domain = SCADomain.newInstance(compositeFileName); + } + + + public static B getService(Class businessInterface, String serviceName) { + return domain.getService(businessInterface, serviceName); + } + + public static void cleanup() { + domain.close(); + domain = null; + } + + private static String getUri(String component, String service, String binding) { + + List csList = domain.getComponentManager().getComponent(component).getServices(); + + for (int i = 0; i < csList.size(); i++) { + ComponentService cs = csList.get(i); + if (service.equals(cs.getName())) { + List bList = cs.getBindings(); + for (int j = 0; j < bList.size(); j++) { + String bName = bList.get(j).getName(); + if (bName.equals(binding)) { + String bUri = bList.get(j).getURI(); + System.out.println(component + "/" + service + "-> binding name: " + bName + ", uri: " + bUri); + return bUri; + } + } + } + } + return null; + } + + public static Definition getWSDLDefinition(String component, String service) { + return getWSDLDefinition(component, service, service); + } + + public static Definition getWSDLDefinition(String component, String service, String binding) { + + String uri = getUri(component, service, binding); + + if (uri == null) + return null; + + try { + WSDLReader wsdlReader = WSDLFactory.newInstance().newWSDLReader(); + wsdlReader.setFeature("javax.wsdl.verbose",false); + wsdlReader.setFeature("javax.wsdl.importDocuments",true); + return wsdlReader.readWSDL(uri + "?wsdl"); + } catch (WSDLException e) { + e.printStackTrace(System.out); + } + return null; + } + + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/pom.xml b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/pom.xml new file mode 100644 index 0000000000..93281db150 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/pom.xml @@ -0,0 +1,58 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-wsbinding-nowsdl + 2.0-SNAPSHOT + ../pom.xml + + vtest-wsbinding-nowsdl-defaultbinding + Apache Tuscany SCA Web Service Binding Verification Tests - No WSDL Default Binding + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-ws-axis2 + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-tomcat + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/AService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/AService.java new file mode 100644 index 0000000000..b99ced1e17 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/AService.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.vtest.wsbinding.nowsdl.defaultbinding; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for AService. + */ +@Remotable +public interface AService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/BService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/BService.java new file mode 100644 index 0000000000..77c7bd4071 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/BService.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.vtest.wsbinding.nowsdl.defaultbinding; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/CService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/CService.java new file mode 100644 index 0000000000..b1979b99d9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/CService.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.vtest.wsbinding.nowsdl.defaultbinding; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface CService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public Integer getInteger(Integer i); + + public float getFloat(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/DService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/DService.java new file mode 100644 index 0000000000..9a99700550 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/DService.java @@ -0,0 +1,45 @@ +/* + * 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.vtest.wsbinding.nowsdl.defaultbinding; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for DService. + */ +@Remotable +public interface DService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + + public String getC1String(String aString); + + public String getC1String2(String aString, String bString); + + public Integer getC1Integer(Integer i); + + public float getC1Float(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/AServiceImpl.java new file mode 100644 index 0000000000..862dd78735 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/AServiceImpl.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.vtest.wsbinding.nowsdl.defaultbinding.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.defaultbinding.AService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.defaultbinding.BService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference + public BService b1; + + public String getName() { + return "AService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/BServiceImpl.java new file mode 100644 index 0000000000..225476ada0 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/BServiceImpl.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.vtest.wsbinding.nowsdl.defaultbinding.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.defaultbinding.BService; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +public class BServiceImpl implements BService { + + public String getName() { + return "BService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/CServiceImpl.java new file mode 100644 index 0000000000..9c5908f34e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/CServiceImpl.java @@ -0,0 +1,48 @@ +/* + * 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.vtest.wsbinding.nowsdl.defaultbinding.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.defaultbinding.CService; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl implements CService { + + public String getName() { + return "CService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public Integer getInteger(Integer i) { + return i; + } + + public float getFloat(float f) { + return f; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/DServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/DServiceImpl.java new file mode 100644 index 0000000000..9bda9468f5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/impl/DServiceImpl.java @@ -0,0 +1,70 @@ +/* + * 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.vtest.wsbinding.nowsdl.defaultbinding.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.defaultbinding.BService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.defaultbinding.CService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.defaultbinding.DService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(DService.class) +public class DServiceImpl implements DService { + + @Reference + public BService b1; + + @Reference + public CService c1; + + public String getName() { + return "DService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + + public String getC1String(String aString) { + return c1.getString(aString); + } + + public String getC1String2(String aString, String bString) { + return c1.getString2(aString, bString); + } + + public Integer getC1Integer(Integer i) { + return c1.getInteger(i); + } + + public float getC1Float(float f) { + return c1.getFloat(f); + } +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/resources/nowsdl.composite b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/resources/nowsdl.composite new file mode 100644 index 0000000000..39d66fa365 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/main/resources/nowsdl.composite @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/NoWsdlDefaultBindingTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/NoWsdlDefaultBindingTestCase.java new file mode 100644 index 0000000000..b50774cfa9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/defaultbinding/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/defaultbinding/NoWsdlDefaultBindingTestCase.java @@ -0,0 +1,112 @@ +/* + * 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.vtest.wsbinding.nowsdl.defaultbinding; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.defaultbinding.AService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.defaultbinding.DService; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests the simplest form of the binding element without WSDL document + * described in section section 2.2.2 of SCA Web Services Binding V1.00 + * + * @TODO - will add following tests
    + *

  • promoted service
  • + *
  • with complex type object
  • + */ +public class NoWsdlDefaultBindingTestCase { + + protected static ServiceFinder serviceFinder; + protected static String compositeName = "nowsdl.composite"; + protected static AService a; + protected static DService d; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + a = ServiceFinder.getService(AService.class, "AComponent"); + d = ServiceFinder.getService(DService.class, "DComponent"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 169-181:
    + * 2.2.2 Examples Without a WSDL Document
    + * The next example shows the simplest form of the binding element without + * WSDL document,
    + * ...
    + * which itself uses all the defaults.
    + */ + @Test + public void testNoWsdl1() throws Exception { + String aName = a.getName(); + String b1Str1 = a.getB1String("string1"); + String b1Str2 = a.getB1String2("string2", "string3"); + int b1Int = a.getB1Int(4000); + + System.out.println(aName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(4000, b1Int); + } + + /** + * Lines 169-181:
    + * Test two references using binding.ws but without WSDL documents.
    + */ + @Test + public void testNoWsdl2() throws Exception { + String dName = d.getName(); + String b1Str1 = d.getB1String("string1"); + String b1Str2 = d.getB1String2("string2", "string3"); + String c1Str1 = d.getC1String("string5"); + String c1Str2 = d.getC1String2("string6", "string7"); + + int b1Int = d.getB1Int(4000); + float c1Float = d.getC1Float((float) 8.8); + + Integer c1Integer = d.getC1Integer(new Integer(9000)); + + System.out.println(dName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int + ", " + c1Str1 + ", " + c1Str2 + ", " + c1Float + ", " + c1Integer); + Assert.assertEquals("DService", dName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(4000, b1Int); + Assert.assertEquals("string5", c1Str1); + Assert.assertEquals("string6string7", c1Str2); + Assert.assertEquals((float) 8.8, c1Float); + Assert.assertEquals(new Integer(9000), c1Integer); + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/pom.xml b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/pom.xml new file mode 100644 index 0000000000..56356ce487 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/pom.xml @@ -0,0 +1,58 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-wsbinding-nowsdl + 2.0-SNAPSHOT + ../pom.xml + + vtest-wsbinding-nowsdl-multisoapbindings + Apache Tuscany SCA Web Service Binding Verification Tests - No WSDL Multi Soap Bindings + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-ws-axis2 + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-tomcat + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/AService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/AService.java new file mode 100644 index 0000000000..1edeea95a3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/AService.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.vtest.wsbinding.nowsdl.multisoapbindings; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for AService. + */ +@Remotable +public interface AService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/BService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/BService.java new file mode 100644 index 0000000000..007ff62f17 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/BService.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.vtest.wsbinding.nowsdl.multisoapbindings; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/CService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/CService.java new file mode 100644 index 0000000000..63049ac3df --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/CService.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.vtest.wsbinding.nowsdl.multisoapbindings; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface CService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public Integer getInteger(Integer i); + + public float getFloat(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/DService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/DService.java new file mode 100644 index 0000000000..1a8d4671aa --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/DService.java @@ -0,0 +1,45 @@ +/* + * 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.vtest.wsbinding.nowsdl.multisoapbindings; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for DService. + */ +@Remotable +public interface DService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + + public String getC1String(String aString); + + public String getC1String2(String aString, String bString); + + public Integer getC1Integer(Integer i); + + public float getC1Float(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/AServiceImpl.java new file mode 100644 index 0000000000..abed24390e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/AServiceImpl.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.vtest.wsbinding.nowsdl.multisoapbindings.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.multisoapbindings.AService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.multisoapbindings.BService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference + public BService b1; + + public String getName() { + return "AService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/BServiceImpl.java new file mode 100644 index 0000000000..aba7748bb0 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/BServiceImpl.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.vtest.wsbinding.nowsdl.multisoapbindings.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.multisoapbindings.BService; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +public class BServiceImpl implements BService { + + public String getName() { + return "BService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/CServiceImpl.java new file mode 100644 index 0000000000..c7bf86e5eb --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/CServiceImpl.java @@ -0,0 +1,48 @@ +/* + * 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.vtest.wsbinding.nowsdl.multisoapbindings.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.multisoapbindings.CService; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl implements CService { + + public String getName() { + return "CService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public Integer getInteger(Integer i) { + return i; + } + + public float getFloat(float f) { + return f; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/DServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/DServiceImpl.java new file mode 100644 index 0000000000..9f6ff73355 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/impl/DServiceImpl.java @@ -0,0 +1,70 @@ +/* + * 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.vtest.wsbinding.nowsdl.multisoapbindings.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.multisoapbindings.BService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.multisoapbindings.CService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.multisoapbindings.DService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(DService.class) +public class DServiceImpl implements DService { + + @Reference + public BService b1; + + @Reference + public CService c1; + + public String getName() { + return "DService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + + public String getC1String(String aString) { + return c1.getString(aString); + } + + public String getC1String2(String aString, String bString) { + return c1.getString2(aString, bString); + } + + public Integer getC1Integer(Integer i) { + return c1.getInteger(i); + } + + public float getC1Float(float f) { + return c1.getFloat(f); + } +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/resources/nowsdlmultisoapbindings.composite b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/resources/nowsdlmultisoapbindings.composite new file mode 100644 index 0000000000..8cd599354a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/main/resources/nowsdlmultisoapbindings.composite @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/GeneratedWSDLTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/GeneratedWSDLTestCase.java new file mode 100644 index 0000000000..ae058cf6c9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/GeneratedWSDLTestCase.java @@ -0,0 +1,162 @@ +/* + * 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.vtest.wsbinding.nowsdl.multisoapbindings; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.wsdl.Binding; +import javax.wsdl.Definition; +import javax.wsdl.Port; +import javax.wsdl.Service; +import javax.wsdl.extensions.http.HTTPAddress; +import javax.wsdl.extensions.http.HTTPBinding; +import javax.wsdl.extensions.soap.SOAPAddress; +import javax.wsdl.extensions.soap.SOAPBinding; +import javax.wsdl.extensions.soap12.SOAP12Address; +import javax.wsdl.extensions.soap12.SOAP12Binding; + +import junit.framework.Assert; +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * Tests the simplest form of the binding element without WSDL document + * described in section 2.3.2 of SCA Web Services Binding V1.00 + */ +public class GeneratedWSDLTestCase { + + protected static String compositeName = "nowsdlmultisoapbindings.composite"; + protected static Definition cWSDL = null; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + cWSDL = ServiceFinder.getWSDLDefinition("CComponent", "CService"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + private Map getPorts(Definition wsdl, String service) { + String targetNamespace = wsdl.getTargetNamespace(); + HashMap sMap = (HashMap) wsdl.getServices(); + for (Iterator i = sMap.keySet().iterator(); i.hasNext();) { + Object k1 = i.next(); + Service s = (Service) sMap.get(k1); + String qName = "{" + targetNamespace + "}" + service; + if (s.getQName().toString().equals(qName)) { + return s.getPorts(); + } + // Don't why implmentation changed to add Service at the end of qname + if (s.getQName().toString().equals(qName + "Service")) { + return s.getPorts(); + } + } + return null; + } + + /** + * Lines 262-264:
    + * The WSDL service has one or more ports for each web service binding on + * the SCA service that has a SOAP requirement, or that refers to an + * existing WSDL binding, depending on the requirements of the web service + * binding. Each of those ports has a single binding.

    + * Each service has following bindings:
    + *

  • SoapBinding - PortType and SOAP11
  • + *
  • SOAP12Binding - SOAP12
  • + *
  • HTTPBinding - Http
  • + *
    and following ports:
    + *
  • SoapAddress
  • + *
  • SOAP12Address
  • + *
  • HTTPAddress
  • + */ + @Test + @Ignore + // Only generate SOAP port and binding + public void testMultiSoapBindings4() throws Exception { + + Map pMap = getPorts(cWSDL, "CService"); + int numSoapPort = 0; + int numSoap12Port = 0; + int numHttpPort = 0; + for (Iterator iter = pMap.keySet().iterator(); iter.hasNext();) { + Object k2 = iter.next(); + Port p = (Port) pMap.get(k2); + List eeList = p.getExtensibilityElements(); + for (int i = 0; i < eeList.size(); i++) { + Object address = eeList.get(i); + if (address instanceof SOAPAddress) { + numSoapPort++; + } else if (address instanceof SOAP12Address) { + numSoap12Port++; + } else if (address instanceof HTTPAddress) { + numHttpPort++; + }; + } + } + + Map cMap = cWSDL.getBindings(); + int numSoapBinding = 0; + int numSoap12Binding = 0; + int numHttpBinding = 0; + for (Iterator iter = cMap.keySet().iterator(); iter.hasNext();) { + Object k1 = iter.next(); + Binding b = (Binding) cMap.get(k1); + List eeList = b.getExtensibilityElements(); + for (int i = 0; i < eeList.size(); i++) { + Object binding = eeList.get(i); + if (binding instanceof SOAPBinding) { + numSoapBinding++; + } else if (binding instanceof SOAP12Binding) { + numSoap12Binding++; + } else if (binding instanceof HTTPBinding) { + numHttpBinding++; + } + } + } + + System.out.println("testMultiSoapBindings4"); + System.out.println(" # of SOAPPort: " + numSoapPort); + System.out.println(" # of SOAP12Port: " + numSoap12Port); + System.out.println(" # of HTTPPort: " + numHttpPort); + System.out.println(" # of SOAPBinding: " + numSoapBinding); + System.out.println(" # of SOAP12Binding: " + numSoap12Binding); + System.out.println(" # of HTTPBinding: " + numHttpBinding); + + Assert.assertEquals(numSoapPort, 1); + Assert.assertTrue(numSoap12Port > 0); + Assert.assertTrue(numSoapBinding > 0); + Assert.assertEquals(numSoap12Binding, 1); + // Skipped to test HTTP + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/NoWsdlMultiSoapBindingsTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/NoWsdlMultiSoapBindingsTestCase.java new file mode 100644 index 0000000000..5dbb696bf5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/multisoapbindings/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/multisoapbindings/NoWsdlMultiSoapBindingsTestCase.java @@ -0,0 +1,213 @@ +/* + * 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.vtest.wsbinding.nowsdl.multisoapbindings; + +import junit.framework.Assert; +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.multisoapbindings.AService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.multisoapbindings.DService; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests the simplest form of the binding element without WSDL document + * described in section section 2.2.2 and 2.3.2 of SCA Web Services + * Binding V1.00 + */ +public class NoWsdlMultiSoapBindingsTestCase { + + protected static String compositeName = "nowsdlmultisoapbindings.composite"; + protected static AService a1; + protected static AService a2; + protected static AService a3; + protected static AService a4; + protected static DService d1; + protected static DService d2; + protected static DService d3; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + a1 = ServiceFinder.getService(AService.class, "AComponent1"); + a2 = ServiceFinder.getService(AService.class, "AComponent2"); + a3 = ServiceFinder.getService(AService.class, "AComponent3"); + a4 = ServiceFinder.getService(AService.class, "AComponent4"); + d1 = ServiceFinder.getService(DService.class, "DComponent1"); + d2 = ServiceFinder.getService(DService.class, "DComponent2"); + d3 = ServiceFinder.getService(DService.class, "DComponent3"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 201-225:
    + * The next example shows the use of the binding element without a WSDL + * document, with multiple SOAP bindings with non-default values. The SOAP + * 1.2 binding name defaults to the service name, the SOAP 1.1 binding is + * given an explicit name. The reference has a web service binding which + * uses SOAP 1.2, but otherwise uses all the defaults for SOAP binding. + * The reference binding name defaults to the reference name.

    + * Line 253:
    + *

  • soap
  • + * ...
    + * version, including multiple versions.
    + *

    + * AComponent1 - no requires
    + * AComponent2 - requires = soap
    + * AComponent3 - requires = soap.1_1
    + * AComponent4 - requires = soap.1_2
    + */ + @Test + public void testMultiSoapBindings1() throws Exception { + + String aName = a1.getName(); + String b1Str1 = a1.getB1String("string1"); + String b1Str2 = a1.getB1String2("string2", "string3"); + int b1Int = a1.getB1Int(1000); + + System.out.println("AComponent1: " + aName + ", " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(1000, b1Int); + + aName = a2.getName(); + b1Str1 = a2.getB1String("string1"); + b1Str2 = a2.getB1String2("string2", "string3"); + b1Int = a2.getB1Int(2000); + + System.out.println("AComponent2: " + aName + ", " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(2000, b1Int); + + aName = a3.getName(); + b1Str1 = a3.getB1String("string1"); + b1Str2 = a3.getB1String2("string2", "string3"); + b1Int = a3.getB1Int(3000); + + System.out.println("AComponent3: " + aName + ", " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(3000, b1Int); + + aName = a4.getName(); + b1Str1 = a4.getB1String("string1"); + b1Str2 = a4.getB1String2("string2", "string3"); + b1Int = a4.getB1Int(4000); + + System.out.println("AComponent4: " + aName + ", " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(4000, b1Int); + + } + + /** + * Lines 201-225, 262-264:
    + * The WSDL service has one or more ports for each web service binding on + * the SCA service that has a SOAP requirement, or that refers to an + * existing WSDL binding, depending on the requirements of the web service + * binding. Each of those ports has a single binding.
    + *

    + * Test multiple SOAP bindings with two references which use different versions.
    + */ + @Test + public void testMultiSoapBindings2() throws Exception { + + String dName = d1.getName(); + String b1Str1 = d1.getB1String("string1"); + String b1Str2 = d1.getB1String2("string2", "string3"); + String c1Str1 = d1.getC1String("string5"); + String c1Str2 = d1.getC1String2("string6", "string7"); + int b1Int = d1.getB1Int(4000); + float c1Float = d1.getC1Float((float) 8.8); + Integer c1Integer = d1.getC1Integer(new Integer(9001)); + + System.out.println(dName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int + ", " + c1Str1 + ", " + c1Str2 + ", " + c1Float + ", " + c1Integer); + Assert.assertEquals("DService", dName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(4000, b1Int); + Assert.assertEquals("string5", c1Str1); + Assert.assertEquals("string6string7", c1Str2); + Assert.assertEquals((float) 8.8, c1Float); + Assert.assertEquals(new Integer(9001), c1Integer); + + dName = d2.getName(); + b1Str1 = d2.getB1String("string1"); + b1Str2 = d2.getB1String2("string2", "string3"); + c1Str1 = d2.getC1String("string5"); + c1Str2 = d2.getC1String2("string6", "string7"); + b1Int = d2.getB1Int(4000); + c1Float = d2.getC1Float((float) 8.8); + c1Integer = d2.getC1Integer(new Integer(9002)); + + System.out.println(dName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int + ", " + c1Str1 + ", " + c1Str2 + ", " + c1Float + ", " + c1Integer); + Assert.assertEquals("DService", dName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(4000, b1Int); + Assert.assertEquals("string5", c1Str1); + Assert.assertEquals("string6string7", c1Str2); + Assert.assertEquals((float) 8.8, c1Float); + Assert.assertEquals(new Integer(9002), c1Integer); + } + + /** + * Lines 201-225, 262-264:
    + * Test multiple SOAP bindings with promoted services and references.
    + */ + @Test + public void testMultiSoapBindings3() throws Exception { + + String dName = d3.getName(); + String b1Str1 = d3.getB1String("string1"); + String b1Str2 = d3.getB1String2("string2", "string3"); + String c1Str1 = d3.getC1String("string5"); + String c1Str2 = d3.getC1String2("string6", "string7"); + int b1Int = d3.getB1Int(4000); + float c1Float = d3.getC1Float((float) 8.8); + Integer c1Integer = d3.getC1Integer(new Integer(9003)); + + System.out.println(dName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int + ", " + c1Str1 + ", " + c1Str2 + ", " + c1Float + ", " + c1Integer); + Assert.assertEquals("DService", dName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(4000, b1Int); + Assert.assertEquals("string5", c1Str1); + Assert.assertEquals("string6string7", c1Str2); + Assert.assertEquals((float) 8.8, c1Float); + Assert.assertEquals(new Integer(9003), c1Integer); + + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/pom.xml b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/pom.xml new file mode 100644 index 0000000000..e40a4270c7 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/pom.xml @@ -0,0 +1,69 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-wsbinding + 2.0-SNAPSHOT + ../pom.xml + + vtest-wsbinding-nowsdl + pom + + Apache Tuscany SCA Web Service Binding Verification Tests - No WSDL + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-ws-axis2 + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + vtest-utilities + 2.0-SNAPSHOT + runtime + + + + + + + default + + true + + + defaultbinding + soapversion + multisoapbindings + promoted + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/pom.xml b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/pom.xml new file mode 100644 index 0000000000..63dc9ad5f6 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/pom.xml @@ -0,0 +1,58 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-wsbinding-nowsdl + 2.0-SNAPSHOT + ../pom.xml + + vtest-wsbinding-nowsdl-promoted + Apache Tuscany SCA Web Service Binding Verification Tests - No WSDL Promoted Service and Reference + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-ws-axis2 + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-tomcat + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/AService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/AService.java new file mode 100644 index 0000000000..d786f36db1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/AService.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.vtest.wsbinding.nowsdl.promoted; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for AService. + */ +@Remotable +public interface AService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BService.java new file mode 100644 index 0000000000..d4ebfcfe37 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BService.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.vtest.wsbinding.nowsdl.promoted; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BServiceSOAP.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BServiceSOAP.java new file mode 100644 index 0000000000..7289714ed2 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BServiceSOAP.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.vtest.wsbinding.nowsdl.promoted; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BServiceSOAP { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BServiceSOAP11.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BServiceSOAP11.java new file mode 100644 index 0000000000..e0c58088da --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BServiceSOAP11.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.vtest.wsbinding.nowsdl.promoted; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BServiceSOAP11 { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BServiceSOAP12.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BServiceSOAP12.java new file mode 100644 index 0000000000..e279b1d55d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/BServiceSOAP12.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.vtest.wsbinding.nowsdl.promoted; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BServiceSOAP12 { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/CService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/CService.java new file mode 100644 index 0000000000..9aaba29629 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/CService.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.vtest.wsbinding.nowsdl.promoted; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface CService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public Integer getInteger(Integer i); + + public float getFloat(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/DService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/DService.java new file mode 100644 index 0000000000..35291dc402 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/DService.java @@ -0,0 +1,45 @@ +/* + * 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.vtest.wsbinding.nowsdl.promoted; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for DService. + */ +@Remotable +public interface DService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + + public String getC1String(String aString); + + public String getC1String2(String aString, String bString); + + public Integer getC1Integer(Integer i); + + public float getC1Float(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/AServiceImpl.java new file mode 100644 index 0000000000..0bc776b06d --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/AServiceImpl.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.vtest.wsbinding.nowsdl.promoted.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.AService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.BService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference + public BService b1; + + public String getName() { + return "AService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceImpl.java new file mode 100644 index 0000000000..8ebf27bdb1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceImpl.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.vtest.wsbinding.nowsdl.promoted.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.BService; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +public class BServiceImpl implements BService { + + public String getName() { + return "BService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceSOAP11Impl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceSOAP11Impl.java new file mode 100644 index 0000000000..22247f8372 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceSOAP11Impl.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.vtest.wsbinding.nowsdl.promoted.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.BServiceSOAP11; +import org.oasisopen.sca.annotation.Service; + +@Service(BServiceSOAP11.class) +public class BServiceSOAP11Impl implements BServiceSOAP11 { + + public String getName() { + return "BServiceSOAP11"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceSOAP12Impl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceSOAP12Impl.java new file mode 100644 index 0000000000..4fbc82227c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceSOAP12Impl.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.vtest.wsbinding.nowsdl.promoted.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.BServiceSOAP12; +import org.oasisopen.sca.annotation.Service; + +@Service(BServiceSOAP12.class) +public class BServiceSOAP12Impl implements BServiceSOAP12 { + + public String getName() { + return "BServiceSOAP12"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceSOAPImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceSOAPImpl.java new file mode 100644 index 0000000000..83f6746a5f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/BServiceSOAPImpl.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.vtest.wsbinding.nowsdl.promoted.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.BServiceSOAP; +import org.oasisopen.sca.annotation.Service; + +@Service(BServiceSOAP.class) +public class BServiceSOAPImpl implements BServiceSOAP { + + public String getName() { + return "BServiceSOAP"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/CServiceImpl.java new file mode 100644 index 0000000000..ec6611fae4 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/CServiceImpl.java @@ -0,0 +1,48 @@ +/* + * 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.vtest.wsbinding.nowsdl.promoted.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.CService; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl implements CService { + + public String getName() { + return "CService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public Integer getInteger(Integer i) { + return i; + } + + public float getFloat(float f) { + return f; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/DServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/DServiceImpl.java new file mode 100644 index 0000000000..4b488c376e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/impl/DServiceImpl.java @@ -0,0 +1,70 @@ +/* + * 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.vtest.wsbinding.nowsdl.promoted.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.BService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.CService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.DService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(DService.class) +public class DServiceImpl implements DService { + + @Reference + public BService b1; + + @Reference + public CService c1; + + public String getName() { + return "DService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + + public String getC1String(String aString) { + return c1.getString(aString); + } + + public String getC1String2(String aString, String bString) { + return c1.getString2(aString, bString); + } + + public Integer getC1Integer(Integer i) { + return c1.getInteger(i); + } + + public float getC1Float(float f) { + return c1.getFloat(f); + } +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/resources/nowsdlpromoted.composite b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/resources/nowsdlpromoted.composite new file mode 100644 index 0000000000..f79df5bf8f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/main/resources/nowsdlpromoted.composite @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/NoWsdlPromoted1TestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/NoWsdlPromoted1TestCase.java new file mode 100644 index 0000000000..ae7dafa46e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/NoWsdlPromoted1TestCase.java @@ -0,0 +1,85 @@ +/* + * 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.vtest.wsbinding.nowsdl.promoted; + +import junit.framework.Assert; +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.AService; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests the simplest form of the binding element without WSDL document + * described in section section 2.3.1 and 2.3.3.1 of SCA Web Services Binding + * V1.00 + */ +public class NoWsdlPromoted1TestCase { + + protected static ServiceFinder serviceFinder; + protected static String compositeName = "nowsdlpromoted.composite"; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 251-253, 287-291:
    + *

  • soap
  • + * This indicates that a SOAP binding is required. The SOAP binding may be + * of any SOAP version, including multiple versions.
    + *
    + * 2.3.3.1 SOAP versions
    + * Where a web service binding requires a specific SOAP version, then a + * single WSDL port and SOAP binding of the appropriate version is + * generated. Where no specific SOAP version is required, then one or more + * WSDL ports with associated SOAP bindings may be generated, depending on + * the level(s) supported in the target runtime.
    + *

    + * Tests promoted services and references
    + */ + @Test + public void testSoapVersion1() throws Exception { + + for (int i = 0; i < 8; i++) { + AService a = ServiceFinder.getService(AService.class, "AComponent" + (i+1)); + String aName = a.getName(); + String b1Str1 = a.getB1String("string1"); + String b1Str2 = a.getB1String2("string2", "string3"); + int b1Int = a.getB1Int(i * 1000 + 1000); + System.out.println(i + " - " + aName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(i * 1000 + 1000, b1Int); + } + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/NoWsdlPromoted2TestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/NoWsdlPromoted2TestCase.java new file mode 100644 index 0000000000..a4744b9007 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/promoted/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/promoted/NoWsdlPromoted2TestCase.java @@ -0,0 +1,118 @@ +/* + * 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.vtest.wsbinding.nowsdl.promoted; + +import junit.framework.Assert; +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.AService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.promoted.DService; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests the simplest form of the binding element without WSDL document + * described in section section 2.3.1 and 2.3.3.1 of SCA Web Services Binding + * V1.00 + */ +public class NoWsdlPromoted2TestCase { + + protected static ServiceFinder serviceFinder; + protected static String compositeName = "nowsdlpromoted.composite"; + protected static DService d; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + d = ServiceFinder.getService(DService.class, "DComponent"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 254-257, 287-291:
    + *

  • soap.1_1

  • + * A SOAP 1.1 binding only is required.
    + *
  • soap.1_2

  • + * A SOAP 1.2 binding only is required.
    + *
    + * 2.3.3.1 SOAP versions
    + * Where a web service binding requires a specific SOAP version, then a + * single WSDL port and SOAP binding of the appropriate version is + * generated. Where no specific SOAP version is required, then one or more + * WSDL ports with associated SOAP bindings may be generated, depending on + * the level(s) supported in the target runtime.
    + *

    + * Tests promoted services and references
    + */ + @Test + public void testSoapVersion2() throws Exception { + + for (int i = 8; i < 16; i++) { + AService a = ServiceFinder.getService(AService.class, "AComponent" + (i+1)); + String aName = a.getName(); + String b1Str1 = a.getB1String("string1"); + String b1Str2 = a.getB1String2("string2", "string3"); + int b1Int = a.getB1Int(i * 1000 + 1000); + System.out.println(i + " - " + aName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(i * 1000 + 1000, b1Int); + } + } + + /** + * Lines 254-257, 287-291:
    + * Test two references using binding.ws with 2 different SOAP versions + * and without WSDL document.
    + */ + @Test + public void testSoapVersion3() throws Exception { + String dName = d.getName(); + String b1Str1 = d.getB1String("string1"); + String b1Str2 = d.getB1String2("string2", "string3"); + String c1Str1 = d.getC1String("string5"); + String c1Str2 = d.getC1String2("string6", "string7"); + + int b1Int = d.getB1Int(4000); + float c1Float = d.getC1Float((float) 8.8); + + Integer c1Integer = d.getC1Integer(new Integer(9000)); + + System.out.println(dName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int + ", " + c1Str1 + ", " + c1Str2 + ", " + c1Float + ", " + c1Integer); + Assert.assertEquals("DService", dName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(4000, b1Int); + Assert.assertEquals("string5", c1Str1); + Assert.assertEquals("string6string7", c1Str2); + Assert.assertEquals((float) 8.8, c1Float); + Assert.assertEquals(new Integer(9000), c1Integer); + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/pom.xml b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/pom.xml new file mode 100644 index 0000000000..1334e35880 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/pom.xml @@ -0,0 +1,58 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-wsbinding-nowsdl + 2.0-SNAPSHOT + ../pom.xml + + vtest-wsbinding-nowsdl-soapversion + Apache Tuscany SCA Web Service Binding Verification Tests - No WSDL SOAP Version + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-ws-axis2 + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-tomcat + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/AService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/AService.java new file mode 100644 index 0000000000..e78c977ef0 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/AService.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.vtest.wsbinding.nowsdl.soapversion; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for AService. + */ +@Remotable +public interface AService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BService.java new file mode 100644 index 0000000000..1d95f089c9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BService.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.vtest.wsbinding.nowsdl.soapversion; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BServiceSOAP.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BServiceSOAP.java new file mode 100644 index 0000000000..45d10bbd45 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BServiceSOAP.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.vtest.wsbinding.nowsdl.soapversion; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BServiceSOAP { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BServiceSOAP11.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BServiceSOAP11.java new file mode 100644 index 0000000000..f55e23012f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BServiceSOAP11.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.vtest.wsbinding.nowsdl.soapversion; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BServiceSOAP11 { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BServiceSOAP12.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BServiceSOAP12.java new file mode 100644 index 0000000000..91c9860b98 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/BServiceSOAP12.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.vtest.wsbinding.nowsdl.soapversion; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BServiceSOAP12 { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/CService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/CService.java new file mode 100644 index 0000000000..99d4f7b09f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/CService.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.vtest.wsbinding.nowsdl.soapversion; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface CService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public Integer getInteger(Integer i); + + public float getFloat(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/DService.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/DService.java new file mode 100644 index 0000000000..e95fae6877 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/DService.java @@ -0,0 +1,45 @@ +/* + * 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.vtest.wsbinding.nowsdl.soapversion; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for DService. + */ +@Remotable +public interface DService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + + public String getC1String(String aString); + + public String getC1String2(String aString, String bString); + + public Integer getC1Integer(Integer i); + + public float getC1Float(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/AServiceImpl.java new file mode 100644 index 0000000000..a313b769e5 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/AServiceImpl.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.vtest.wsbinding.nowsdl.soapversion.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.AService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.BService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference + public BService b1; + + public String getName() { + return "AService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceImpl.java new file mode 100644 index 0000000000..3baf691d88 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceImpl.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.vtest.wsbinding.nowsdl.soapversion.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.BService; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +public class BServiceImpl implements BService { + + public String getName() { + return "BService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceSOAP11Impl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceSOAP11Impl.java new file mode 100644 index 0000000000..965e195ae3 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceSOAP11Impl.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.vtest.wsbinding.nowsdl.soapversion.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.BServiceSOAP11; +import org.oasisopen.sca.annotation.Service; + +@Service(BServiceSOAP11.class) +public class BServiceSOAP11Impl implements BServiceSOAP11 { + + public String getName() { + return "BServiceSOAP11"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceSOAP12Impl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceSOAP12Impl.java new file mode 100644 index 0000000000..69e7edcc68 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceSOAP12Impl.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.vtest.wsbinding.nowsdl.soapversion.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.BServiceSOAP12; +import org.oasisopen.sca.annotation.Service; + +@Service(BServiceSOAP12.class) +public class BServiceSOAP12Impl implements BServiceSOAP12 { + + public String getName() { + return "BServiceSOAP12"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceSOAPImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceSOAPImpl.java new file mode 100644 index 0000000000..7e8294f778 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/BServiceSOAPImpl.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.vtest.wsbinding.nowsdl.soapversion.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.BServiceSOAP; +import org.oasisopen.sca.annotation.Service; + +@Service(BServiceSOAP.class) +public class BServiceSOAPImpl implements BServiceSOAP { + + public String getName() { + return "BServiceSOAP"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/CServiceImpl.java new file mode 100644 index 0000000000..7909edeb39 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/CServiceImpl.java @@ -0,0 +1,48 @@ +/* + * 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.vtest.wsbinding.nowsdl.soapversion.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.CService; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl implements CService { + + public String getName() { + return "CService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public Integer getInteger(Integer i) { + return i; + } + + public float getFloat(float f) { + return f; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/DServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/DServiceImpl.java new file mode 100644 index 0000000000..2f34bf08f9 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/impl/DServiceImpl.java @@ -0,0 +1,70 @@ +/* + * 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.vtest.wsbinding.nowsdl.soapversion.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.BService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.CService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.DService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(DService.class) +public class DServiceImpl implements DService { + + @Reference + public BService b1; + + @Reference + public CService c1; + + public String getName() { + return "DService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + + public String getC1String(String aString) { + return c1.getString(aString); + } + + public String getC1String2(String aString, String bString) { + return c1.getString2(aString, bString); + } + + public Integer getC1Integer(Integer i) { + return c1.getInteger(i); + } + + public float getC1Float(float f) { + return c1.getFloat(f); + } +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/resources/nowsdlsoapversion.composite b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/resources/nowsdlsoapversion.composite new file mode 100644 index 0000000000..61a658ab55 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/main/resources/nowsdlsoapversion.composite @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/GeneratedWSDLTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/GeneratedWSDLTestCase.java new file mode 100644 index 0000000000..edd0d91072 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/GeneratedWSDLTestCase.java @@ -0,0 +1,438 @@ +/* + * 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.vtest.wsbinding.nowsdl.soapversion; + +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.wsdl.Binding; +import javax.wsdl.BindingInput; +import javax.wsdl.BindingOperation; +import javax.wsdl.BindingOutput; +import javax.wsdl.Definition; +import javax.wsdl.Operation; +import javax.wsdl.Port; +import javax.wsdl.PortType; +import javax.wsdl.Service; +import javax.wsdl.extensions.http.HTTPAddress; +import javax.wsdl.extensions.http.HTTPBinding; +import javax.wsdl.extensions.http.HTTPOperation; +import javax.wsdl.extensions.soap.SOAPAddress; +import javax.wsdl.extensions.soap.SOAPBinding; +import javax.wsdl.extensions.soap.SOAPBody; +import javax.wsdl.extensions.soap.SOAPHeader; +import javax.wsdl.extensions.soap.SOAPHeaderFault; +import javax.wsdl.extensions.soap.SOAPOperation; +import javax.wsdl.extensions.soap12.SOAP12Address; +import javax.wsdl.extensions.soap12.SOAP12Binding; +import javax.wsdl.extensions.soap12.SOAP12Body; +import javax.wsdl.extensions.soap12.SOAP12Header; +import javax.wsdl.extensions.soap12.SOAP12HeaderFault; +import javax.wsdl.extensions.soap12.SOAP12Operation; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.BService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.CService; + + +/** + * Tests the simplest form of the binding element without WSDL document + * described in section section 2.3.2, 2.3.3, 2.3.3.1, and 2.3.4 of SCA + * Web Services Binding V1.00 + */ +public class GeneratedWSDLTestCase { + + protected static ServiceFinder serviceFinder; + protected static String compositeName = "nowsdlsoapversion.composite"; + protected static Definition bWSDL = null; + protected static Definition cWSDL = null; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + bWSDL = ServiceFinder.getWSDLDefinition("BComponent", "BService"); + cWSDL = ServiceFinder.getWSDLDefinition("CComponent", "CService"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 260-262:
    + * A separate WSDL document is generated for each SCA service. Each has + * its own unique target namespace. This is to ensure that bindings on + * different services of the same component do not clash.
    + */ + @Test + @Ignore("TUSCANY-2607") + // Don't know why target namespaces are same + public void testSoapVersion4() throws Exception { + String cTargetNamespace = cWSDL.getTargetNamespace(); + String bTargetNamespace = bWSDL.getTargetNamespace(); + Assert.assertFalse(bTargetNamespace.equals(cTargetNamespace)); + } + + /** + * Lines 271-273:
    + * The target namespace of the WSDL document, and of the service, ports and + * generated binding elements is:
    + * Base System URI for HTTP / Component Name / Service Name
    + */ + @Test + @Ignore("TUSCANY-2607") + // The target namespace does not follow the convention + public void testSoapVersion5() throws Exception { + String bTargetNamespace = bWSDL.getTargetNamespace(); + String cTargetNamespace = cWSDL.getTargetNamespace(); + Assert.assertTrue(bTargetNamespace.endsWith("BComponent/BService")); + Assert.assertTrue(cTargetNamespace.endsWith("CComponent/CService")); + } + + private Map getPorts(Definition wsdl, String service) { + String targetNamespace = wsdl.getTargetNamespace(); + HashMap sMap = (HashMap) wsdl.getServices(); + for (Iterator i = sMap.keySet().iterator(); i.hasNext();) { + Object k1 = i.next(); + Service s = (Service) sMap.get(k1); + String qName = "{" + targetNamespace + "}" + service; + if (s.getQName().toString().equals(qName)) { + return s.getPorts(); + } + // Don't why implmentation changed to add Service at the end of qname + if (s.getQName().toString().equals(qName + "Service")) { + return s.getPorts(); + } + } + return null; + } + + /** + * Lines 262-264, 290-291:
    + * The WSDL service has one or more ports for each web service binding on + * the SCA service that has a SOAP requirement, or that refers to an + * existing WSDL binding, depending on the requirements of the web service + * binding. Each of those ports has a single binding.
    + *

    + * 2.3.3.1 SOAP versions
    + * Where no specific SOAP version is required, then one or more WSDL ports + * with associated SOAP bindings may be generated, depending on the level(s) + * supported in the target runtime.
    + *

    + * BComponent/BService is not specified a SOAP version. + * It should have following bindings:
    + *

  • SoapBinding - PortType and SOAP11
  • + *
  • SOAP12Binding - SOAP12
  • + *
  • HTTPBinding - Http
  • + *
    and following ports:
    + *
  • SoapAddress
  • + *
  • SOAP12Address
  • + *
  • HTTPAddress
  • + + */ + @Test + public void testSoapVersion6() throws Exception { + + Map pMap = getPorts(bWSDL, "BService"); + int numSoapPort = 0; + int numSoap12Port = 0; + int numHttpPort = 0; + for (Iterator iter = pMap.keySet().iterator(); iter.hasNext();) { + Object k2 = iter.next(); + Port p = (Port) pMap.get(k2); + List eeList = p.getExtensibilityElements(); + for (int i = 0; i < eeList.size(); i++) { + Object address = eeList.get(i); + if (address instanceof SOAPAddress) { + numSoapPort++; + } else if (address instanceof SOAP12Address) { + numSoap12Port++; + } else if (address instanceof HTTPAddress) { + numHttpPort++; + } else { + System.out.println("address:" + address.getClass()); + } + } + } + + Map bMap = bWSDL.getBindings(); + int numSoapBinding = 0; + int numSoap12Binding = 0; + int numHttpBinding = 0; + for (Iterator iter = bMap.keySet().iterator(); iter.hasNext();) { + Object k1 = iter.next(); + Binding b = (Binding) bMap.get(k1); + List eeList = b.getExtensibilityElements(); + for (int i = 0; i < eeList.size(); i++) { + Object binding = eeList.get(i); + if (binding instanceof SOAPBinding) { + numSoapBinding++; + } else if (binding instanceof SOAP12Binding) { + numSoap12Binding++; + } else if (binding instanceof HTTPBinding) { + numHttpBinding++; + } + } + } + + System.out.println("testSoapVersion6"); + System.out.println(" # of SOAPPort: " + numSoapPort); + System.out.println(" # of SOAP12Port: " + numSoap12Port); + System.out.println(" # of HTTPPort: " + numHttpPort); + System.out.println(" # of SOAPBinding: " + numSoapBinding); + System.out.println(" # of SOAP12Binding: " + numSoap12Binding); + System.out.println(" # of HTTPBinding: " + numHttpBinding); + + Assert.assertEquals(numSoapPort, 1); + Assert.assertEquals(numSoap12Port, 0); + Assert.assertTrue(numSoapBinding > 0); + Assert.assertEquals(numSoap12Binding, 0); + // Skipped to test HTTP + + } + + /** + * Lines 275-284:
    + * 2.3.3 WSDL Bindings
    + * The binding elements in the generated WSDL document are either defined + * within the document, derived from the requirements of the binding, or + * are imported from existing WSDL documents.
    + * Generated bindings have the following fixed assumptions:
    + *
  • use="literal" for input and output messages
  • + *
  • style="document" for the binding
  • + *
  • All faults map to soap:faults
  • + *
  • No header or headerFault elements are generated
  • + *
  • The transport is "http://schemas.xmlsoap.org/soap/http", unless the + * system provides intents for alternative transports
    + *

    + */ + @Test + public void testSoapVersion7() throws Exception { + Map bMap = bWSDL.getBindings(); + for (Iterator iter = bMap.keySet().iterator(); iter.hasNext();) { + Object k1 = iter.next(); + Binding b = (Binding) bMap.get(k1); + List eeList = b.getExtensibilityElements(); + for (int i = 0; i < eeList.size(); i++) { + Object binding = eeList.get(i); + if (binding instanceof SOAPBinding) { + SOAPBinding sb = (SOAPBinding) binding; + Assert.assertEquals(sb.getStyle(), "document"); + Assert.assertEquals(sb.getTransportURI(), "http://schemas.xmlsoap.org/soap/http"); + } else if (binding instanceof SOAP12Binding) { + SOAP12Binding sb = (SOAP12Binding) binding; + Assert.assertEquals(sb.getStyle(), "document"); + Assert.assertEquals(sb.getTransportURI(), "http://schemas.xmlsoap.org/soap/http"); + } else if (binding instanceof HTTPBinding) { + } + } + List operations = b.getBindingOperations(); + for (int i = 0; i < eeList.size(); i++) { + BindingOperation bop = (BindingOperation) operations.get(i); + + List oeeList = bop.getExtensibilityElements(); + for (int j = 0; j < eeList.size(); j++) { + Object op = oeeList.get(j); + if (op instanceof SOAPOperation) { + SOAPOperation sop = (SOAPOperation) op; + if (sop.getStyle() != null) + Assert.assertEquals(sop.getStyle(), "document"); + } else if (op instanceof SOAP12Operation) { + SOAP12Operation sop = (SOAP12Operation) op; + Assert.assertEquals(sop.getStyle(), "document"); + } else if (op instanceof HTTPOperation) { + // HTTPOperation hop = (HTTPOperation) op; + } + } + + BindingInput bInput = (BindingInput) bop.getBindingInput(); + List bInputList = bInput.getExtensibilityElements(); + for (int j = 0; j < eeList.size(); j++) { + Object body = bInputList.get(j); + if (body instanceof SOAPBody) { + SOAPBody sBody = (SOAPBody) body; + Assert.assertEquals(sBody.getUse(), "literal"); + } else if (body instanceof SOAP12Body) { + SOAP12Body sBody = (SOAP12Body) body; + Assert.assertEquals(sBody.getUse(), "literal"); + } else { + Assert.assertFalse(body instanceof SOAPHeader); + Assert.assertFalse(body instanceof SOAP12Header); + Assert.assertFalse(body instanceof SOAPHeaderFault); + Assert.assertFalse(body instanceof SOAP12HeaderFault); + } + } + + BindingOutput bOutput = (BindingOutput) bop.getBindingOutput(); + List bOutputList = bOutput.getExtensibilityElements(); + for (int j = 0; j < eeList.size(); j++) { + Object body = bOutputList.get(j); + if (body instanceof SOAPBody) { + SOAPBody sBody = (SOAPBody) body; + Assert.assertEquals(sBody.getUse(), "literal"); + } else if (body instanceof SOAP12Body) { + SOAP12Body sBody = (SOAP12Body) body; + Assert.assertEquals(sBody.getUse(), "literal"); + } else { + Assert.assertFalse(body instanceof SOAPHeader); + Assert.assertFalse(body instanceof SOAP12Header); + Assert.assertFalse(body instanceof SOAPHeaderFault); + Assert.assertFalse(body instanceof SOAP12HeaderFault); + } + } + + Map bFaults = bop.getBindingFaults(); + if (bFaults.size() > 0) + System.out.println("WARNING: Skipped to test binding faults"); + + } + } + } + + /** + * Lines 288-289:
    + * 2.3.3.1 SOAP versions
    + * Where a web service binding requires a specific SOAP version, then a + * single WSDL port and SOAP binding of the appropriate version is + * generated. + */ + @Test + public void testSoapVersion8() throws Exception { + + Map pMap = getPorts(cWSDL, "CService"); + int numSoapPort = 0; + int numSoap12Port = 0; + int numHttpPort = 0; + for (Iterator iter = pMap.keySet().iterator(); iter.hasNext();) { + Object k2 = iter.next(); + Port p = (Port) pMap.get(k2); + List eeList = p.getExtensibilityElements(); + for (int i = 0; i < eeList.size(); i++) { + Object address = eeList.get(i); + if (address instanceof SOAPAddress) { + numSoapPort++; + } else if (address instanceof SOAP12Address) { + numSoap12Port++; + } else if (address instanceof HTTPAddress) { + numHttpPort++; + }; + } + } + + Map cMap = cWSDL.getBindings(); + int numSoapBinding = 0; + int numSoap12Binding = 0; + int numHttpBinding = 0; + for (Iterator iter = cMap.keySet().iterator(); iter.hasNext();) { + Object k1 = iter.next(); + Binding b = (Binding) cMap.get(k1); + List eeList = b.getExtensibilityElements(); + for (int i = 0; i < eeList.size(); i++) { + Object binding = eeList.get(i); + if (binding instanceof SOAPBinding) { + numSoapBinding++; + } else if (binding instanceof SOAP12Binding) { + numSoap12Binding++; + } else if (binding instanceof HTTPBinding) { + numHttpBinding++; + } + } + } + + System.out.println("testSoapVersion8"); + System.out.println(" # of SOAPPort: " + numSoapPort); + System.out.println(" # of SOAP12Port: " + numSoap12Port); + System.out.println(" # of HTTPPort: " + numHttpPort); + System.out.println(" # of SOAPBinding: " + numSoapBinding); + System.out.println(" # of SOAP12Binding: " + numSoap12Binding); + System.out.println(" # of HTTPBinding: " + numHttpBinding); + + Assert.assertTrue(numSoap12Port > 0); + Assert.assertTrue(numSoap12Binding > 0); + Assert.assertEquals(numSoapPort, 0); + Assert.assertEquals(numSoapBinding, 0); + // Skipped to test HTTP + } + + private boolean testOperation(Operation op, Method m[]) { + for (int i = 0; i < m.length; i++) { + if(m[i].getName().equals(op.getName())) { + Assert.assertNotNull(op.getInput()); + Assert.assertNotNull(op.getOutput()); + return true; + } + } + return false; + } + + /** + * Lines 293-296:
    + * 2.3.4 WSDL PortType
    + * An SCA service has a single interface. This interface is always imported + * into the generated WSDL document. This may be done directly for + * WSDL-defined interfaces, or indirectly via a WSDL generated from the + * interface type for the service.
    + */ + @Test + public void testSoapVersion9() throws Exception { + Method bMethod[] = BService.class.getMethods(); + Map bPTMap = bWSDL.getPortTypes(); + Assert.assertEquals(bPTMap.size(), 1); + for (Iterator iter = bPTMap.keySet().iterator(); iter.hasNext();) { + PortType pt = (PortType) bPTMap.get(iter.next()); + List opList = pt.getOperations(); + Assert.assertEquals(bMethod.length, opList.size()); + for (int i = 0; i < opList.size(); i++) { + Operation op = (Operation) opList.get(i); + Assert.assertTrue(testOperation(op, bMethod)); + } + } + + Method cMethod[] = CService.class.getMethods(); + Map cPTMap = cWSDL.getPortTypes(); + Assert.assertEquals(cPTMap.size(), 1); + for (Iterator iter = cPTMap.keySet().iterator(); iter.hasNext();) { + PortType pt = (PortType) cPTMap.get(iter.next()); + List opList = pt.getOperations(); + Assert.assertEquals(cMethod.length, opList.size()); + for (int i = 0; i < opList.size(); i++) { + Operation op = (Operation) opList.get(i); + Assert.assertTrue(testOperation(op, cMethod)); + } + } + } + + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/NoWsdlNoSoapVersionTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/NoWsdlNoSoapVersionTestCase.java new file mode 100644 index 0000000000..896b5a3d89 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/NoWsdlNoSoapVersionTestCase.java @@ -0,0 +1,84 @@ +/* + * 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.vtest.wsbinding.nowsdl.soapversion; + +import junit.framework.Assert; +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.AService; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests the simplest form of the binding element without WSDL document + * described in section section 2.3.1 and 2.3.3.1 of SCA Web Services Binding + * V1.00 + */ +public class NoWsdlNoSoapVersionTestCase { + + protected static ServiceFinder serviceFinder; + protected static String compositeName = "nowsdlsoapversion.composite"; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 251-253, 287-291:
    + *

  • soap
  • + * This indicates that a SOAP binding is required. The SOAP binding may be + * of any SOAP version, including multiple versions.
    + *
    + * 2.3.3.1 SOAP versions
    + * Where a web service binding requires a specific SOAP version, then a + * single WSDL port and SOAP binding of the appropriate version is + * generated. Where no specific SOAP version is required, then one or more + * WSDL ports with associated SOAP bindings may be generated, depending on + * the level(s) supported in the target runtime.
    + *

    + */ + @Test + public void testSoapVersion1() throws Exception { + + for (int i = 0; i < 8; i++) { + AService a = ServiceFinder.getService(AService.class, "AComponent" + (i+1)); + String aName = a.getName(); + String b1Str1 = a.getB1String("string1"); + String b1Str2 = a.getB1String2("string2", "string3"); + int b1Int = a.getB1Int(i * 1000 + 1000); + System.out.println(i + " - " + aName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(i * 1000 + 1000, b1Int); + } + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/NoWsdlSoapVersionTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/NoWsdlSoapVersionTestCase.java new file mode 100644 index 0000000000..c65f7e8e52 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/nowsdl/soapversion/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/nowsdl/soapversion/NoWsdlSoapVersionTestCase.java @@ -0,0 +1,121 @@ +/* + * 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.vtest.wsbinding.nowsdl.soapversion; + +import junit.framework.Assert; +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.AService; +import org.apache.tuscany.sca.vtest.wsbinding.nowsdl.soapversion.DService; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests the simplest form of the binding element without WSDL document + * described in section section 2.3.1, 2.3.2 and 2.3.3.1 of SCA Web Services + * Binding V1.00 + */ +public class NoWsdlSoapVersionTestCase { + + protected static ServiceFinder serviceFinder; + protected static String compositeName = "nowsdlsoapversion.composite"; + protected static DService d; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + d = ServiceFinder.getService(DService.class, "DComponent"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 254-257:
    + *

  • soap.1_1

  • + * A SOAP 1.1 binding only is required.
    + *
  • soap.1_2

  • + * A SOAP 1.2 binding only is required.
    + *
    + * 2.3.3.1 SOAP versions
    + * Where a web service binding requires a specific SOAP version, then a + * single WSDL port and SOAP binding of the appropriate version is + * generated. Where no specific SOAP version is required, then one or more + * WSDL ports with associated SOAP bindings may be generated, depending on + * the level(s) supported in the target runtime.
    + *

    + */ + @Test + public void testSoapVersion2() throws Exception { + + for (int i = 8; i < 16; i++) { + AService a = ServiceFinder.getService(AService.class, "AComponent" + (i+1)); + String aName = a.getName(); + String b1Str1 = a.getB1String("string1"); + String b1Str2 = a.getB1String2("string2", "string3"); + int b1Int = a.getB1Int(i * 1000 + 1000); + System.out.println(i + " - " + aName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(i * 1000 + 1000, b1Int); + } + } + + /** + * Lines 254-257, 287-291, 260-262:
    + * A separate WSDL document is generated for each SCA service. Each has + * its own unique target namespace. This is to ensure that bindings on + * different services of the same component do not clash.
    + *

    + * Test two references using binding.ws with 2 different SOAP versions + * and without WSDL document.
    + */ + @Test + public void testSoapVersion3() throws Exception { + String dName = d.getName(); + String b1Str1 = d.getB1String("string1"); + String b1Str2 = d.getB1String2("string2", "string3"); + String c1Str1 = d.getC1String("string5"); + String c1Str2 = d.getC1String2("string6", "string7"); + + int b1Int = d.getB1Int(4000); + float c1Float = d.getC1Float((float) 8.8); + + Integer c1Integer = d.getC1Integer(new Integer(9000)); + + System.out.println(dName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int + ", " + c1Str1 + ", " + c1Str2 + ", " + c1Float + ", " + c1Integer); + Assert.assertEquals("DService", dName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(4000, b1Int); + Assert.assertEquals("string5", c1Str1); + Assert.assertEquals("string6string7", c1Str2); + Assert.assertEquals((float) 8.8, c1Float); + Assert.assertEquals(new Integer(9000), c1Integer); + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/pom.xml b/sca-java-2.x/contrib/vtest/wsbinding/pom.xml new file mode 100644 index 0000000000..786fc89731 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/pom.xml @@ -0,0 +1,68 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-vtest + 2.0-SNAPSHOT + ../pom.xml + + vtest-wsbinding + pom + Apache Tuscany SCA Web Service Binding Verification Tests + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-ws-axis2 + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + vtest-utilities + 2.0-SNAPSHOT + runtime + + + + + + + + default + + true + + + service + nowsdl + wsdlelement + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/pom.xml b/sca-java-2.x/contrib/vtest/wsbinding/service/pom.xml new file mode 100644 index 0000000000..4fb8d98b57 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/pom.xml @@ -0,0 +1,58 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-wsbinding + 2.0-SNAPSHOT + ../pom.xml + + vtest-wsbinding-service + Apache Tuscany SCA Web Service Binding Verification Tests - Service + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-ws-axis2 + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-tomcat + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/AClientService.java b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/AClientService.java new file mode 100644 index 0000000000..bdb5aa3821 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/AClientService.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 org.apache.tuscany.sca.vtest.wsbinding; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for AClientService. + */ +@Remotable +public interface AClientService { + public String getGreetingsForward(String name); +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/AService.java b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/AService.java new file mode 100644 index 0000000000..2dc7afce0c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/AService.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 org.apache.tuscany.sca.vtest.wsbinding; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for AService. + */ +@Remotable +public interface AService { + public String getGreetings(String name); +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/impl/AClientServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/impl/AClientServiceImpl.java new file mode 100644 index 0000000000..93cd716abe --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/impl/AClientServiceImpl.java @@ -0,0 +1,38 @@ +/* + * 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.vtest.wsbinding.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.AClientService; +import org.apache.tuscany.sca.vtest.wsbinding.AService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(AClientService.class) +public class AClientServiceImpl implements AClientService { + + @Reference + protected AService aService; + + public String getGreetingsForward(String name) { + return aService.getGreetings(name); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/impl/AServiceImpl.java new file mode 100644 index 0000000000..6ab7668c8b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/impl/AServiceImpl.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.vtest.wsbinding.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.AService; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(AService.class) +public class AServiceImpl implements AService { + + public String getGreetings(String name) { + return "Hello " + name; + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/aservice.wsdl b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/aservice.wsdl new file mode 100644 index 0000000000..e7953eb2b4 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/aservice.wsdl @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/endpoint-uri-resolution.composite b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/endpoint-uri-resolution.composite new file mode 100644 index 0000000000..0d92174442 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/endpoint-uri-resolution.composite @@ -0,0 +1,103 @@ + + + + + + + + + + + http://localhost:8085/AService/endpointref + + + + + + + + + inAddress + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/endpointreference.composite b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/endpointreference.composite new file mode 100644 index 0000000000..3ba152b7b8 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/endpointreference.composite @@ -0,0 +1,40 @@ + + + + + + + + + + http://localhost:8085/AService/endpointref + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlbinding.composite b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlbinding.composite new file mode 100644 index 0000000000..85c604070a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlbinding.composite @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlendpoint.composite b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlendpoint.composite new file mode 100644 index 0000000000..0c11c79efe --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlendpoint.composite @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlport.composite b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlport.composite new file mode 100644 index 0000000000..859b93bec4 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlport.composite @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlservice.composite b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlservice.composite new file mode 100644 index 0000000000..fa96e650de --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/main/resources/wsdlservice.composite @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/EndpointReferenceTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/EndpointReferenceTestCase.java new file mode 100644 index 0000000000..d858daaf78 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/EndpointReferenceTestCase.java @@ -0,0 +1,67 @@ +/* + * 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.vtest.wsbinding; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests EndpointReference element specified in service binding.ws as per Web + * Services Binding Specification v1.00 - Sec 2.1 - Lines 61 to 65. + */ +public class EndpointReferenceTestCase { + + protected static String compositeName = "endpointreference.composite"; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 61-65 + *

    + * /binding.ws/wsa:EndpointReference – optional WS-Addressing [6] + * EndpointReference that specifies the endpoint for the service or + * reference. When this element is present along with the wsdlElement + * attribute on the parent element, the wsdlElement attribute value MUST be + * of the ‘Binding’ form as specified above, i.e. #wsdl.binding(). + */ + @Test + public void testWsdlBinding() throws Exception { + AClientService aClient = ServiceFinder.getService(AClientService.class, "AClientComponent"); + Assert.assertEquals("Hello Pandu", aClient.getGreetingsForward("Pandu")); + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/EndpointUriResolutionTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/EndpointUriResolutionTestCase.java new file mode 100644 index 0000000000..49f9db248f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/EndpointUriResolutionTestCase.java @@ -0,0 +1,209 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tuscany.sca.vtest.wsbinding; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * Tests "Endpoint URI resolution" for service binding.ws as per Web Services + * Binding Specification v1.00 - Sec 2.1.1 - Lines 70 to 85. + */ +public class EndpointUriResolutionTestCase { + + protected static String compositeName = "endpoint-uri-resolution.composite"; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 71-78 + *

    + * The rules for resolving the URI at which an SCA service is hosted, or SCA + * reference targets, when used with binding.ws (in precedence order) are: + * 1. The URIs in the endpoint(s) of the referenced WSDL or The URI + * specified by the wsa:Address element of the wsa:EndpointReference, 2. The + * explicitly stated URI in the "uri" attribute of the binding.ws element, + * which may be relative, 3. The implicit URI as defined by the Assembly + * specification + *

    + * This method tests that URI in the endpoint takes precedence. + */ + @Test + public void testUriInEndpoint() throws Exception { + AClientService aClient = ServiceFinder.getService(AClientService.class, "AClientComponent1"); + Assert.assertEquals("Hello Pandu", aClient.getGreetingsForward("Pandu")); + } + + /** + * Lines 71-78 + *

    + * The rules for resolving the URI at which an SCA service is hosted, or SCA + * reference targets, when used with binding.ws (in precedence order) are: + * 1. The URIs in the endpoint(s) of the referenced WSDL or The URI + * specified by the wsa:Address element of the wsa:EndpointReference, 2. The + * explicitly stated URI in the "uri" attribute of the binding.ws element, + * which may be relative, 3. The implicit URI as defined by the Assembly + * specification + *

    + * This method tests that URI in the EndpointReference takes precedence. + */ + @Test + public void testUriInEndpointReference() throws Exception { + AClientService aClient = ServiceFinder.getService(AClientService.class, "AClientComponent2"); + Assert.assertEquals("Hello Pandu", aClient.getGreetingsForward("Pandu")); + } + + /** + * Lines 71-78 + *

    + * The rules for resolving the URI at which an SCA service is hosted, or SCA + * reference targets, when used with binding.ws (in precedence order) are: + * 1. The URIs in the endpoint(s) of the referenced WSDL or The URI + * specified by the wsa:Address element of the wsa:EndpointReference, 2. The + * explicitly stated URI in the "uri" attribute of the binding.ws element, + * which may be relative, 3. The implicit URI as defined by the Assembly + * specification + *

    + * This method tests that explicitly stated URI in the "uri" attribute of + * binding.ws takes precedence. + */ + @Test + public void testUriInBindingWs() throws Exception { + AClientService aClient = ServiceFinder.getService(AClientService.class, "AClientComponent3"); + Assert.assertEquals("Hello Pandu", aClient.getGreetingsForward("Pandu")); + } + + /** + * Lines 71-78 + *

    + * The rules for resolving the URI at which an SCA service is hosted, or SCA + * reference targets, when used with binding.ws (in precedence order) are: + * 1. The URIs in the endpoint(s) of the referenced WSDL or The URI + * specified by the wsa:Address element of the wsa:EndpointReference, 2. The + * explicitly stated URI in the "uri" attribute of the binding.ws element, + * which may be relative, 3. The implicit URI as defined by the Assembly + * specification + *

    + * This method tests that implicit URI is used. + */ + @Ignore("TUSCANY-2523 - Port 8080 conflicts with Continuum") + @Test + public void testImplicitUri() throws Exception { + AClientService aClient = ServiceFinder.getService(AClientService.class, "AClientComponent4"); + Assert.assertEquals("Hello Pandu", aClient.getGreetingsForward("Pandu")); + } + + /** + * Lines 71-78 + *

    + * The rules for resolving the URI at which an SCA service is hosted, or SCA + * reference targets, when used with binding.ws (in precedence order) are: + * 1. The URIs in the endpoint(s) of the referenced WSDL or The URI + * specified by the wsa:Address element of the wsa:EndpointReference, 2. The + * explicitly stated URI in the "uri" attribute of the binding.ws element, + * which may be relative, 3. The implicit URI as defined by the Assembly + * specification + *

    + * This method tests that explicitly stated URI in the "uri" attribute of + * the binding.ws is used in the absence of a wsdlElement. + */ + @Test + public void testNoWsdlElement() throws Exception { + AClientService aClient = ServiceFinder.getService(AClientService.class, "AClientComponent5"); + Assert.assertEquals("Hello Pandu", aClient.getGreetingsForward("Pandu")); + } + + /** + * Lines 79-83 + *

    + * The URI in the WSDL endpoint or in the wsa:Address of an EPR may be a + * relative URI, in which case it is relative to the URI defined in (2) or + * (3). The wsa:Address element can be the empty relative URI, in which case + * it uses the URI defined in (2) or (3) directly. This allows the EPR + * writer to specify reference parameters, metadata and other EPR contents + * while allowing the URI to be chosen by the deployer. + *

    + * This method tests that the relative URI specified in WSDL endpoint is + * used along with the explicit URI specified in the "uri" attribute of + * binding.ws element. + */ + @Test + public void testRelativeUriInWsdl() throws Exception { + AClientService aClient = ServiceFinder.getService(AClientService.class, "AClientComponent6"); + Assert.assertEquals("Hello Pandu", aClient.getGreetingsForward("Pandu")); + } + + /** + * Lines 79-83 + *

    + * The URI in the WSDL endpoint or in the wsa:Address of an EPR may be a + * relative URI, in which case it is relative to the URI defined in (2) or + * (3). The wsa:Address element can be the empty relative URI, in which case + * it uses the URI defined in (2) or (3) directly. This allows the EPR + * writer to specify reference parameters, metadata and other EPR contents + * while allowing the URI to be chosen by the deployer. + *

    + * This method tests that the relative URI specified in wsa:Address is used + * along with the explicit URI specified in the "uri" attribute of + * binding.ws element. + */ + @Test + public void testRelativeUriInAddress() throws Exception { + AClientService aClient = ServiceFinder.getService(AClientService.class, "AClientComponent7"); + Assert.assertEquals("Hello Pandu", aClient.getGreetingsForward("Pandu")); + } + + /** + * Lines 79-83 + *

    + * The URI in the WSDL endpoint or in the wsa:Address of an EPR may be a + * relative URI, in which case it is relative to the URI defined in (2) or + * (3). The wsa:Address element can be the empty relative URI, in which case + * it uses the URI defined in (2) or (3) directly. This allows the EPR + * writer to specify reference parameters, metadata and other EPR contents + * while allowing the URI to be chosen by the deployer. + *

    + * This method tests that when wsa:Address is empty, the explicit URI + * specified in the "uri" attribute of binding.ws element is used. + */ + @Test + public void testEmptyAddressElement() throws Exception { + AClientService aClient = ServiceFinder.getService(AClientService.class, "AClientComponent8"); + Assert.assertEquals("Hello Pandu", aClient.getGreetingsForward("Pandu")); + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlBindingTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlBindingTestCase.java new file mode 100644 index 0000000000..292de8b654 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlBindingTestCase.java @@ -0,0 +1,68 @@ +/* + * 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.vtest.wsbinding; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests wsdlElement specified on service binding.ws as per Web Services Binding Specification v1.00 - Sec 2.1 + * - Lines 35 to 54. + */ +public class WsdlBindingTestCase { + + protected static String compositeName = "wsdlbinding.composite"; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 50-54 + *

    + * Binding: + * #wsdl.binding() + * In this case, the identified WSDL binding must have an equivalent PortType with the SCA + * service or reference. In this case the endpoint address URI for the SCA service or + * reference must be provided via the URI attribute on the binding. + */ + @Test + public void testWsdlBinding() throws Exception { + AClientService aClientBnd11 = ServiceFinder.getService(AClientService.class, "AClientBnd11Component"); + Assert.assertEquals("Hello Pandu", aClientBnd11.getGreetingsForward("Pandu")); + AClientService aClientBnd12 = ServiceFinder.getService(AClientService.class, "AClientBnd12Component"); + Assert.assertEquals("Hello Pandu", aClientBnd12.getGreetingsForward("Pandu")); + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlEndpointTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlEndpointTestCase.java new file mode 100644 index 0000000000..842da87bd4 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlEndpointTestCase.java @@ -0,0 +1,66 @@ +/* + * 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.vtest.wsbinding; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * Tests wsdlElement specified on service binding.ws as per Web Services Binding + * Specification v1.00 - Sec 2.1 - Lines 35 to 54. + */ +public class WsdlEndpointTestCase { + + protected static String compositeName = "wsdlendpoint.composite"; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 46-49 + *

    + * Endpoint (WSDL 2.0): #wsdl.endpoint(/) + * In this case, the identified endpoint in the WSDL 2.0 Service must have + * an equivalent PortType with the SCA service or reference. + */ + @Test + @Ignore("WSDL2.0 Support") + public void testWsdlEndpoint() throws Exception { + AClientService aClient = ServiceFinder.getService(AClientService.class, "AClientComponent"); + Assert.assertEquals("Hello Pandu", aClient.getGreetingsForward("Pandu")); + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlPortTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlPortTestCase.java new file mode 100644 index 0000000000..0545cef776 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlPortTestCase.java @@ -0,0 +1,66 @@ +/* + * 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.vtest.wsbinding; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests wsdlElement specified on service binding.ws as per Web Services Binding + * Specification v1.00 - Sec 2.1 - Lines 35 to 54. + */ +public class WsdlPortTestCase { + + protected static String compositeName = "wsdlport.composite"; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 42-45 + *

    + * Port (WSDL 1.1): #wsdl.port(/) + * In this case, the identified port in the WSDL 1.1 Service must have an + * equivalent PortType with the SCA service or reference. + */ + @Test + public void testWsdlPort() throws Exception { + AClientService aClientP11 = ServiceFinder.getService(AClientService.class, "AClientP11Component"); + Assert.assertEquals("Hello Pandu", aClientP11.getGreetingsForward("Pandu")); + AClientService aClientP12 = ServiceFinder.getService(AClientService.class, "AClientP12Component"); + Assert.assertEquals("Hello Pandu", aClientP12.getGreetingsForward("Pandu")); + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlServiceTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlServiceTestCase.java new file mode 100644 index 0000000000..aa2b2fac7a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/WsdlServiceTestCase.java @@ -0,0 +1,69 @@ +/* + * 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.vtest.wsbinding; + +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * Tests wsdlElement specified on service binding.ws as per Web Services Binding + * Specification v1.00 - Sec 2.1 - Lines 35 to 54. + */ +public class WsdlServiceTestCase { + + protected static String compositeName = "wsdlservice.composite"; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 38-41 + *

    + * Service: #wsdl.service() In this case, + * all the endpoints in the WSDL Service that have equivalent PortTypes with + * the SCA service or reference must be available to the SCA service or + * reference. + */ + @Test + @Ignore("TUSCANY-2298") + public void testWsdlService() throws Exception { + AClientService aClientS11 = ServiceFinder.getService(AClientService.class, "AClientS11Component"); + Assert.assertEquals("Hello Pandu", aClientS11.getGreetingsForward("Pandu")); + AClientService aClientS12 = ServiceFinder.getService(AClientService.class, "AClientS12Component"); + Assert.assertEquals("Hello Pandu", aClientS12.getGreetingsForward("Pandu")); + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/pom.xml b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/pom.xml new file mode 100644 index 0000000000..648aa920e8 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/pom.xml @@ -0,0 +1,58 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-wsbinding-wsdlelement + 2.0-SNAPSHOT + ../pom.xml + + vtest-wsbinding-wsdlelement-binding + Apache Tuscany SCA Web Service Binding Verification Tests - WSDL wsdlElement wsdl.binding + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-ws-axis2 + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-tomcat + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/AService.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/AService.java new file mode 100644 index 0000000000..2f6db92318 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/AService.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.wsbinding.wsdlelement.binding; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for AService. + */ +@Remotable +public interface AService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + + public String getB2String(String aString); + + public int getB2Int(int i); +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/BService.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/BService.java new file mode 100644 index 0000000000..a040adb113 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/BService.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.vtest.wsbinding.wsdlelement.binding; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/BService2.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/BService2.java new file mode 100644 index 0000000000..3195263584 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/BService2.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.vtest.wsbinding.wsdlelement.binding; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BService2 { + + public String getString(String aString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/CService.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/CService.java new file mode 100644 index 0000000000..aed5abebf4 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/CService.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.vtest.wsbinding.wsdlelement.binding; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface CService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public Integer getInteger(Integer i); + + public float getFloat(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/DService.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/DService.java new file mode 100644 index 0000000000..3386ea709f --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/DService.java @@ -0,0 +1,45 @@ +/* + * 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.vtest.wsbinding.wsdlelement.binding; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for DService. + */ +@Remotable +public interface DService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + + public String getC1String(String aString); + + public String getC1String2(String aString, String bString); + + public Integer getC1Integer(Integer i); + + public float getC1Float(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/AServiceImpl.java new file mode 100644 index 0000000000..853cc74d4e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/AServiceImpl.java @@ -0,0 +1,63 @@ +/* + * 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.vtest.wsbinding.wsdlelement.binding.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.binding.AService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.binding.BService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.binding.BService2; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference(required=false) + public BService b1; + + @Reference(required=false) + public BService2 b2; + + public String getName() { + return "AService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + + public String getB2String(String aString) { + return b2.getString(aString); + } + + public int getB2Int(int i) { + return b2.getInt(i); + } + +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/BService2Impl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/BService2Impl.java new file mode 100644 index 0000000000..43051d6f10 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/BService2Impl.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.wsbinding.wsdlelement.binding.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.binding.BService2; +import org.oasisopen.sca.annotation.Service; + +@Service(BService2.class) +public class BService2Impl implements BService2 { + + public String getName() { + return "BService"; + } + + public String getString(String aString) { + return aString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/BServiceImpl.java new file mode 100644 index 0000000000..5496362e34 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/BServiceImpl.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.vtest.wsbinding.wsdlelement.binding.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.binding.BService; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +public class BServiceImpl implements BService { + + public String getName() { + return "BService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/CServiceImpl.java new file mode 100644 index 0000000000..63753d4ba7 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/CServiceImpl.java @@ -0,0 +1,48 @@ +/* + * 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.vtest.wsbinding.wsdlelement.binding.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.binding.CService; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl implements CService { + + public String getName() { + return "CService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public Integer getInteger(Integer i) { + return i; + } + + public float getFloat(float f) { + return f; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/DServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/DServiceImpl.java new file mode 100644 index 0000000000..0a268ff447 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/impl/DServiceImpl.java @@ -0,0 +1,70 @@ +/* + * 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.vtest.wsbinding.wsdlelement.binding.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.binding.BService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.binding.CService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.binding.DService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements DService. + */ +@Service(DService.class) +public class DServiceImpl implements DService { + + @Reference + public BService b1; + + @Reference + public CService c1; + + public String getName() { + return "DService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + + public String getC1String(String aString) { + return c1.getString(aString); + } + + public String getC1String2(String aString, String bString) { + return c1.getString2(aString, bString); + } + + public Integer getC1Integer(Integer i) { + return c1.getInteger(i); + } + + public float getC1Float(float f) { + return c1.getFloat(f); + } +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/resources/bservice.wsdl b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/resources/bservice.wsdl new file mode 100644 index 0000000000..8ce0fbaeb8 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/resources/bservice.wsdl @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/resources/cservice.wsdl b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/resources/cservice.wsdl new file mode 100644 index 0000000000..ff151faa7a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/resources/cservice.wsdl @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/resources/wsdlelement.binding.composite b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/resources/wsdlelement.binding.composite new file mode 100644 index 0000000000..6b97b5e602 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/main/resources/wsdlelement.binding.composite @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/WsdlElementBindingTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/WsdlElementBindingTestCase.java new file mode 100644 index 0000000000..f30cf38654 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/binding/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/binding/WsdlElementBindingTestCase.java @@ -0,0 +1,190 @@ +/* + * 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.vtest.wsbinding.wsdlelement.binding; + +import static org.junit.Assert.fail; +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.binding.AService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.binding.DService; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests the simplest form of the binding element wsdl.binding with WSDL + * document described in section section 2.1 of SCA Web Services Binding + * V1.00
    + */ +public class WsdlElementBindingTestCase { + + protected static ServiceFinder serviceFinder; + protected static String compositeName = "wsdlelement.binding.composite"; + protected static AService a1; + protected static AService a2; + protected static AService a3; + protected static AService a4; + protected static DService d; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + a1 = ServiceFinder.getService(AService.class, "AComponent1"); + a2 = ServiceFinder.getService(AService.class, "AComponent2"); + a3 = ServiceFinder.getService(AService.class, "AComponent3"); + a4 = ServiceFinder.getService(AService.class, "AComponent4"); + d = ServiceFinder.getService(DService.class, "DComponent1"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 50-54:
    + * Binding:
    + * #wsdl.binding()
    + * In this case, the identified WSDL binding must have an equivalent + * PortType with the SCA service or reference. In this case the endpoint + * address URI for the SCA service or reference must be provided via the + * URI attribute on the binding.
    + *
    + * Tests wsdl.binding(BService1SOAPBinding)
    + */ + @Test + public void testWsdlElementBinding1() throws Exception { + String aName = a1.getName(); + String b1Str1 = a1.getB1String("string1"); + String b1Str2 = a1.getB1String2("string2", "string3"); + int b1Int = a1.getB1Int(1000); + + System.out.println(aName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(1000, b1Int); + } + + /** + * Lines 50-54:
    + * Binding:
    + *
    + * Tests wsdl.binding(BService2SOAPBinding) with BService where the binding + * does not define getString2, so exceptions are expected.
    + */ + @Test + public void testWsdlElementBinding2() throws Exception { + String aName = a2.getName(); + System.out.println(aName + ": "); + try { + a2.getB1String("string1"); + fail("Should not be able to call getString"); + } catch (Exception e) { + System.out.println(" Exception is expected: " + e.toString()); + } + try { + a2.getB1String2("string2", "string3"); + fail("Should not be able to call getString2"); + } catch (Exception e) { + System.out.println(" Exception is expected: " + e.toString()); + } + try { + a2.getB1Int(2000); + fail("Should not be able to call getInt"); + } catch (Exception e) { + System.out.println(" Exception is expected: " + e.toString()); + } + } + + /** + * Lines 50-54:
    + * Binding:
    + *
    + * Tests wsdl.binding(BService2SOAPBinding) with BService2
    + */ + @Test + public void testWsdlElementBinding3() throws Exception { + String aName = a3.getName(); + String b2Str1 = a3.getB2String("string1"); + int b2Int = a3.getB2Int(3000); + + System.out.println(aName + ": " + b2Str1 + ", " + b2Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b2Str1); + Assert.assertEquals(3000, b2Int); + } + + /** + * Lines 50-54:
    + * Binding:
    + *
    + * Tests two references using wsdl.binding.
    + */ + @Test + public void testWsdlElementBinding4() throws Exception { + String dName = d.getName(); + String b1Str1 = d.getB1String("string1"); + String b1Str2 = d.getB1String2("string2", "string3"); + String c1Str1 = d.getC1String("string5"); + String c1Str2 = d.getC1String2("string6", "string7"); + + int b1Int = d.getB1Int(4000); + float c1Float = d.getC1Float((float) 8.8); + + Integer c1Integer = d.getC1Integer(new Integer(9000)); + + System.out.println(dName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int + ", " + c1Str1 + ", " + c1Str2 + ", " + c1Float + ", " + c1Integer); + Assert.assertEquals("DService", dName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(4000, b1Int); + Assert.assertEquals("string5", c1Str1); + Assert.assertEquals("string6string7", c1Str2); + Assert.assertEquals((float) 8.8, c1Float); + Assert.assertEquals(new Integer(9000), c1Integer); + } + + /** + * Lines 50-54:
    + * Binding:
    + *
    + * Tests wsdl.binding(BService3SOAP12Binding) which uses SOAP 1.2
    + */ + @Test + public void testWsdlElementBinding5() throws Exception { + String aName = a4.getName(); + String b1Str1 = a4.getB1String("string1"); + String b1Str2 = a4.getB1String2("string2", "string3"); + int b1Int = a4.getB1Int(5000); + + System.out.println(aName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(5000, b1Int); + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/pom.xml b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/pom.xml new file mode 100644 index 0000000000..13b0f4ea8c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/pom.xml @@ -0,0 +1,68 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-wsbinding + 2.0-SNAPSHOT + ../pom.xml + + vtest-wsbinding-wsdlelement + pom + Apache Tuscany SCA Web Service Binding Verification Tests - wsdlElement + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-ws-axis2 + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + vtest-utilities + 2.0-SNAPSHOT + runtime + + + + + + + + default + + true + + + service + port + binding + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/pom.xml b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/pom.xml new file mode 100644 index 0000000000..e47ca9c9da --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/pom.xml @@ -0,0 +1,58 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-wsbinding-wsdlelement + 2.0-SNAPSHOT + ../pom.xml + + vtest-wsbinding-wsdlelement-port + Apache Tuscany SCA Web Service Binding Verification Tests - WSDL wsdlElement wsdl.port + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-ws-axis2 + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-tomcat + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/AService.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/AService.java new file mode 100644 index 0000000000..6fa9906d45 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/AService.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.wsbinding.wsdlelement.port; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for AService. + */ +@Remotable +public interface AService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + + public String getB2String(String aString); + + public int getB2Int(int i); +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/BService.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/BService.java new file mode 100644 index 0000000000..978d515f92 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/BService.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.vtest.wsbinding.wsdlelement.port; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/BService2.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/BService2.java new file mode 100644 index 0000000000..766139ee92 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/BService2.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.vtest.wsbinding.wsdlelement.port; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BService2 { + + public String getString(String aString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/CService.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/CService.java new file mode 100644 index 0000000000..ee9ca25a4b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/CService.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.vtest.wsbinding.wsdlelement.port; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface CService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public Integer getInteger(Integer i); + + public float getFloat(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/DService.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/DService.java new file mode 100644 index 0000000000..80d998d1a6 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/DService.java @@ -0,0 +1,45 @@ +/* + * 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.vtest.wsbinding.wsdlelement.port; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for DService. + */ +@Remotable +public interface DService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + + public String getC1String(String aString); + + public String getC1String2(String aString, String bString); + + public Integer getC1Integer(Integer i); + + public float getC1Float(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/AServiceImpl.java new file mode 100644 index 0000000000..bec82776bf --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/AServiceImpl.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 org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.port.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.port.AService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.port.BService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.port.BService2; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference(required=false) + public BService b1; + + @Reference(required=false) + public BService2 b2; + + public String getName() { + return "AService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + + public String getB2String(String aString) { + return b2.getString(aString); + } + + public int getB2Int(int i) { + return b2.getInt(i); + } +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/BService2Impl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/BService2Impl.java new file mode 100644 index 0000000000..b379a2e3ef --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/BService2Impl.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.wsbinding.wsdlelement.port.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.port.BService2; +import org.oasisopen.sca.annotation.Service; + +@Service(BService2.class) +public class BService2Impl implements BService2 { + + public String getName() { + return "BService2"; + } + + public String getString(String aString) { + return aString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/BServiceImpl.java new file mode 100644 index 0000000000..069308a520 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/BServiceImpl.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.vtest.wsbinding.wsdlelement.port.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.port.BService; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +public class BServiceImpl implements BService { + + public String getName() { + return "BService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/CServiceImpl.java new file mode 100644 index 0000000000..7ad9e3066c --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/CServiceImpl.java @@ -0,0 +1,48 @@ +/* + * 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.vtest.wsbinding.wsdlelement.port.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.port.CService; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl implements CService { + + public String getName() { + return "CService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public Integer getInteger(Integer i) { + return i; + } + + public float getFloat(float f) { + return f; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/DServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/DServiceImpl.java new file mode 100644 index 0000000000..58ae1e9577 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/impl/DServiceImpl.java @@ -0,0 +1,70 @@ +/* + * 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.vtest.wsbinding.wsdlelement.port.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.port.BService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.port.CService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.port.DService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements DService. + */ +@Service(DService.class) +public class DServiceImpl implements DService { + + @Reference + public BService b1; + + @Reference + public CService c1; + + public String getName() { + return "DService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + + public String getC1String(String aString) { + return c1.getString(aString); + } + + public String getC1String2(String aString, String bString) { + return c1.getString2(aString, bString); + } + + public Integer getC1Integer(Integer i) { + return c1.getInteger(i); + } + + public float getC1Float(float f) { + return c1.getFloat(f); + } +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/resources/bservice.wsdl b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/resources/bservice.wsdl new file mode 100644 index 0000000000..d5c8d72dc1 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/resources/bservice.wsdl @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/resources/cservice.wsdl b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/resources/cservice.wsdl new file mode 100644 index 0000000000..8a715a2081 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/resources/cservice.wsdl @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/resources/wsdlelement.port.composite b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/resources/wsdlelement.port.composite new file mode 100644 index 0000000000..5b9b77683e --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/main/resources/wsdlelement.port.composite @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/WsdlElementPortTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/WsdlElementPortTestCase.java new file mode 100644 index 0000000000..0db579002b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/port/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/port/WsdlElementPortTestCase.java @@ -0,0 +1,188 @@ +/* + * 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.vtest.wsbinding.wsdlelement.port; + +import static org.junit.Assert.fail; +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.port.AService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.port.DService; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests the simplest form of the binding element wsdl.port with WSDL + * document described in section section 2.1 of SCA Web Services Binding + * V1.00
    + */ +public class WsdlElementPortTestCase { + + protected static ServiceFinder serviceFinder; + protected static String compositeName = "wsdlelement.port.composite"; + protected static AService a1; + protected static AService a2; + protected static AService a3; + protected static AService a4; + protected static DService d; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + a1 = ServiceFinder.getService(AService.class, "AComponent1"); + a2 = ServiceFinder.getService(AService.class, "AComponent2"); + a3 = ServiceFinder.getService(AService.class, "AComponent3"); + a4 = ServiceFinder.getService(AService.class, "AComponent4"); + d = ServiceFinder.getService(DService.class, "DComponent1"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 42-45:
    + * Port (WSDL 1.1):
    + * #wsdl.port(/) + * In this case, the identified port in the WSDL 1.1 Service must have an + * equivalent PortType with the SCA service or reference.
    + *
    + * Test wsdl.port(BService/BService1SOAP)
    + */ + @Test + public void testWsdlElementPort1() throws Exception { + String aName = a1.getName(); + String b1Str1 = a1.getB1String("string1"); + String b1Str2 = a1.getB1String2("string2", "string3"); + int b1Int = a1.getB1Int(1000); + + System.out.println(aName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(1000, b1Int); + } + + /** + * Lines 42-45:
    + * Port (WSDL 1.1):
    + *
    + * Tests wsdl.port(BService/BService2SOAP) with BService where the port + * does not define getString2, so exceptions are expected.
    + */ + @Test + public void testWsdlElementPort2() throws Exception { + String aName = a2.getName(); + System.out.println(aName + ": "); + try { + a2.getB1String("string1"); + fail("Should not be able to call getString"); + } catch (Exception e) { + System.out.println(" Exception is expected: " + e.toString()); + } + try { + a2.getB1String2("string2", "string3"); + fail("Should not be able to call getString2"); + } catch (Exception e) { + System.out.println(" Exception is expected: " + e.toString()); + } + try { + a2.getB1Int(2000); + fail("Should not be able to call getInt"); + } catch (Exception e) { + System.out.println(" Exception is expected: " + e.toString()); + } + } + + /** + * Lines 42-45:
    + * Port (WSDL 1.1):
    + *
    + * Tests wsdl.port(BService/BService2SOAP) with BService2
    + */ + @Test + public void testWsdlElementPort3() throws Exception { + String aName = a3.getName(); + String b2Str1 = a3.getB2String("string1"); + int b2Int = a3.getB2Int(1000); + + System.out.println(aName + ": " + b2Str1 + ", " + b2Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b2Str1); + Assert.assertEquals(1000, b2Int); + } + + /** + * Lines 42-45:
    + * Port (WSDL 1.1):
    + *
    += * Tests two references using wsdl.port.
    + */ + @Test + public void testWsdlElementPort4() throws Exception { + String dName = d.getName(); + String b1Str1 = d.getB1String("string1"); + String b1Str2 = d.getB1String2("string2", "string3"); + String c1Str1 = d.getC1String("string5"); + String c1Str2 = d.getC1String2("string6", "string7"); + + int b1Int = d.getB1Int(4000); + float c1Float = d.getC1Float((float) 8.8); + + Integer c1Integer = d.getC1Integer(new Integer(9000)); + + System.out.println(dName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int + ", " + c1Str1 + ", " + c1Str2 + ", " + c1Float + ", " + c1Integer); + Assert.assertEquals("DService", dName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(4000, b1Int); + Assert.assertEquals("string5", c1Str1); + Assert.assertEquals("string6string7", c1Str2); + Assert.assertEquals((float) 8.8, c1Float); + Assert.assertEquals(new Integer(9000), c1Integer); + } + + /** + * Lines 42-45:
    + * Port (WSDL 1.1):
    + *
    += * Tests wsdl.port(BService/BService3SOAP12) which uses SOAP 1.2
    + */ + @Test + public void testWsdlElementPort5() throws Exception { + String aName = a4.getName(); + String b1Str1 = a4.getB1String("string1"); + String b1Str2 = a4.getB1String2("string2", "string3"); + int b1Int = a4.getB1Int(5000); + + System.out.println(aName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(5000, b1Int); + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/pom.xml b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/pom.xml new file mode 100644 index 0000000000..39f2c45921 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/pom.xml @@ -0,0 +1,58 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + vtest-wsbinding-wsdlelement + 2.0-SNAPSHOT + ../pom.xml + + vtest-wsbinding-wsdlelement-service + Apache Tuscany SCA Web Service Binding Verification Tests - WSDL wsdlElement wsdl.service + + + + org.apache.tuscany.sca + tuscany-host-embedded + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-binding-ws-axis2 + 2.0-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-host-tomcat + 2.0-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 2.0-SNAPSHOT + runtime + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/AService.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/AService.java new file mode 100644 index 0000000000..464a834570 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/AService.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.vtest.wsbinding.wsdlelement.service; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for AService. + */ +@Remotable +public interface AService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + + public String getB2String(String aString); + + public int getB2Int(int i); + + public String getB3String(String aString); + + public int getB3Int(int i); + + public String getB4String(String aString); + + public String getB4String2(String aString, String bString); + + public int getB4Int(int i); +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/BService.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/BService.java new file mode 100644 index 0000000000..37ccee6cd4 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/BService.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.vtest.wsbinding.wsdlelement.service; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/BService2.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/BService2.java new file mode 100644 index 0000000000..c8355f8f1b --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/BService2.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.vtest.wsbinding.wsdlelement.service; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface BService2 { + + public String getString(String aString); + + public int getInt(int i); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/CService.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/CService.java new file mode 100644 index 0000000000..d3f5ab1c47 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/CService.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.vtest.wsbinding.wsdlelement.service; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * Simple Service used by another service + */ +@Remotable +public interface CService { + + public String getString(String aString); + + public String getString2(String aString, String bString); + + public Integer getInteger(Integer i); + + public float getFloat(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/DService.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/DService.java new file mode 100644 index 0000000000..1a64706a29 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/DService.java @@ -0,0 +1,45 @@ +/* + * 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.vtest.wsbinding.wsdlelement.service; + +import org.oasisopen.sca.annotation.Remotable; + +/** + * The interface for DService. + */ +@Remotable +public interface DService { + + public String getName(); + + public String getB1String(String aString); + + public String getB1String2(String aString, String bString); + + public int getB1Int(int i); + + public String getC1String(String aString); + + public String getC1String2(String aString, String bString); + + public Integer getC1Integer(Integer i); + + public float getC1Float(float f); + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/AServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/AServiceImpl.java new file mode 100644 index 0000000000..986027c08a --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/AServiceImpl.java @@ -0,0 +1,88 @@ +/* + * 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.vtest.wsbinding.wsdlelement.service.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.service.AService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.service.BService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.service.BService2; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements AService. + */ +@Service(AService.class) +public class AServiceImpl implements AService { + + @Reference(required=false) + public BService b1; + + @Reference(required=false) + public BService2 b2; + + @Reference(required=false) + public BService2 b3; + + @Reference(required=false) + public BService b4; + + public String getName() { + return "AService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + + public String getB2String(String aString) { + return b2.getString(aString); + } + + public int getB2Int(int i) { + return b2.getInt(i); + } + + public String getB3String(String aString) { + return b3.getString(aString); + } + + public int getB3Int(int i) { + return b3.getInt(i); + } + + public String getB4String(String aString) { + return b4.getString(aString); + } + + public String getB4String2(String aString, String bString) { + return b4.getString2(aString, bString); + } + + public int getB4Int(int i) { + return b4.getInt(i); + } +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/BService2Impl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/BService2Impl.java new file mode 100644 index 0000000000..a58297de69 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/BService2Impl.java @@ -0,0 +1,40 @@ +/* + * 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.vtest.wsbinding.wsdlelement.service.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.service.BService2; +import org.oasisopen.sca.annotation.Service; + +@Service(BService2.class) +public class BService2Impl implements BService2 { + + public String getName() { + return "BService"; + } + + public String getString(String aString) { + return aString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/BServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/BServiceImpl.java new file mode 100644 index 0000000000..3ecbc95901 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/BServiceImpl.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.vtest.wsbinding.wsdlelement.service.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.service.BService; +import org.oasisopen.sca.annotation.Service; + +@Service(BService.class) +public class BServiceImpl implements BService { + + public String getName() { + return "BService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public int getInt(int i) { + return i; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/CServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/CServiceImpl.java new file mode 100644 index 0000000000..05af362a25 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/CServiceImpl.java @@ -0,0 +1,48 @@ +/* + * 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.vtest.wsbinding.wsdlelement.service.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.service.CService; +import org.oasisopen.sca.annotation.Service; + +@Service(CService.class) +public class CServiceImpl implements CService { + + public String getName() { + return "CService"; + } + + public String getString(String aString) { + return aString; + } + + public String getString2(String aString, String bString) { + return aString + bString; + } + + public Integer getInteger(Integer i) { + return i; + } + + public float getFloat(float f) { + return f; + } + +} diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/DServiceImpl.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/DServiceImpl.java new file mode 100644 index 0000000000..dadbb63873 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/impl/DServiceImpl.java @@ -0,0 +1,70 @@ +/* + * 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.vtest.wsbinding.wsdlelement.service.impl; + +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.service.BService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.service.CService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.service.DService; +import org.oasisopen.sca.annotation.Reference; +import org.oasisopen.sca.annotation.Service; + +/** + * This class implements DService. + */ +@Service(DService.class) +public class DServiceImpl implements DService { + + @Reference + public BService b1; + + @Reference + public CService c1; + + public String getName() { + return "DService"; + } + + public String getB1String(String aString) { + return b1.getString(aString); + } + + public String getB1String2(String aString, String bString) { + return b1.getString2(aString, bString); + } + + public int getB1Int(int i) { + return b1.getInt(i); + } + + public String getC1String(String aString) { + return c1.getString(aString); + } + + public String getC1String2(String aString, String bString) { + return c1.getString2(aString, bString); + } + + public Integer getC1Integer(Integer i) { + return c1.getInteger(i); + } + + public float getC1Float(float f) { + return c1.getFloat(f); + } +} \ No newline at end of file diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/resources/bservice.wsdl b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/resources/bservice.wsdl new file mode 100644 index 0000000000..521f077c46 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/resources/bservice.wsdl @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/resources/cservice.wsdl b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/resources/cservice.wsdl new file mode 100644 index 0000000000..bdf294b473 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/resources/cservice.wsdl @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/resources/wsdlelement.service.composite b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/resources/wsdlelement.service.composite new file mode 100644 index 0000000000..9801ecd037 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/main/resources/wsdlelement.service.composite @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/WsdlElementServiceTestCase.java b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/WsdlElementServiceTestCase.java new file mode 100644 index 0000000000..22d2a80244 --- /dev/null +++ b/sca-java-2.x/contrib/vtest/wsbinding/wsdlelement/service/src/test/java/org/apache/tuscany/sca/vtest/wsbinding/wsdlelement/service/WsdlElementServiceTestCase.java @@ -0,0 +1,235 @@ +/* + * 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.vtest.wsbinding.wsdlelement.service; + +import static org.junit.Assert.fail; +import junit.framework.Assert; + +import org.apache.tuscany.sca.vtest.utilities.ServiceFinder; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.service.AService; +import org.apache.tuscany.sca.vtest.wsbinding.wsdlelement.service.DService; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests the simplest form of the binding element wsdl.service with WSDL + * document described in section section 2.1 of SCA Web Services Binding + * V1.00
    + */ +public class WsdlElementServiceTestCase { + + protected static ServiceFinder serviceFinder; + protected static String compositeName = "wsdlelement.service.composite"; + protected static AService a1; + protected static AService a2; + protected static AService a3; + protected static AService a4; + protected static AService a5; + protected static DService d; + + @BeforeClass + public static void init() throws Exception { + try { + System.out.println("Setting up"); + ServiceFinder.init(compositeName); + a1 = ServiceFinder.getService(AService.class, "AComponent1"); + a2 = ServiceFinder.getService(AService.class, "AComponent2"); + a3 = ServiceFinder.getService(AService.class, "AComponent3"); + a4 = ServiceFinder.getService(AService.class, "AComponent4"); + a5 = ServiceFinder.getService(AService.class, "AComponent5"); + d = ServiceFinder.getService(DService.class, "DComponent1"); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + /** + * Lines 38-41:
    + * Service:
    + * #wsdl.service()
    + * In this case, all the endpoints in the WSDL Service that have equivalent + * PortTypes with the SCA service or reference must be available to the SCA + * service or reference.
    + *
    + * Tests wsdl.service(BService)
    + */ + @Test + public void testWsdlElementService1() throws Exception { + String aName = a1.getName(); + String b1Str1 = a1.getB1String("string1"); + String b1Str2 = a1.getB1String2("string2", "string3"); + int b1Int = a1.getB1Int(1000); + + System.out.println(aName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(1000, b1Int); + } + + /** + * Lines 38-41:
    + * Service:
    + *
    + * Tests wsdl.service(BService2) with with BService where the service + * does not define getString2, so exceptions are expected.
    + */ + @Test + public void testWsdlElementService2() throws Exception { + String aName = a2.getName(); + System.out.println(aName + ": "); + try { + a2.getB1String("string1"); + fail("Should not be able to call getString"); + } catch (Exception e) { + System.out.println(" Exception is expected: " + e.toString()); + } + try { + a2.getB1String2("string2", "string3"); + fail("Should not be able to call getString2"); + } catch (Exception e) { + System.out.println(" Exception is expected: " + e.toString()); + } + try { + a2.getB1Int(2000); + fail("Should not be able to call getInt"); + } catch (Exception e) { + System.out.println(" Exception is expected: " + e.toString()); + } + } + + /** + * Lines 38-41:
    + * Service:
    + *
    + * Tests wsdl.service(BService2) with BService2
    + */ + @Test + public void testWsdlElementService3() throws Exception { + String aName = a3.getName(); + String b2Str1 = a3.getB2String("string1"); + int b2Int = a3.getB2Int(1000); + + System.out.println(aName + ": " + b2Str1 + ", " + b2Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b2Str1); + Assert.assertEquals(1000, b2Int); + } + + /** + * Lines 38-41:
    + * Service:
    + *
    + * Tests two references using wsdl.service.
    + */ + @Test + public void testWsdlElementService4() throws Exception { + String dName = d.getName(); + String b1Str1 = d.getB1String("string1"); + String b1Str2 = d.getB1String2("string2", "string3"); + String c1Str1 = d.getC1String("string5"); + String c1Str2 = d.getC1String2("string6", "string7"); + + int b1Int = d.getB1Int(4000); + float c1Float = d.getC1Float((float) 8.8); + + Integer c1Integer = d.getC1Integer(new Integer(9000)); + + System.out.println(dName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int + ", " + c1Str1 + ", " + c1Str2 + ", " + c1Float + ", " + c1Integer); + Assert.assertEquals("DService", dName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(4000, b1Int); + Assert.assertEquals("string5", c1Str1); + Assert.assertEquals("string6string7", c1Str2); + Assert.assertEquals((float) 8.8, c1Float); + Assert.assertEquals(new Integer(9000), c1Integer); + } + + /** + * Lines 38-41:
    + * Service:
    + *
    + * Tests mixed bindings of using wsdl.port, wsdl.service, wsdl.binding, + * and soap 1.2 + *
    + */ + @Test + public void testWsdlElementService5() throws Exception { + String aName = a4.getName(); + String b1Str1 = a4.getB1String("port"); + String b1Str2 = a4.getB1String2("string1", "string2"); + int b1Int = a4.getB1Int(1000); + System.out.println(aName); + System.out.println(" b1: " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("port", b1Str1); + Assert.assertEquals("string1string2", b1Str2); + Assert.assertEquals(1000, b1Int); + + String b2Str1 = a4.getB2String("service"); + int b2Int = a4.getB2Int(2000); + System.out.println(" b2: " + b2Str1 + ", " + b2Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("service", b2Str1); + Assert.assertEquals(2000, b2Int); + + String b3Str1 = a4.getB3String("binding"); + int b3Int = a4.getB3Int(3000); + System.out.println(" b3: " + b3Str1 + ", " + b3Int); + Assert.assertEquals("binding", b3Str1); + Assert.assertEquals(3000, b3Int); + + String b4Str1 = a4.getB4String("soap12"); + String b4Str2 = a4.getB4String2("string3", "string4"); + int b4Int = a4.getB4Int(4000); + System.out.println(" b4: " + b4Str1 + ", " + b4Str2 + ", " + b4Int); + Assert.assertEquals("soap12", b4Str1); + Assert.assertEquals("string3string4", b4Str2); + Assert.assertEquals(4000, b4Int); + + } + + /** + * Lines 38-41:
    + * Service:
    + *
    + * Tests wsdl.service(BService3) which uses SOAP 1.2
    + */ + @Test + public void testWsdlElementService6() throws Exception { + String aName = a5.getName(); + String b1Str1 = a5.getB1String("string1"); + String b1Str2 = a5.getB1String2("string2", "string3"); + int b1Int = a5.getB1Int(6000); + + System.out.println(aName + ": " + b1Str1 + ", " + b1Str2 + ", " + b1Int); + Assert.assertEquals("AService", aName); + Assert.assertEquals("string1", b1Str1); + Assert.assertEquals("string2string3", b1Str2); + Assert.assertEquals(6000, b1Int); + } + + @AfterClass + public static void destroy() throws Exception { + System.out.println("Cleaning up"); + ServiceFinder.cleanup(); + } +} -- cgit v1.2.3