ace-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bram de Kruijff <bdekrui...@gmail.com>
Subject Re: ACE client
Date Tue, 25 Jun 2013 16:18:08 GMT
On Tue, Jun 25, 2013 at 6:16 PM, Bram de Kruijff <bdekruijff@gmail.com> wrote:
> Hi Wilfried!
>
> On Tue, Jun 25, 2013 at 5:30 PM,  <Wilfried.Sibla@bosch-si.com> wrote:
>> Hi Marcel
>>
>> This was a good recommendation. I was able to implement a set of gogo commands to
work on the ACE repo.
>>
>> One short question:
>> Are the left- and rigthCardinality mandatory or optional attributes?
>> I added some associations without any cardinality and they are all displayed correctly
within the UI.
>>
>> Currently I don't really understand the principle of these attributes.
>> Having 1:1 cardinality is clear. But is this evaluated somewhere in the code?
>> Mostly I see the value 2147483647. This is the MAX_INT. But I think that this value
is platform dependent and seems not to be a good choice. Or do I misunderstand this issue?
>>
>
> Cardinality is optional and will default to one. For simple
> associations where the filter always matches one candidate (eg.
> name=foo) this is good enough. However, when you start using filters
> that may match multiple candidates (eg. name=foo*) and you want an
> one-to-many association the cardinality must be set to an appropriate
> number. Indeed the default for many is MAX_INT with basically is meant
> to express infinity. This if you have a filter that matches more the
> MAX_INT candidates you just found a bug ;)
>
> @see ArtifactObjectImpl#locateEndpoint()
>

correction..

@see AssociationImpl#locateEndpoint()

> An example of using a filter that matches multiple candidates and then
> using cardinality to choose is used for auto upgrading bundles. The
> filter selects the candidates by symbolicname (symbolicname=foo),
> sorts them using a version Comparator and then takes the first
> (cardinality=1). This result in an association that always matches the
> latest bundle.
>
> Hope this helps clarify the mechanism a little :)
>
> Best regards,
> Bram
>
>
>> Some information would be very appreciated.
>>
>> Regards
>> Wilfried
>>
>>
>> -----Urspr√ľngliche Nachricht-----
>> Von: Marcel Offermans [mailto:marcel.offermans@luminis.nl]
>> Gesendet: Donnerstag, 20. Juni 2013 14:05
>> An: users@ace.apache.org
>> Betreff: Re: ACE client
>>
>> On Jun 20, 2013, at 11:42 AM, <Wilfried.Sibla@bosch-si.com> wrote:
>>
>>> But nevertheless, I will write a small bundle including the bndrun file and use
the bundle start method to test something...
>>
>> That works. If you want a bit more flexibility, you can write a shell command, by
making an Activator that does something like this:
>>
>> public class Activator extends DependencyActivatorBase {
>>     @Override
>>     public void init(BundleContext context, DependencyManager manager) throws Exception
{
>>       Properties props = new Properties();
>>       props.put(CommandProcessor.COMMAND_SCOPE, "myscope");
>>       props.put(CommandProcessor.COMMAND_FUNCTION, new String[] { "test", "two" });
>>         manager.add(createComponent()
>>             .setInterface(Object.class.getName(), props)
>>             .setImplementation(Commands.class)
>>         );
>>     }
>>
>>     @Override
>>     public void destroy(BundleContext context, DependencyManager manager) throws
Exception {
>>     }
>> }
>>
>> and a Commands class with commands that do something like this:
>>
>> public class Commands {
>>     public void test() {
>>         System.out.println("test command executing");
>>     }
>>
>>     public void two() throws Exception {
>>         throw new RuntimeException("I throw an exception.");
>>     }
>> }
>>
>> Of course your commands should do something useful, and you might want to inject
certain service dependencies into that class, but this is the idea. From the shell you can
then simply type: "test" (or "myscope:test" if there exists more than one "test" command in
different scopes).
>>
>> Greetings, Marcel
>>

Mime
View raw message