[jira] [Updated] (TUSCANY-3459) JSON-RPC (and other) binding fails if Interface is marked as remotable only in the composite

2012-02-18 Thread Simon Laws (Updated) (JIRA)

 [ 
https://issues.apache.org/jira/browse/TUSCANY-3459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Simon Laws updated TUSCANY-3459:


Attachment: 3459.patch

General changes to make the infrastructure apply the remotable overide. 

 JSON-RPC (and other) binding fails if Interface is marked as remotable only 
 in the composite 
 -

 Key: TUSCANY-3459
 URL: https://issues.apache.org/jira/browse/TUSCANY-3459
 Project: Tuscany
  Issue Type: Bug
  Components: Java SCA Integration Tests
Affects Versions: Java-SCA-2.x
Reporter: Luciano Resende
Assignee: Luciano Resende
 Fix For: Java-SCA-2.x

 Attachments: 3459.patch


 public interface Catalog {
 Item[] get();
 }
   component name=VegetablesCatalog
   implementation.java class=services.sca.FruitsCatalogImpl/ 
   service name=Catalog
   interface.java interface=services.Catalog 
 remotable=true/
   tuscany:binding.jsonrpc 
 uri=http://localhost:8085/VegetableCatalog; /
   /service  
   /component 
 at $Proxy7.get(Unknown Source)
   at services.sca.CatalogAggregatorImpl.get(CatalogAggregatorImpl.java:40)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at 
 org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:115)
   at 
 org.apache.tuscany.sca.binding.sca.provider.SCABindingInvoker.invoke(SCABindingInvoker.java:61)
   at 
 org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:236)
   at 
 org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:106)
   at $Proxy7.get(Unknown Source)
   at 
 org.apache.tuscany.sca.performance.CatalogRemoteJsonRPCTest.testCatalog(CatalogRemoteJsonRPCTest.java:46)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
   at junit.extensions.TestDecorator.run(TestDecorator.java:32)
   at junit.extensions.RepeatedTest.run(RepeatedTest.java:30)
   at com.clarkware.junitperf.ThreadedTest$TestRunner.run(Unknown Source)
   at java.lang.Thread.run(Thread.java:637)
 Caused by: org.jabsorb.serializer.UnmarshallException: element 0 no 
 serializer found that can unmarshall java.lang.String to services.Item
   at 
 org.jabsorb.serializer.impl.ArraySerializer.unmarshall(ArraySerializer.java:216)
   at org.jabsorb.JSONSerializer.unmarshall(JSONSerializer.java:692)
   at org.jabsorb.client.Client.invoke(Client.java:226)
   at org.jabsorb.client.Client.invoke(Client.java:156)
   at 
 org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCClientInvoker.invoke(JSONRPCClientInvoker.java:60)
   at 
 org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:236)
   at 
 org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:106)
   ... 27 more
 Caused by: org.jabsorb.serializer.UnmarshallException: no serializer found 
 that can unmarshall java.lang.String to services.Item
   at org.jabsorb.JSONSerializer.unmarshall(JSONSerializer.java:705)
   at 
 org.jabsorb.serializer.impl.ArraySerializer.unmarshall(ArraySerializer.java:209)
   ... 33 more

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




Re: Overriding remotable

2012-02-18 Thread Simon Laws
On Fri, Feb 17, 2012 at 6:08 PM, Luciano Resende luckbr1...@gmail.com wrote:
 On Fri, Feb 17, 2012 at 8:02 AM, Simon Laws simonsl...@googlemail.com wrote:
 In the OASIS spec you can override the remotable status of an
 interface using the remotable flag on the interface element:

    component name=HelloworldComponent
        implementation.java class=sample.HelloworldImpl/
        service name=HelloworldImpl
           interface.java interface=sample.Helloworld remotable=true/
           binding.ws/
        /service
    /component

 The idea is that when Helloworld looks like

 public interface Helloworld {
    String sayHello(String name);
 }

 You can use the flag to set the interface remotable. When Helloworld looks 
 like

 @Remotable
 public interface Helloworld {
    String sayHello(String name);
 }

 Then you can't use the flag to unset it.

 There is a JIRA about this not working properly [1]. I've just been
 looking at it. The problem is that we don't actually set remotable
 based on this flag. This is a relatively straighforward thing to fix
 but it leads to a question. In some of the databinding code there are
 tests for remotable which prevents further processing if an interface
 is not remotable. For example, DataBindingjavaInterfaceProcessor has

    public void visitInterface(JavaInterface javaInterface) throws
 InvalidInterfaceException {
        if (!javaInterface.isRemotable()) {
            return;
        }
        ListOperation operations = javaInterface.getOperations();
        processInterface(javaInterface, operations);
    }

 This will run during introspection which is before we get to the
 stage, in the builders, where the component and component type
 interfaces are compared and where it would be sensible to apply the
 override. I can make it work if I let this databinding processing
 happen for non-remote interfaces just in case someone decides to
 override them. Can anyone see a downside other than the extra
 processing time it takes to calculate the interface types?


 [1] https://issues.apache.org/jira/browse/TUSCANY-3459

 Simon
 --
 Apache Tuscany committer: tuscany.apache.org
 Co-author of a book about Tuscany and SCA: tuscanyinaction.com

 It seems that there were some more issues around this (see [1])...
 I'll try to dig out some more and see if I can remember little more
 from when I was working on this in the past.

 [1] http://tuscany.markmail.org/thread/nfzvrtrgrkdhqfkp

 --
 Luciano Resende
 http://people.apache.org/~lresende
 http://twitter.com/lresende1975
 http://lresende.blogspot.com/

