Uploaded image for project: 'Tuscany'
  1. Tuscany
  2. TUSCANY-1336

Tuscany does not support injecting a Callable Reference when using the @Callback annotation

    XMLWordPrintableJSON

Details

    Description

      Tuscany does not appear to support injecting of CallableReferences with the @Callback annotation.

      According to page 11 (lines 682 and 683) of the SCA Java Common Annotations and APIs version 1.0, I should be able to do the following:

      @Callback
      protected CallableReference<MyCallback> callback;

      I downloaded the SCA 0.90 release and updated the simple-callback sample and added the following code to MyServiceImpl:

      @Callback
      protected CallableReference<MyServiceCallback> m_CallbackReference;

      When the code is run, I get the following exception:

      [java] Exception in thread "main" org.osoa.sca.ServiceRuntimeException: org.osoa.sca.ServiceRuntimeException: org.apache.tuscany.sca.contribution.service.ContributionResolveException: org.apache.tuscany.sca.implementation.java.introspect.impl.IllegalCallbackReferenceException: Callback type does not match a service callback interface
      [java] at org.apache.tuscany.sca.host.embedded.SCADomain.createNewInstance(SCADomain.java:263)
      [java] at org.apache.tuscany.sca.host.embedded.SCADomain.newInstance(SCADomain.java:68)
      [java] at simplecallback.SimpleCallbackClient.main(SimpleCallbackClient.java:29)
      [java] Caused by: org.osoa.sca.ServiceRuntimeException: org.apache.tuscany.sca.contribution.service.ContributionResolveException: org.apache.tuscany.sca.implementation.java.introspect.impl.IllegalCallbackReferenceException: Callback type does not match a service callback interface
      [java] at org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.<init>(DefaultSCADomain.java:106)
      [java] at org.apache.tuscany.sca.host.embedded.SCADomain.createNewInstance(SCADomain.java:229)
      [java] ... 2 more
      [java] Caused by: org.apache.tuscany.sca.contribution.service.ContributionResolveException: org.apache.tuscany.sca.implementation.java.introspect.impl.IllegalCallbackReferenceException: Callback type does not match a service callback interface
      [java] at org.apache.tuscany.sca.implementation.java.xml.JavaImplementationProcessor.resolve(JavaImplementationProcessor.java:121)
      [java] at org.apache.tuscany.sca.implementation.java.xml.JavaImplementationProcessor.resolve(JavaImplementationProcessor.java:49)
      [java] at org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor.resolve(ExtensibleStAXArtifactProcessor.java:102)
      [java] at org.apache.tuscany.sca.assembly.xml.BaseArtifactProcessor.resolveImplementation(BaseArtifactProcessor.java:387)
      [java] at org.apache.tuscany.sca.assembly.xml.CompositeProcessor.resolve(CompositeProcessor.java:466)
      [java] at org.apache.tuscany.sca.assembly.xml.CompositeProcessor.resolve(CompositeProcessor.java:65)
      [java] at org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor.resolve(ExtensibleStAXArtifactProcessor.java:102)
      [java] at org.apache.tuscany.sca.assembly.xml.CompositeDocumentProcessor.resolve(CompositeDocumentProcessor.java:83)
      [java] at org.apache.tuscany.sca.assembly.xml.CompositeDocumentProcessor.resolve(CompositeDocumentProcessor.java:43)
      [java] at org.apache.tuscany.sca.contribution.processor.ExtensibleURLArtifactProcessor.resolve(ExtensibleURLArtifactProcessor.java:73)
      [java] at org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.processResolvePhase(ContributionServiceImpl.java:317)
      [java] at org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.addContribution(ContributionServiceImpl.java:254)
      [java] at org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl.contribute(ContributionServiceImpl.java:119)
      [java] at org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.<init>(DefaultSCADomain.java:104)
      [java] ... 3 more
      [java] Caused by: org.apache.tuscany.sca.implementation.java.introspect.impl.IllegalCallbackReferenceException: Callback type does not match a service callback interface
      [java] at org.apache.tuscany.sca.implementation.java.introspect.impl.ServiceProcessor.visitField(ServiceProcessor.java:137)
      [java] at org.apache.tuscany.sca.implementation.java.introspect.ExtensibleJavaClassIntrospector.introspect(ExtensibleJavaClassIntrospector.java:99)
      [java] at org.apache.tuscany.sca.implementation.java.xml.JavaImplementationProcessor.resolve(JavaImplementationProcessor.java:119)
      [java] ... 16 more

      It appears that it does not understand using CallableReference and @Callback

      Attachments

        1. CallableReferenceObjectFactory.java
          1 kB
          Mark Combellack

        Activity

          People

            simonslaws Simon Laws
            mcombell Mark Combellack
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: