Hi Rafa

Thanks for the clarification on the API. in this case I don't see why
Rupert uses this as an example of something that makes little sense locally.

I'm all for decoupling and exactly because of the decoupling we don't need
separate APIs for the remote proxy and the local API. ServiceAImpl exposes
ServiceA which is exposed via REST and the ServiceAClientImpl exposes the
identical ServiceA.

Obviously there are some client specific classed to get the instance of
ServiceA and server specific methods to get the instance. The point is the
API of ServiceA should be the same. The work on providing the client is a
great opprtunity to review this interfaces, if an API has to be different
on the client than on the server this is a strong evidence that there is
something wrong in the design of the API and that the API isn't decoupled
from the implementation as it should be.

Cheers,
Reto


On Wed, Mar 27, 2013 at 3:05 PM, Rafa Haro <[email protected]> wrote:

> Hi Reto,
>
> TEST_URI is the URI of the Content. In fact, the client works pretty
> similar to your code:
>
> private static final String STANBOL_ENDPOINT = "http://localhost:8080/";;
> final StanbolClient client = new StanbolClientImpl(STANBOL_**ENDPOINT);
>
> StanbolEnhancerService enhancer = client.enhancer();
> EnhancementResult eRes = enhancer.enhance(TEST_URI, "Paris is the capital
> of France");
>
> I think I understand you, but the way we see a client for each programming
> language is for decoupled integrations.
>
> Regards
>
> El 27/03/13 14:25, Reto Bachmann-Gmür escribió:
>
>> Hi Rafa and Rupert,
>>
>> I think all our services should expose nice interfaces that allow to
>> access
>> especially the common features as easily as possible. The fact that as
>> Rupert points out our existing API isn't very suitable for usage on the
>> client shows the design weakness of the API.
>>
>> Rupert's example:
>>      EnhancementResult eRes = client.enhancer().enhance(**TEST_URI,
>> "Paris is
>> the capital of France");
>>
>> Doesn't make sense on the server (assuming TEST_URI is the uri of the
>> Stanbol service).
>>
>> It should be on the server:
>>
>> @Service
>> Enhancer enhancer;
>> ...
>> EnhancementResult eRes = enhancer.enhance("Paris is the capital of
>> France");
>>
>> On The client it might be:
>>
>> StanbolClient stanbolClient = new StanbolClient(TEST_URI);
>>
>> Enhancer enhancer = stanbolClient.getEnhancer();
>> EnhancementResult eRes = enhancer.enhance("Paris is the capital of
>> France");
>>
>> Note an alternative constructor of StanbolClient might take additional
>> arguments as to say if things should be lazy loaded or precached, etc. The
>> important aspect is that we are using one and the same Enhancer interface
>> independently if this access an remote instance or is a local service.
>>
>> I hope this makes the idea clerarer.
>>
>> Cheers,
>> Reto
>>
>>
>> On Wed, Mar 27, 2013 at 12:15 PM, Rafa Haro <[email protected]> wrote:
>>
>>  Hi Reto,
>>>
>>> I think that I'm not understanding your point. The client is precisely a
>>> way to ease the integration with the remote API, to work with a remote
>>> Stanbol instance as you would have it "locally" integrate in your
>>> project.
>>> It's just an implementation of those RESTful APIs, abstracting the
>>> developer the marshall and unmarshalling processes of the REST services
>>> in
>>> their code.
>>>
>>> It's true that some interfaces of the current implementation could be the
>>> same of Stanbol's one if the client is integrated in Stanbol, but the
>>> point
>>> is to wrapper the functionality to ease the use of Stanbol RESTful APIs
>>>
>>> Regards!
>>>
>>> El 27/03/13 10:42, Reto Bachmann-Gmür escribió:
>>>
>>>   Just to add an example:
>>>
>>>> I think one should be able to use the interface
>>>>
>>>> http://svn.apache.org/viewvc/****stanbol/trunk/contenthub/**<http://svn.apache.org/viewvc/**stanbol/trunk/contenthub/**>
>>>> servicesapi/src/main/java/org/****apache/stanbol/contenthub/**
>>>> servicesapi/search/featured/****FeaturedSearch.java?view=****markup<
>>>> http://svn.apache.org/**viewvc/stanbol/trunk/**
>>>> contenthub/servicesapi/src/**main/java/org/apache/stanbol/**
>>>> contenthub/servicesapi/search/**featured/FeaturedSearch.java?**
>>>> view=markup<http://svn.apache.org/viewvc/stanbol/trunk/contenthub/servicesapi/src/main/java/org/apache/stanbol/contenthub/servicesapi/search/featured/FeaturedSearch.java?view=markup>
>>>> >
>>>>
>>>>
>>>> both to search against the local instance as well as a remote instance
>>>> and
>>>> that it's not necessary to have
>>>>
>>>> https://github.com/zaizi/****apache-stanbol-client/blob/**<https://github.com/zaizi/**apache-stanbol-client/blob/**>
>>>> master/src/main/java/org/****apache/stanbol/client/**
>>>> contenthub/search/services/****StanbolContenthubFeaturedSearc****
>>>> hService.java<https://github.**com/zaizi/apache-stanbol-**
>>>> client/blob/master/src/main/**java/org/apache/stanbol/**
>>>> client/contenthub/search/**services/**StanbolContenthubFeaturedSearc**
>>>> hService.java<https://github.com/zaizi/apache-stanbol-client/blob/master/src/main/java/org/apache/stanbol/client/contenthub/search/services/StanbolContenthubFeaturedSearchService.java>
>>>> >
>>>>
>>>>
>>>> Cheers,
>>>> Reto
>>>>
>>>> On Wed, Mar 27, 2013 at 10:31 AM, Reto Bachmann-Gmür <[email protected]
>>>>
>>>>> wrote:
>>>>>
>>>>
>>>>  On Wed, Mar 27, 2013 at 10:06 AM, Rupert Westenthaler <
>>>>> [email protected]> wrote:
>>>>>
>>>>>   Hi Rafa,
>>>>>
>>>>>> On Tue, Mar 26, 2013 at 5:12 PM, Rafa Haro <[email protected]> wrote:
>>>>>>
>>>>>>  Dear all,
>>>>>>>
>>>>>>> We have recently released a new version of our Java Apache Stanbol
>>>>>>>
>>>>>>>  Client
>>>>>>
>>>>>>  
>>>>>> (https://github.com/zaizi/****apache-stanbol-client<https://github.com/zaizi/**apache-stanbol-client>
>>>>>>> <https://**github.com/zaizi/apache-**stanbol-client<https://github.com/zaizi/apache-stanbol-client>
>>>>>>> >).
>>>>>>> The project
>>>>>>>
>>>>>>>  intention is
>>>>>>
>>>>>>  to ease Apache Stanbol integrators to use Stanbol in their Java
>>>>>>>
>>>>>>>  projects.
>>>>>>
>>>>>>  The tool covers almost the full REST API for the following Stanbol
>>>>>>> components: Enhancer, ContenHub, EntityHub and Sparql.
>>>>>>>
>>>>>>>   Looks great! Would be really cool to have this in Stanbol!
>>>>>>>
>>>>>>   Did you see my email? I agree it looks good but I think our API
>>>>>> should
>>>>>>
>>>>> look good in general and that you should be able to use the same nice
>>>>> interfaces to access the data both directly in the same vm as the
>>>>> services
>>>>> as well as remotely. In some cases it makes sense to have a façade to
>>>>> make
>>>>> the interface easier but in this case the question why the façaded
>>>>> interface has to be complex in the first place.
>>>>>
>>>>> Cheers,
>>>>> Reto
>>>>>
>>>>>
>>>>>   best
>>>>>
>>>>>> Rupert
>>>>>>
>>>>>>   If anyone is interested on use it for his own projects, it would be
>>>>>> great
>>>>>>
>>>>>>  for us to have some feedback, suggestions, improvements.....We also
>>>>>>> encourage all of you to participate in its development if you find it
>>>>>>> useful.
>>>>>>>
>>>>>>> Regards!
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> ------------------------------
>>>>>>> This message should be regarded as confidential. If you have received
>>>>>>>
>>>>>>>  this
>>>>>>
>>>>>>  email in error please notify the sender and destroy it immediately.
>>>>>>> Statements of intent shall only become binding when confirmed in hard
>>>>>>>
>>>>>>>  copy
>>>>>>
>>>>>>  by an authorised signatory.
>>>>>>>
>>>>>>> Zaizi Ltd is registered in England and Wales with the registration
>>>>>>>
>>>>>>>  number
>>>>>>
>>>>>>  6440931. The Registered Office is 222 Westbourne Studios, 242 Acklam
>>>>>>>
>>>>>>>  Road,
>>>>>>
>>>>>>  London W10 5JJ, UK.
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> | Rupert Westenthaler             [email protected]
>>>>>> | Bodenlehenstraße 11                             ++43-699-11108907
>>>>>> | A-5500 Bischofshofen
>>>>>>
>>>>>>
>>>>>>  --
>>>
>>> ------------------------------
>>> This message should be regarded as confidential. If you have received
>>> this
>>> email in error please notify the sender and destroy it immediately.
>>> Statements of intent shall only become binding when confirmed in hard
>>> copy
>>> by an authorised signatory.
>>>
>>> Zaizi Ltd is registered in England and Wales with the registration number
>>> 6440931. The Registered Office is 222 Westbourne Studios, 242 Acklam
>>> Road,
>>> London W10 5JJ, UK.
>>>
>>>
>
> --
>
> ------------------------------
> This message should be regarded as confidential. If you have received this
> email in error please notify the sender and destroy it immediately.
> Statements of intent shall only become binding when confirmed in hard copy
> by an authorised signatory.
>
> Zaizi Ltd is registered in England and Wales with the registration number
> 6440931. The Registered Office is 222 Westbourne Studios, 242 Acklam Road,
> London W10 5JJ, UK.
>

Reply via email to