Ok, that's interesting Luciano. So I don't loose it I added a patch to
(https://issues.apache.org/jira/browse/TUSCANY-3459) with the changes
required to make the infrastructure apply the remotable override. It
passes all the tests we have active at the moment.

I don't really understand Raymond's comment It seems to me that we
pretty much don't differentiate local and remote interfaces any more
with such changes from the thread you linked to. It's not clear
whether this is a comment about the aesthetics of having a flag with
which to affect the remotable status of an interface or a comment
suggesting that the infrastructure relies on there being no
databinding set for local interfaces. I can have a look at some local
tests to see if there is any spurious databinding processing going on.

Simon
-- 
Apache Tuscany committer: tuscany.apache.org
Co-author of a book about Tuscany and SCA: tuscanyinaction.com


Re: Overriding remotable

2012-02-18 Thread Raymond Feng
Hi,

At that time, I was questioning the merit to introduce remotable
attribute in the composite to override the Java interface. Really, to make
the service remotable, the interface design has to take that into
consideration upfront, especially the data model (for example, DTO instead
of an Object).

Thanks,
Raymond

On Sat, Feb 18, 2012 at 9:15 AM, Simon Laws simonsl...@googlemail.comwrote:

 On Fri, Feb 17, 2012 at 6:08 PM, Luciano Resende luckbr1...@gmail.com
 wrote:
  On Fri, Feb 17, 2012 at 8:02 AM, Simon Laws simonsl...@googlemail.com
 wrote:
  In the OASIS spec you can override the remotable status of an
  interface using the remotable flag on the interface element:
 
 component name=HelloworldComponent
 implementation.java class=sample.HelloworldImpl/
 service name=HelloworldImpl
interface.java interface=sample.Helloworld
 remotable=true/
binding.ws/
 /service
 /component
 
  The idea is that when Helloworld looks like
 
  public interface Helloworld {
 String sayHello(String name);
  }
 
  You can use the flag to set the interface remotable. When Helloworld
 looks like
 
  @Remotable
  public interface Helloworld {
 String sayHello(String name);
  }
 
  Then you can't use the flag to unset it.
 
  There is a JIRA about this not working properly [1]. I've just been
  looking at it. The problem is that we don't actually set remotable
  based on this flag. This is a relatively straighforward thing to fix
  but it leads to a question. In some of the databinding code there are
  tests for remotable which prevents further processing if an interface
  is not remotable. For example, DataBindingjavaInterfaceProcessor has
 
 public void visitInterface(JavaInterface javaInterface) throws
  InvalidInterfaceException {
 if (!javaInterface.isRemotable()) {
 return;
 }
 ListOperation operations = javaInterface.getOperations();
 processInterface(javaInterface, operations);
 }
 
  This will run during introspection which is before we get to the
  stage, in the builders, where the component and component type
  interfaces are compared and where it would be sensible to apply the
  override. I can make it work if I let this databinding processing
  happen for non-remote interfaces just in case someone decides to
  override them. Can anyone see a downside other than the extra
  processing time it takes to calculate the interface types?
 
 
  [1] https://issues.apache.org/jira/browse/TUSCANY-3459
 
  Simon
  --
  Apache Tuscany committer: tuscany.apache.org
  Co-author of a book about Tuscany and SCA: tuscanyinaction.com
 
  It seems that there were some more issues around this (see [1])...
  I'll try to dig out some more and see if I can remember little more
  from when I was working on this in the past.
 
  [1] http://tuscany.markmail.org/thread/nfzvrtrgrkdhqfkp
 
  --
  Luciano Resende
  http://people.apache.org/~lresende
  http://twitter.com/lresende1975
  http://lresende.blogspot.com/

 Ok, that's interesting Luciano. So I don't loose it I added a patch to
 (https://issues.apache.org/jira/browse/TUSCANY-3459) with the changes
 required to make the infrastructure apply the remotable override. It
 passes all the tests we have active at the moment.

 I don't really understand Raymond's comment It seems to me that we
 pretty much don't differentiate local and remote interfaces any more
 with such changes from the thread you linked to. It's not clear
 whether this is a comment about the aesthetics of having a flag with
 which to affect the remotable status of an interface or a comment
 suggesting that the infrastructure relies on there being no
 databinding set for local interfaces. I can have a look at some local
 tests to see if there is any spurious databinding processing going on.

 Simon
 --
 Apache Tuscany committer: tuscany.apache.org
 Co-author of a book about Tuscany and SCA: tuscanyinaction.com



[jira] [Created] (TUSCANY-4017) Tuscany needs to process profile intents as in OSOA

2012-02-18 Thread Rashmi Hunt (Created) (JIRA)
Tuscany needs to process profile intents as in OSOA
---

 Key: TUSCANY-4017
 URL: https://issues.apache.org/jira/browse/TUSCANY-4017
 Project: Tuscany
  Issue Type: Bug
  Components: Java SCA Policy
Affects Versions: Java-SCA-2.0-Beta3
Reporter: Rashmi Hunt
 Fix For: Java-SCA-2.x


In OASIS Tuscany implementation, 'exactlyOnce'  intent is returned as is when I 
tried to get intent name 
from PolicySubject. 

In OSOA Tuscany, if 'exactlyOnce' intent is defined in the composite, Tuscany 
used to return it as
 'atleastOnce'/'atMostOnce' as intent name  ( 
PolicyComputationUtils.expandProfileIntents()) , which
seems to be missing in OASIS implementation




--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira