You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@aries.apache.org by David Feliot <da...@scalagent.com> on 2011/10/24 10:14:03 UTC

Service property assigned with a service reference

Hi,

when defining a service property with a reference as a value, the 
property is assigned with a ServiceProxyWrapper (inner class of 
ReferenceRecipe).

Here is the way it is defined:

<service ref="..." interface="...">
<service-properties>
<entry key="Property1">
<ref component-id="serviceRef"/>
</entry>
</service-properties>
</service>

<reference id="serviceRef" interface="A" />

I would have expected the service property "Property1" to be assigned 
with an instance of "A" instead of a ServiceProxyWrapper. However I 
could get the instance of "A" by calling the method 'convert' and 
passing a ReifiedType.

I would like to know if defining such a service property (containing a 
<ref>) is correct according to Blueprint specification and Aries 
implementation?

I would also like to know why the 'convert' has to be done explicitly?

Thank you.
Regards,
David




Re: Service property assigned with a service reference

Posted by David Feliot <da...@scalagent.com>.
I tried another way by assigning an inlined bean to the service 
property. And it seems to work. I hope it is compliant with blueprint 
specification which is not very clear about the allowed service property 
types: only primitive and scalar types ? However it is compliant with 
the blueprint XML schema.

The blueprint XML definition is:

<service ref="..." interface="...">
<service-properties>
<entry key="uriResolverBean">
<bean class="UriResolverBean">
<property name="uriResolver" ref="uriResolverRef" />
</bean>
</entry>
</service-properties>
</service>

<reference id="uriResolverRef" interface="UriResolverService" />

Is it allowed by Aries and blueprint specification to assign a bean to a 
service property?

Thank you,
Regards,
David


