Hi Marcel, Hi Elmar

I also started as propose by you.

But unfortunately I started with a copy of the Worspace class because I cannot 
use the authentication against the OSGi UserAdmin.
But currently I'm not very happy with this solution.

What do you think about having the Workspace independent from the any UserAdmin 
users and only using the session ID?

In my case it could be a solution to extend the Workspace and overriding the 
login method (using a single technical user within).
I think I could provide my slightly changed Wokspace implementation as a 
proposal.
I also added some gogo commands to it (like you did in June). But still missing 
some commands for evaluating and manipulating the StatefulTarget :-)


Thx & Greetings
Wilfried


-----Ursprüngliche Nachricht-----
Von: Marcel Offermans [mailto:[email protected]] 
Gesendet: Dienstag, 6. August 2013 14:37
An: [email protected]
Betreff: Re: Client REST API

Hello Elmar,

On Aug 6, 2013, at 13:19 , Elmar Zeeb <[email protected]> wrote:

> i'm looking into apache ace to check if i can use it as backend for a web 
> based market to install software extensions on an osgi based application. In 
> this use case i can't use the vaadin based ui but started to implement a java 
> based client for the client REST API.

Underneath the Vaadin, REST and (very recently) GoGo client API's lies the same 
Java Client API. In other words, that's a good place to start with your own 
client. In this case, the "Workspace" class that is an abstraction on top of 
that (part of the REST client) can be used to start.

> I'm aware of the amdatu ace client, but i wanted to implement a client on my 
> own to understand the api and apache ace. Currently i'm able to create, 
> modify and delete different client resources (artifact, feature, distribution 
> and target) but have problems with associations. I have looked at the client 
> rest api docu on ace.apache.org and at 
> https://issues.apache.org/jira/browse/ACE-151 to get a better understanding 
> of associations filters and queries.

Ok.

> I don't understand how to set the leftEndpoint and rightEndpoint attributes 
> of associations. As written on the web site these attributes are LDAP 
> filters. Does this mean that i have to parse the LDAP filter on the client 
> side to check which resources are associated?

Yes, they are LDAP filters.
No you don't need to parse them yourself, that is something the associations 
will do for you. Just provide the filter condition and it will be evaluated 
against objects on the left or right hand side of the association.

> Is there a way to let ace do the filtering and return resource ids? I'm aware 
> of the ace/clients/tmp/9876/artifact2feature?left=&right=query. Is there 
> something like ace/clients/tmp/9876/artifact2feature/12345/leftResourceIdsto 
> query all left resource ids of an association?

If you create an association, you can set the left and right hand filters 
yourself.

> The vaadin UI uses attribute based LDAP filters to create associations. I 
> would like to have static associations based on resource ids - so i use LDAP 
> filters like "(id=[resource id])" to specify endpoints.

Take a look at the Workspace.cas() method (a generic way to create an 
association) where you can do something like:

 ws.cas("distribution2target", "(name=foo)", "(id=bar)");

Optional arguments to specify the cardinality can be used to force ACE to use a 
1:1 (or 1:N, N:1 or N:N) cardinality.

> The vaadin ui can't display these associations.

Actually, if you click on some object, it will always highlight everything that 
is associated, even if you do it via these programmatically created 
associations.

> ACE-151 mentions that there are no checks for LDAP filters so the filter may 
> not work.
> 
> So my question is how to specify association endpoints and how to query 
> resource ids of associates resources with the client REST API?

My advice is to use the Java API. If you have an Assocation object, you can 
simply ask it to getLeft() or getRight() and you will get a list of all 
associated objects on either side.

Greetings, Marcel

Reply via email to