You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Raymond Feng (JIRA)" <tu...@ws.apache.org> on 2007/07/17 23:36:04 UTC
[jira] Updated: (TUSCANY-1447) Service introspection for a java
implementation class behaves differently from what's the SCA java spec 1.0
[ https://issues.apache.org/jira/browse/TUSCANY-1447?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Raymond Feng updated TUSCANY-1447:
----------------------------------
Attachment: HeuristicPojoProcessor.java
Here's a updated file based on 05/30 code base. Please review and apply.
> Service introspection for a java implementation class behaves differently from what's the SCA java spec 1.0
> -----------------------------------------------------------------------------------------------------------
>
> Key: TUSCANY-1447
> URL: https://issues.apache.org/jira/browse/TUSCANY-1447
> Project: Tuscany
> Issue Type: Bug
> Components: Java SCA Java Implementation Extension
> Affects Versions: Java-SCA-0.91, Java-SCA-Next
> Reporter: Raymond Feng
> Attachments: HeuristicPojoProcessor.java
>
>
> Here's the e-mail exchange I had with the spec group:
> Yes that is by design. At one point in time, the algorithm was based on
> the one interface implemented by the class, if there was one. The
> problem had to do with classes defined like:
> public class MyService implements java.io.Serializable {
> }
> It would be wrong to have a single service whose type was Serializable.
> Having the class itself represent the type, probably isn't such a bad
> thing, since it provides a superset of the operations available on any
> of its implemented interfaces.
> However, having a service whose _name_ is "MyServiceImpl" is certainly
> awkward. I simple fix would be to introduce a simple modification to
> the naming rule that accounts for this common idiom. If the class ends
> with "Impl" then "Impl" is dropped from the service name.
> Michael
> -----Original Message-----
> From: Raymond Feng [mailto:enjoyjava@gmail.com]
> Sent: Thursday, July 12, 2007 6:13 PM
> To: java@sca.projects.dev2dev.bea.com
> Subject: Algorithm to introspect the services offered by a java class
> Hi,
> The SCA Java Component Implementation Spec defines an algorithm to
> introspect the services offered by a java class as quoted below:
> Line 143:
> "1.2.1.3. Introspecting services offered by a Java implementation
> In the cases described below, the services offered by a Java
> implementation
> class may be determined through introspection, eliding the need to
> specify
> them using @Service. The following algorithm is used to determine how
> services are introspected from an implementation class:
> If the interfaces of the SCA services are not specified with the
> @Service
> annotation on the implementation class, it is assumed that all
> implemented
> interfaces that have been annotated as @Remotable are the service
> interfaces
> provided by the component. If none of the implemented interfaces is
> remotable, then by default the implementation offers a single service
> whose
> type is the implementation class."
> public interface MyService {
> ...
> }
> public class MyServiceImpl implements MyService {
> ...
> }
> By the spec, the service type would be MyServiceImpl.class and the name
> would be "MyServiceImpl" since the MyService interface is not annotated
> with
> @Remotable.
> I think the algorithm is a bit anti-heuristic for some simple cases
> where a
> java class implements one or more local interfaces and many SCA users
> assume
> MyService.class is the service type in this case. Can somebody confirm
> that
> the algorithm is by design?
> Thanks,
> Raymond Feng
> Apache Tuscany
> rfeng@apache.org
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org