Le 25/10/2011 15:42, Timothy Ward a écrit :
> I apologise for the confusion, I was under the impression that the 
> service properties element extended the map element, but apparently it 
> doesn't. As such it won't let you specify a value-type...
>
> I suggest you raise a bug for the problem you're seeing. Whatever 
> happens you shouldn't end up with an internal blueprint recipe object 
> in there.
>
> Tim
>
> ------------------------------------------------------------------------
> Date: Tue, 25 Oct 2011 14:40:54 +0200
> From: david.feliot@scalagent.com
> To: user@aries.apache.org
> Subject: Re: Service property assigned with a service reference
>
> If the service is a String, then an exception is raised because the 
> String class is final:
>
> org.apache.aries.proxy.FinalModifierException: The class 
> java.lang.String is final.
>         at 
> org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:98)
>         ...
>
> If the service is not a String, then I don't see how I can "add a type 
> of java.lang.String" because such a type indication is only available 
> with <value> and not <ref>.
>
> <service-properties>
> <entry key="Property1">
> <ref component-id="serviceRef"/>
> </entry>
> </service-properties>
>
> Regards,
> David
>
> Le 25/10/2011 13:19, Timothy Ward a écrit :
>
>     I think that what you're doing should work fine (assuming the
>     service is actually of type String) and this indcates a blueprint
>     bug. If your service is actually not a String then if you add a
>     type of java.lang.String (to tell blueprint to toString your
>     object) things should probably work ok. The property will only be
>     set once though, regardless of whether the reference changes, (no
>     dynamism) because of what the spec says.
>
>     Regards,
>
>     Tim
>
>     ------------------------------------------------------------------------
>     Date: Tue, 25 Oct 2011 10:26:46 +0200
>     From: david.feliot@scalagent.com <ma...@scalagent.com>
>     To: user@aries.apache.org <ma...@aries.apache.org>
>     Subject: Re: Service property assigned with a service reference
>
>     My object is a String (a URI) that needs to be dynamically
>     resolved as a reference (<reference>) and passed as a service
>     property.
>
>     So if I correctly understood what you said, there's no way to do
>     that with blueprint?
>     It worked with Aries but it's only by chance, isn't it?
>
>     Thanks again,
>     Regards,
>     David
>
>     Le 24/10/2011 15:55, Timothy Ward a écrit :
>
>         Hi,
>
>         It is allowed to use a component instance as a service
>         property, however the following rules apply (from 121.6.6 of
>         the enterprise specification)
>
>         Each service can optionally be registered with service
>         properties. The serviceProperties is a list of
>         MapEntry, see <entry> on page 236. This metadata must be used
>         to create the service properties. Service
>         properties creation can have side effects because they can use
>         component instances. The service
>         properties must therefore be created once before the first
>         time the first time the service is registered.
>
>         ....
>
>         Service properties should specify the valueType of the entry
>         unless the value to be registered needs to
>         be a String object. The service property types should be one of:
>         • Primitives Number – int, long, float, double, byte, short,
>         char, boolean
>         • Scalar – String, Integer, Long, Float, Double, Byte, Short,
>         Character, Boolean.
>         • Array – An array of either the allowable primitive or scalar
>         types.
>         • Collection – An object implementing the Collection interface
>         that contains scalar types.
>
>
>         If your object is of any other type then it should be being
>         turned into a String, which does indicate an issue with the
>         blueprint container. On the other hand, it may not be possible
>         to do what you actually want to do.
>
>         Aries blueprint will probably cope with some other property
>         types as well (things that have a String constructor), but I
>         couldn't give you a complete list.
>
>         Regards,
>
>         Tim
>
>
>         > Date: Mon, 24 Oct 2011 10:14:03 +0200
>         > From: david.feliot@scalagent.com
>         <ma...@scalagent.com>
>         > To: user@aries.apache.org <ma...@aries.apache.org>
>         > Subject: Service property assigned with a service reference
>         >
>         > Hi,
>         >
>         > when defining a service property with a reference as a
>         value, the
>         > property is assigned with a ServiceProxyWrapper (inner class of
>         > ReferenceRecipe).
>         >
>         > Here is the way it is defined:
>         >
>         > <service ref="..." interface="...">
>         > <service-properties>
>         > <entry key="Property1">
>         > <ref component-id="serviceRef"/>
>         > </entry>
>         > </service-properties>
>         > </service>
>         >
>         > <reference id="serviceRef" interface="A" />
>         >
>         > I would have expected the service property "Property1" to be
>         assigned
>         > with an instance of "A" instead of a ServiceProxyWrapper.
>         However I
>         > could get the instance of "A" by calling the method
>         'convert' and
>         > passing a ReifiedType.
>         >
>         > I would like to know if defining such a service property
>         (containing a
>         > <ref>) is correct according to Blueprint specification and
>         Aries
>         > implementation?
>         >
>         > I would also like to know why the 'convert' has to be done
>         explicitly?
>         >
>         > Thank you.
>         > Regards,
>         > David
>         >
>         >
>         >
>
>
>


RE: Service property assigned with a service reference

Posted by Timothy Ward <ti...@apache.org>.
I apologise for the confusion, I was under the impression that the service properties element extended the map element, but apparently it doesn't. As such it won't let you specify a value-type...

I suggest you raise a bug for the problem you're seeing. Whatever happens you shouldn't end up with an internal blueprint recipe object in there.

Tim

Date: Tue, 25 Oct 2011 14:40:54 +0200
From: david.feliot@scalagent.com
To: user@aries.apache.org
Subject: Re: Service property assigned with a service reference


  


    
  
  
    If the service is a String, then an exception is raised because the
    String class is final:

    

    org.apache.aries.proxy.FinalModifierException: The class
    java.lang.String is final.

            at
org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:98)

            ...

    

    If the service is not a String, then I don't see how I can "add a
    type of java.lang.String" because such a type indication is only
    available with <value> and not <ref>.

    

    <service-properties>

      <entry key="Property1">

        <ref component-id="serviceRef"/>

      </entry>

    </service-properties>

    

    Regards,

    David

    

    Le 25/10/2011 13:19, Timothy Ward a écrit :
    
      
      
        I think that what you're doing should work fine (assuming the
        service is actually of type String) and this indcates a
        blueprint bug. If your service is actually not a String then if
        you add a type of java.lang.String (to tell blueprint to
        toString your object) things should probably work ok. The
        property will only be set once though, regardless of whether the
        reference changes, (no dynamism) because of what the spec says.

        

        Regards,

        

        Tim

        

        
          Date: Tue, 25 Oct 2011 10:26:46 +0200

          From: david.feliot@scalagent.com

          To: user@aries.apache.org

          Subject: Re: Service property assigned with a service
          reference

          

          
          
          My object is a String (a URI) that needs to be dynamically
          resolved as a reference (<reference>) and passed as a
          service property.

          

          So if I correctly understood what you said, there's no way to
          do that with blueprint?

          It worked with Aries but it's only by chance, isn't it?

          

          Thanks again,

          Regards,

          David

          

          Le 24/10/2011 15:55, Timothy Ward a écrit :
          
            
             Hi,

              

              It is allowed to use a component instance as a service
              property, however the following rules apply (from 121.6.6
              of the enterprise specification)

              

              Each service can optionally be registered with service
              properties. The serviceProperties is a list of

              MapEntry, see <entry> on page 236. This metadata
              must be used to create the service properties. Service

              properties creation can have side effects because they can
              use component instances. The service

              properties must therefore be created once before the first
              time the first time the service is registered.

              

              ....

              

              Service properties should specify the valueType of the
              entry unless the value to be registered needs to

              be a String object. The service property types should be
              one of:

              • Primitives Number – int, long, float, double, byte,
              short, char, boolean

              • Scalar – String, Integer, Long, Float, Double, Byte,
              Short, Character, Boolean.

              • Array – An array of either the allowable primitive or
              scalar types.

              • Collection – An object implementing the Collection
              interface that contains scalar types.

              

              

              If your object is of any other type then it should be
              being turned into a String, which does indicate an issue
              with the blueprint container. On the other hand, it may
              not be possible to do what you actually want to do.

              

              Aries blueprint will probably cope with some other
              property types as well (things that have a String
              constructor), but I couldn't give you a complete list.

              

              Regards,

              

              Tim

              

              

              > Date: Mon, 24 Oct 2011 10:14:03 +0200

                > From: david.feliot@scalagent.com

                > To: user@aries.apache.org

                > Subject: Service property assigned with a service
                reference

                > 

                > Hi,

                > 

                > when defining a service property with a reference
                as a value, the 

                > property is assigned with a ServiceProxyWrapper
                (inner class of 

                > ReferenceRecipe).

                > 

                > Here is the way it is defined:

                > 

                > <service ref="..." interface="...">

                > <service-properties>

                > <entry key="Property1">

                > <ref component-id="serviceRef"/>

                > </entry>

                > </service-properties>

                > </service>

                > 

                > <reference id="serviceRef" interface="A" />

                > 

                > I would have expected the service property
                "Property1" to be assigned 

                > with an instance of "A" instead of a
                ServiceProxyWrapper. However I 

                > could get the instance of "A" by calling the method
                'convert' and 

                > passing a ReifiedType.

                > 

                > I would like to know if defining such a service
                property (containing a 

                > <ref>) is correct according to Blueprint
                specification and Aries 

                > implementation?

                > 

                > I would also like to know why the 'convert' has to
                be done explicitly?

                > 

                > Thank you.

                > Regards,

                > David

                > 

                > 

                > 

              
            
          
          

        
      
    
    
 		 	   		  

Re: Service property assigned with a service reference

Posted by David Feliot <da...@scalagent.com>.
If the service is a String, then an exception is raised because the 
String class is final:

org.apache.aries.proxy.FinalModifierException: The class 
java.lang.String is final.
         at 
org.apache.aries.blueprint.container.ReferenceRecipe.internalCreate(ReferenceRecipe.java:98)
         ...

If the service is not a String, then I don't see how I can "add a type 
of java.lang.String" because such a type indication is only available 
with <value> and not <ref>.

<service-properties>
<entry key="Property1">
<ref component-id="serviceRef"/>
</entry>
</service-properties>

Regards,
David

Le 25/10/2011 13:19, Timothy Ward a écrit :
> I think that what you're doing should work fine (assuming the service 
> is actually of type String) and this indcates a blueprint bug. If your 
> service is actually not a String then if you add a type of 
> java.lang.String (to tell blueprint to toString your object) things 
> should probably work ok. The property will only be set once though, 
> regardless of whether the reference changes, (no dynamism) because of 
> what the spec says.
>
> Regards,
>
> Tim
>
> ------------------------------------------------------------------------
> Date: Tue, 25 Oct 2011 10:26:46 +0200
> From: david.feliot@scalagent.com
> To: user@aries.apache.org
> Subject: Re: Service property assigned with a service reference
>
> My object is a String (a URI) that needs to be dynamically resolved as 
> a reference (<reference>) and passed as a service property.
>
> So if I correctly understood what you said, there's no way to do that 
> with blueprint?
> It worked with Aries but it's only by chance, isn't it?
>
> Thanks again,
> Regards,
> David
>
> Le 24/10/2011 15:55, Timothy Ward a écrit :
>
>     Hi,
>
>     It is allowed to use a component instance as a service property,
>     however the following rules apply (from 121.6.6 of the enterprise
>     specification)
>
>     Each service can optionally be registered with service properties.
>     The serviceProperties is a list of
>     MapEntry, see <entry> on page 236. This metadata must be used to
>     create the service properties. Service
>     properties creation can have side effects because they can use
>     component instances. The service
>     properties must therefore be created once before the first time
>     the first time the service is registered.
>
>     ....
>
>     Service properties should specify the valueType of the entry
>     unless the value to be registered needs to
>     be a String object. The service property types should be one of:
>     • Primitives Number – int, long, float, double, byte, short, char,
>     boolean
>     • Scalar – String, Integer, Long, Float, Double, Byte, Short,
>     Character, Boolean.
>     • Array – An array of either the allowable primitive or scalar types.
>     • Collection – An object implementing the Collection interface
>     that contains scalar types.
>
>
>     If your object is of any other type then it should be being turned
>     into a String, which does indicate an issue with the blueprint
>     container. On the other hand, it may not be possible to do what
>     you actually want to do.
>
>     Aries blueprint will probably cope with some other property types
>     as well (things that have a String constructor), but I couldn't
>     give you a complete list.
>
>     Regards,
>
>     Tim
>
>
>     > Date: Mon, 24 Oct 2011 10:14:03 +0200
>     > From: david.feliot@scalagent.com <ma...@scalagent.com>
>     > To: user@aries.apache.org <ma...@aries.apache.org>
>     > Subject: Service property assigned with a service reference
>     >
>     > Hi,
>     >
>     > when defining a service property with a reference as a value, the
>     > property is assigned with a ServiceProxyWrapper (inner class of
>     > ReferenceRecipe).
>     >
>     > Here is the way it is defined:
>     >
>     > <service ref="..." interface="...">
>     > <service-properties>
>     > <entry key="Property1">
>     > <ref component-id="serviceRef"/>
>     > </entry>
>     > </service-properties>
>     > </service>
>     >
>     > <reference id="serviceRef" interface="A" />
>     >
>     > I would have expected the service property "Property1" to be
>     assigned
>     > with an instance of "A" instead of a ServiceProxyWrapper. However I
>     > could get the instance of "A" by calling the method 'convert' and
>     > passing a ReifiedType.
>     >
>     > I would like to know if defining such a service property
>     (containing a
>     > <ref>) is correct according to Blueprint specification and Aries
>     > implementation?
>     >
>     > I would also like to know why the 'convert' has to be done
>     explicitly?
>     >
>     > Thank you.
>     > Regards,
>     > David
>     >
>     >
>     >
>
>


RE: Service property assigned with a service reference

Posted by Timothy Ward <ti...@apache.org>.
I think that what you're doing should work fine (assuming the service is actually of type String) and this indcates a blueprint bug. If your service is actually not a String then if you add a type of java.lang.String (to tell blueprint to toString your object) things should probably work ok. The property will only be set once though, regardless of whether the reference changes, (no dynamism) because of what the spec says.

Regards,

Tim

Date: Tue, 25 Oct 2011 10:26:46 +0200
From: david.feliot@scalagent.com
To: user@aries.apache.org
Subject: Re: Service property assigned with a service reference


  


    
  
  
    My object is a String (a URI) that needs to be dynamically resolved
    as a reference (<reference>) and passed as a service property.

    

    So if I correctly understood what you said, there's no way to do
    that with blueprint?

    It worked with Aries but it's only by chance, isn't it?

    

    Thanks again,

    Regards,

    David

    

    Le 24/10/2011 15:55, Timothy Ward a écrit :
    
      
      
        Hi,

        

        It is allowed to use a component instance as a service property,
        however the following rules apply (from 121.6.6 of the
        enterprise specification)

        

        Each service can optionally be registered with service
        properties. The serviceProperties is a list of

        MapEntry, see <entry> on page 236. This metadata must be
        used to create the service properties. Service

        properties creation can have side effects because they can use
        component instances. The service

        properties must therefore be created once before the first time
        the first time the service is registered.

        

        ....

        

        Service properties should specify the valueType of the entry
        unless the value to be registered needs to

        be a String object. The service property types should be one of:

        • Primitives Number – int, long, float, double, byte, short,
        char, boolean

        • Scalar – String, Integer, Long, Float, Double, Byte, Short,
        Character, Boolean.

        • Array – An array of either the allowable primitive or scalar
        types.

        • Collection – An object implementing the Collection interface
        that contains scalar types.

        

        

        If your object is of any other type then it should be being
        turned into a String, which does indicate an issue with the
        blueprint container. On the other hand, it may not be possible
        to do what you actually want to do.

        

        Aries blueprint will probably cope with some other property
        types as well (things that have a String constructor), but I
        couldn't give you a complete list.

        

        Regards,

        

        Tim

        

        

        > Date: Mon, 24 Oct 2011 10:14:03 +0200

          > From: david.feliot@scalagent.com

          > To: user@aries.apache.org

          > Subject: Service property assigned with a service
          reference

          > 

          > Hi,

          > 

          > when defining a service property with a reference as a
          value, the 

          > property is assigned with a ServiceProxyWrapper (inner
          class of 

          > ReferenceRecipe).

          > 

          > Here is the way it is defined:

          > 

          > <service ref="..." interface="...">

          > <service-properties>

          > <entry key="Property1">

          > <ref component-id="serviceRef"/>

          > </entry>

          > </service-properties>

          > </service>

          > 

          > <reference id="serviceRef" interface="A" />

          > 

          > I would have expected the service property "Property1" to
          be assigned 

          > with an instance of "A" instead of a ServiceProxyWrapper.
          However I 

          > could get the instance of "A" by calling the method
          'convert' and 

          > passing a ReifiedType.

          > 

          > I would like to know if defining such a service property
          (containing a 

          > <ref>) is correct according to Blueprint
          specification and Aries 

          > implementation?

          > 

          > I would also like to know why the 'convert' has to be
          done explicitly?

          > 

          > Thank you.

          > Regards,

          > David

          > 

          > 

          > 

        
      
    
    
 		 	   		  

Re: Service property assigned with a service reference

Posted by David Feliot <da...@scalagent.com>.
My object is a String (a URI) that needs to be dynamically resolved as a 
reference (<reference>) and passed as a service property.

So if I correctly understood what you said, there's no way to do that 
with blueprint?
It worked with Aries but it's only by chance, isn't it?

Thanks again,
Regards,
David

Le 24/10/2011 15:55, Timothy Ward a écrit :
> Hi,
>
> It is allowed to use a component instance as a service property, 
> however the following rules apply (from 121.6.6 of the enterprise 
> specification)
>
> Each service can optionally be registered with service properties. The 
> serviceProperties is a list of
> MapEntry, see <entry> on page 236. This metadata must be used to 
> create the service properties. Service
> properties creation can have side effects because they can use 
> component instances. The service
> properties must therefore be created once before the first time the 
> first time the service is registered.
>
> ....
>
> Service properties should specify the valueType of the entry unless 
> the value to be registered needs to
> be a String object. The service property types should be one of:
> • Primitives Number – int, long, float, double, byte, short, char, boolean
> • Scalar – String, Integer, Long, Float, Double, Byte, Short, 
> Character, Boolean.
> • Array – An array of either the allowable primitive or scalar types.
> • Collection – An object implementing the Collection interface that 
> contains scalar types.
>
>
> If your object is of any other type then it should be being turned 
> into a String, which does indicate an issue with the blueprint 
> container. On the other hand, it may not be possible to do what you 
> actually want to do.
>
> Aries blueprint will probably cope with some other property types as 
> well (things that have a String constructor), but I couldn't give you 
> a complete list.
>
> Regards,
>
> Tim
>
>
> > Date: Mon, 24 Oct 2011 10:14:03 +0200
> > From: david.feliot@scalagent.com
> > To: user@aries.apache.org
> > Subject: Service property assigned with a service reference
> >
> > Hi,
> >
> > when defining a service property with a reference as a value, the
> > property is assigned with a ServiceProxyWrapper (inner class of
> > ReferenceRecipe).
> >
> > Here is the way it is defined:
> >
> > <service ref="..." interface="...">
> > <service-properties>
> > <entry key="Property1">
> > <ref component-id="serviceRef"/>
> > </entry>
> > </service-properties>
> > </service>
> >
> > <reference id="serviceRef" interface="A" />
> >
> > I would have expected the service property "Property1" to be assigned
> > with an instance of "A" instead of a ServiceProxyWrapper. However I
> > could get the instance of "A" by calling the method 'convert' and
> > passing a ReifiedType.
> >
> > I would like to know if defining such a service property (containing a
> > <ref>) is correct according to Blueprint specification and Aries
> > implementation?
> >
> > I would also like to know why the 'convert' has to be done explicitly?
> >
> > Thank you.
> > Regards,
> > David
> >
> >
> >


RE: Service property assigned with a service reference

Posted by Timothy Ward <ti...@apache.org>.
Hi,

It is allowed to use a component instance as a service property, however the following rules apply (from 121.6.6 of the enterprise specification)

Each service can optionally be registered with service properties. The serviceProperties is a list of
MapEntry, see <entry> on page 236. This metadata must be used to create the service properties. Service
properties creation can have side effects because they can use component instances. The service
properties must therefore be created once before the first time the first time the service is registered.

....

Service properties should specify the valueType of the entry unless the value to be registered needs to
be a String object. The service property types should be one of:
• Primitives Number – int, long, float, double, byte, short, char, boolean
• Scalar – String, Integer, Long, Float, Double, Byte, Short, Character, Boolean.
• Array – An array of either the allowable primitive or scalar types.
• Collection – An object implementing the Collection interface that contains scalar types.


If your object is of any other type then it should be being turned into a String, which does indicate an issue with the blueprint container. On the other hand, it may not be possible to do what you actually want to do.

Aries blueprint will probably cope with some other property types as well (things that have a String constructor), but I couldn't give you a complete list.

Regards,

Tim


> Date: Mon, 24 Oct 2011 10:14:03 +0200
> From: david.feliot@scalagent.com
> To: user@aries.apache.org
> Subject: Service property assigned with a service reference
> 
> Hi,
> 
> when defining a service property with a reference as a value, the 
> property is assigned with a ServiceProxyWrapper (inner class of 
> ReferenceRecipe).
> 
> Here is the way it is defined:
> 
> <service ref="..." interface="...">
> <service-properties>
> <entry key="Property1">
> <ref component-id="serviceRef"/>
> </entry>
> </service-properties>
> </service>
> 
> <reference id="serviceRef" interface="A" />
> 
> I would have expected the service property "Property1" to be assigned 
> with an instance of "A" instead of a ServiceProxyWrapper. However I 
> could get the instance of "A" by calling the method 'convert' and 
> passing a ReifiedType.
> 
> I would like to know if defining such a service property (containing a 
> <ref>) is correct according to Blueprint specification and Aries 
> implementation?
> 
> I would also like to know why the 'convert' has to be done explicitly?
> 
> Thank you.
> Regards,
> David
> 
> 
> 
 		 	   		  

Re: Service property assigned with a service reference

Posted by David Feliot <da...@scalagent.com>.
Hi,

There is a class cast exception raised when the ServiceProxyWrapper 
object is cast into A.

Regards,
David

Le 25/10/2011 10:22, Felix Meschberger a écrit :
> Hi,
>
> Am 24.10.2011 um 10:14 schrieb David Feliot:
>
>> Hi,
>>
>> when defining a service property with a reference as a value, the property is assigned with a ServiceProxyWrapper (inner class of ReferenceRecipe).
>>
>> Here is the way it is defined:
>>
>> <service ref="..." interface="...">
>> <service-properties>
>> <entry key="Property1">
>> <ref component-id="serviceRef"/>
>> </entry>
>> </service-properties>
>> </service>
>>
>> <reference id="serviceRef" interface="A" />
>>
>> I would have expected the service property "Property1" to be assigned with an instance of "A" instead of a ServiceProxyWrapper. However I could get the instance of "A" by calling the method 'convert' and passing a ReifiedType.
> I would assume that the actual ServiceProxyWrapper object passed in actually *is* and instance of A as in "xyz instanceof A". Otherwise it would be a violation of the spec etc. The actual class of the supplied object is none of the consumer's business.
>
> There is no need to unwrap IMHO.
>
> Regards
> Felix
>
>
>> I would like to know if defining such a service property (containing a<ref>) is correct according to Blueprint specification and Aries implementation?
>>
>> I would also like to know why the 'convert' has to be done explicitly?
>>
>> Thank you.
>> Regards,
>> David
>>
>>
>>
>
>


Re: Service property assigned with a service reference

Posted by Felix Meschberger <fm...@gmail.com>.
Hi,

Am 24.10.2011 um 10:14 schrieb David Feliot:

> Hi,
> 
> when defining a service property with a reference as a value, the property is assigned with a ServiceProxyWrapper (inner class of ReferenceRecipe).
> 
> Here is the way it is defined:
> 
> <service ref="..." interface="...">
> <service-properties>
> <entry key="Property1">
> <ref component-id="serviceRef"/>
> </entry>
> </service-properties>
> </service>
> 
> <reference id="serviceRef" interface="A" />
> 
> I would have expected the service property "Property1" to be assigned with an instance of "A" instead of a ServiceProxyWrapper. However I could get the instance of "A" by calling the method 'convert' and passing a ReifiedType.

I would assume that the actual ServiceProxyWrapper object passed in actually *is* and instance of A as in "xyz instanceof A". Otherwise it would be a violation of the spec etc. The actual class of the supplied object is none of the consumer's business.

There is no need to unwrap IMHO.

Regards
Felix


> 
> I would like to know if defining such a service property (containing a <ref>) is correct according to Blueprint specification and Aries implementation?
> 
> I would also like to know why the 'convert' has to be done explicitly?
> 
> Thank you.
> Regards,
> David
> 
> 
>