On 17/10/13 14:49, Julio Carlos Barrera Juez wrote:
Bad news then.

I'm not sure why did you expect DELETE with body to work, we discussed it yesterday and confirmed it was not yet possible, please make sure you watch that JIRA I linked to to try it once it gets fixed (though I don't know yet how feasible it is)

Anyway the filter does not work, because the
calls requestContext.setUri(...) did not change the real URI used at the
end. But the method requestContext.setMEthod(...) worked...

Right, setUri does not work from client filters, thanks for catching it.
I've been certain a test is there, but it is only pre-matching container request filters which are tested on setRequestUri, so it needs to be fixed

Cheers, Sergey
i2cat
Julio C. Barrera Juez
Office phone: +34 93 357 99 27
Distributed Applications and Networks Area (DANA)
i2CAT Foundation, Barcelona, Spain
http://dana.i2cat.net <http://dana.i2cat.net/>


On 17 October 2013 13:45, Sergey Beryozkin <[email protected]
<mailto:[email protected]>> wrote:

    Hi

    The method is definitely returned in CXF 2.7.7, I've just added a
    test confirming that. A lot of fixes went into the client-side 2.0
    code, some of it is still on the trunk only as they deal more with
    various very edgy TCK issues, I'm not sure yet if they should make
    to CXF 2.7.8 or not, but a method getter works in 2.7.7

    Re the actual exception, I guess this is because we don't have
    DELETE with body supported yet

    Sergey

    On 17/10/13 11:51, Julio Carlos Barrera Juez wrote:

        Hi Sergey.

        First of all, excuse me by the duplicate message.

        I have just written a Filter like this:

        public class PostToDeleteWithBodyFilter implements
        ClientRequestFilter {

        public final static StringEXTRA_PATH= "/mutatePOSTtoDELETE";


        @Override
        public void filter(ClientRequestContext requestContext) throws
        IOException {
        String method = requestContext.getMethod();
        String path = requestContext.getUri().__getPath();

        if (path != null && path.endsWith(EXTRA_PATH)) {
        // remove EXTRA_PATH
        requestContext.setUri(URI.__create(path.substring(0, path.length() -
        EXTRA_PATH.length())));
        // transform POST into DELETE
        requestContext.setMethod("__DELETE");
        }
        }
        }

        I have some issues again. The method var is null. And the most
        important, an exception is thrown when I use this filter:

        Caused by: java.io.IOException: IOException invoking
        http://<my_server>/real_path/__mutatePOSTtoDELETE: insufficient
        data written
        at
        sun.reflect.__NativeConstructorAccessorImpl.__newInstance0(Native 
Method)
        at
        
sun.reflect.__NativeConstructorAccessorImpl.__newInstance(__NativeConstructorAccessorImpl.__java:39)
        at
        
sun.reflect.__DelegatingConstructorAccessorI__mpl.newInstance(__DelegatingConstructorAccessorI__mpl.java:27)
        at
        java.lang.reflect.Constructor.__newInstance(Constructor.java:__513)
        at
        
org.apache.cxf.transport.http.__HTTPConduit$__WrappedOutputStream.__mapException(HTTPConduit.java:__1338)
        at
        
org.apache.cxf.transport.http.__HTTPConduit$__WrappedOutputStream.close(__HTTPConduit.java:1322)
        at
        
org.apache.cxf.transport.__AbstractConduit.close(__AbstractConduit.java:56)
        at
        
org.apache.cxf.transport.http.__HTTPConduit.close(HTTPConduit.__java:622)
        at
        
org.apache.cxf.interceptor.__MessageSenderInterceptor$__MessageSenderEndingInterceptor__.handleMessage(__MessageSenderInterceptor.java:__62)
        ... 31 more
        Caused by: java.io.IOException: insufficient data written
        at
        
sun.net.www.protocol.http.__HttpURLConnection$__StreamingOutputStream.close(__HttpURLConnection.java:2861)
        at
        
sun.net.www.protocol.http.__HttpURLConnection.__getInputStream(__HttpURLConnection.java:1175)
        at
        
java.net.HttpURLConnection.__getResponseCode(__HttpURLConnection.java:379)
        at
        
org.apache.cxf.transport.http.__URLConnectionHTTPConduit$__URLConnectionWrappedOutputStre__am.getResponseCode(__URLConnectionHTTPConduit.java:__260)
        at
        
org.apache.cxf.transport.http.__HTTPConduit$__WrappedOutputStream.__handleResponseInternal(__HTTPConduit.java:1517)
        at
        
org.apache.cxf.transport.http.__HTTPConduit$__WrappedOutputStream.__handleResponse(HTTPConduit.__java:1490)
        at
        
org.apache.cxf.transport.http.__HTTPConduit$__WrappedOutputStream.close(__HTTPConduit.java:1309)
        ... 34 more

        I tried to detect the special message to be mutated using an
        extra path
        string appended to the real path. It worked, it was detected, but
        something went wrong...

        i2cat
        Julio C. Barrera Juez
        Office phone: +34 93 357 99 27 <tel:%2B34%2093%20357%2099%2027>
        Distributed Applications and Networks Area (DANA)
        i2CAT Foundation, Barcelona, Spain
        http://dana.i2cat.net <http://dana.i2cat.net/>



        On 17 October 2013 12:17, Sergey Beryozkin <[email protected]
        <mailto:[email protected]>
        <mailto:[email protected] <mailto:[email protected]>>> wrote:

             Hi

             Can you register an instance of JAX-RS 2.0
        ClientRequestFilter (as a
             provider) and set your method & request URI if needed there ?
             That should make it simpler for you.

             Re using a custom CXF interceptor, it really should have the
             properties which you check already set on the message passed to
             handleMessage(), that message is an out message, so you
        should have
             "message == message.getExchange().____getOutMessage()" hold
        true.


             Cheers, Sergey


             On 17/10/13 08:11, Julio Carlos Barrera Juez wrote:

                 I'm trying to workaround this problem with an output CXF
                 interceptor. I
                 have modified the DELETE request to be a POST request
        allowing a
                 body. I
                 want that my interceptor will detect the POST request
        and will
                 change it to
                 a DELETE. I'm having some problems to achieve it. How
        can the
                 interceptor
                 modify the message object to achieve my goal?

                 I have written something like this:

                 public class PostToDeleteWithBodyIntercepto____r extends
                 AbstractPhaseInterceptor<____Message> {


                    public final static String EXTRA_PATH =
        "/mutatePOSTtoDELETE";

                 public PostToDeleteWithBodyIntercepto____r() {

                 super(Phase.PRE_PROTOCOL);
                    }

                 public void handleMessage(Message message) {
                    String path = (String)

        message.getExchange().____getOutMessage().get(Message.____REQUEST_URI);
                 String method = (String)

        
message.getExchange().____getOutMessage().get(Message.____HTTP_REQUEST_METHOD);

                    if (method != null && method.equals("POST") && path
        != null &&
                 path.endsWith(EXTRA_PATH)) {
                 // TODO remove EXTRA_PATH
                    // TODO transform POST into DELETE
                 }
                    }
                 }

                 I have a few doubts:

                      - I don't know how to modify the path and the
        method of the
                 request. I

                      have tried modifying the content of the
                      - I don't know what is the exact phase where apply it.
                      - Why do I need to look for exchange, out message
        to see
                 current path

                      and method? It should be in the message, but the
        values are
                 null.

                 Thank you!

                 [image: i2cat]
                 Julio C. Barrera Juez
                 Office phone: +34 93 357 99 27
        <tel:%2B34%2093%20357%2099%2027> <tel:%2B34%2093%20357%2099%__2027>

                 Distributed Applications and Networks Area (DANA)
                 i2CAT Foundation, Barcelona, Spain
        http://dana.i2cat.net


                 On 16 October 2013 16:54, Sergey Beryozkin
        <[email protected] <mailto:[email protected]>
                 <mailto:[email protected]
        <mailto:[email protected]>>> wrote:

                     Hi,

                     On 16/10/13 15:36, Julio Carlos Barrera Juez wrote:

                         Yes, the server is not under my control. I want to
                         develop a client
                         because
                         I like how CXF works and it is a dependency for
        other
                         issues in my
                         project.
                         Obviously I would never develop a service with
        body in
                         DELETE requests.

                         The, taking into account that I'm using CXF
        2.7.x, is it
                         possible to
                         workaround my problem using CXF?

                            Probably not at the moment,

                     I've opened
        https://issues.apache.org/**____jira/browse/CXF-5337
        <https://issues.apache.org/**__jira/browse/CXF-5337>
                     <https://issues.apache.org/**__jira/browse/CXF-5337
        
<https://issues.apache.org/**jira/browse/CXF-5337>><https://____issues.apache.org/jira/__browse/__CXF-5337
        <http://issues.apache.org/jira/browse/__CXF-5337>

                     <https://issues.apache.org/__jira/browse/CXF-5337
        <https://issues.apache.org/jira/browse/CXF-5337>>>


                     Please watch it.

                     In meantime, may be it is possible to 'tunnel' it,
        example,
                     use POST but
                     set some header with the real/intended HTTP verb
        such as
                     DELETE, the target
                     server would need to replace POST with DELETE, the
        easy way
                     is to say
                     create Servlet filter which will use HTTPServletRequest
                     wrapper to return
                     DELETE, some work is needed there but no changes to the
                     server code itself
                     will be required.

                     Otherwise - try snapshots once CXF-5337 gets resolved

                     Thanks, Sergey

                         Thank you Sergey!

                         [image: i2cat]
                         Julio C. Barrera Juez
                         Office phone: +34 93 357 99 27
        <tel:%2B34%2093%20357%2099%2027>
                         <tel:%2B34%2093%20357%2099%__2027>

                         Distributed Applications and Networks Area (DANA)
                         i2CAT Foundation, Barcelona, Spain
        http://dana.i2cat.net


                         On 16 October 2013 16:23, Sergey Beryozkin
                         <[email protected]
        <mailto:[email protected]> <mailto:[email protected]
        <mailto:[email protected]>>> wrote:

                            Right, looks like the following has to be
        done with
                         HTTPClient:


        https://code.google.com/p/****____rest-client/source/browse/**
        <https://code.google.com/p/****__rest-client/source/browse/**>

        <https://code.google.com/p/***__*rest-client/source/browse/**
        
<https://code.google.com/p/****rest-client/source/browse/**>>__<h__ttps://code.google.com/p/*__*__rest-client/source/browse/*__*
        <http://code.google.com/p/**__rest-client/source/browse/**>

        <https://code.google.com/p/**__rest-client/source/browse/**
        <https://code.google.com/p/**rest-client/source/browse/**>>>

        
restclient-lib/src/main/java/*____***org/wiztools/restclient/____http/****

        EntityEnclosingDelete.java<____htt**ps://code.google.com/p/____rest-**
        <http://code.google.com/p/__rest-**>
                             <http://code.google.com/p/__rest-**
        <http://code.google.com/p/rest-**>>

        client/source/browse/**____restclient-lib/src/main/java/*____*

        
org/wiztools/restclient/http/*____*EntityEnclosingDelete.java<__ht__tps://code.google.com/p/__rest-__client/source/browse/____restclient-lib/src/main/java/____org/wiztools/restclient/http/____EntityEnclosingDelete.java
        
<http://code.google.com/p/rest-__client/source/browse/__restclient-lib/src/main/java/__org/wiztools/restclient/http/__EntityEnclosingDelete.java>


        
<https://code.google.com/p/__rest-client/source/browse/__restclient-lib/src/main/java/__org/wiztools/restclient/http/__EntityEnclosingDelete.java
        
<https://code.google.com/p/rest-client/source/browse/restclient-lib/src/main/java/org/wiztools/restclient/http/EntityEnclosingDelete.java>>>




                             This is the code based on the advice from
        HttpClient
                             forums.

                             I guess we should check if CXF Async
        Conduit can be
                             updated respectively

                             By the way, I'm assuming you have to do
        DELETE with
                             a body because you
                             have some existing/legacy service expecting
        it this
                             way ? Now and then
                             users ask about it, and I don't mind to get the
                             Async HTTP conduit
                             updated
                             a bit anyway, but if you have say a CXF server
                             listening, then I'm sure
                             there could be an easier way :-)

                             Cheers, Sergey


                             On 16/10/13 15:11, Julio Carlos Barrera
        Juez wrote:

                                Looking for logs, I've realized that the
        property
                             is producing changes.

                                 I
                                 mean the Async HTTP client is being used.
                                 However my DELETE request has
                                 no
                                 body. My client interface is JAX-RS
        annotated,
                                 my Resource class is JaxB
                                 annotated:

                                 @Path("/server/path")
                                 @DELETE

        @Consumes(MediaType.****____APPLICATION_JSON)



                                      public void
        deleteResource(Resource resource);

                                 I have a create method working with de same
                                 configuration and it works:

                                      @Path("/server/path")
                                 @POST

        @Consumes(MediaType.****____APPLICATION_JSON)



                                      public void
        createResource(Resource resource);

                                 I'm using Jackson as JSON serializer, but I
                                 guess it has no relation
                                 with
                                 this problem.

                                 These log lines show that the DELETE
        request has
                                 content-lenght 0 and
                                 the  Async HTTP client is being used

                                 [I/O dispatcher 2] DEBUG

        
org.apache.cxf.transport.http.____****asyncclient.****____AsyncHTTPConduitFactory$2


                                 -

                                 Connection leased: [id: 2][route:
                                 {}->http://my_server][total kept
                                 alive:
                                 0; route allocated: 1 of 1000; total
        allocated:
                                 0 of 5000]
                                 [I/O dispatcher 2] DEBUG

        
org.apache.cxf.transport.http.____****asyncclient.****____AsyncHTTPConduitFactory$3


                                 -
                                 [exchange: 3] Connection allocated:

        [id:2][route:{}->http:/my_****____server][state:null]

                                 [I/O dispatcher 2] DEBUG
                                 org.apache.http.impl.nio.****
                                 reactor.IOSessionImpl
                                 -
                                 http-outgoing-2 192.168.254.86:35152
        <http://192.168.254.86:35152>

        <http://192.168.254.86:35152><__->server___****ip[ACTIVE][r:]:

                                 Set
                                 attribute
                                 http.nio.exchange-handler
                                 [I/O dispatcher 2] DEBUG
                                 org.apache.http.impl.nio.****
                                 reactor.IOSessionImpl
                                 -
                                 http-outgoing-2 192.168.254.86:35152
        <http://192.168.254.86:35152>

        <http://192.168.254.86:35152><__->server___****ip[ACTIVE][rw:]__:

                                 Event
                                 set [w]
                                 [I/O dispatcher 2] DEBUG
                                 org.apache.http.impl.nio.****
                                 reactor.IOSessionImpl
                                 -
                                 http-outgoing-2 192.168.254.86:35152
        <http://192.168.254.86:35152>

        <http://192.168.254.86:35152><__->server___****ip[ACTIVE][rw:]__:

                                 Set


                                 attribute http.nio.http-exchange-state
                                 [I/O dispatcher 2] DEBUG

        
org.apache.cxf.transport.http.____****asyncclient.****____AsyncHTTPConduitFactory$3


                                 -

                                 [exchange: 3] Attempt 1 to execute request
                                 [I/O dispatcher 2] DEBUG
                                 org.apache.http.impl.nio.****
                                 reactor.IOSessionImpl
                                 -
                                 http-outgoing-2 192.168.254.86:35152
        <http://192.168.254.86:35152>

        <http://192.168.254.86:35152><__->server___****ip[ACTIVE][rw:]__:

                                 Set
                                 timeout
                                 60000
                                 [I/O dispatcher 2] DEBUG
        org.apache.http.client.****

                                 protocol.RequestAuthCache

                                 -
                                 Auth cache not set in the context
                                 [I/O dispatcher 2] DEBUG

        
org.apache.http.client.****____protocol.****____RequestTargetAuthentication

                                 -

                                 Target

                                 auth
                                 state: UNCHALLENGED
                                 [I/O dispatcher 2] DEBUG

        
org.apache.http.client.****____protocol.****____RequestProxyAuthentication

                                 -

                                 Proxy

                                 auth
                                 state: UNCHALLENGED
                                 [I/O dispatcher 2] DEBUG
        org.apache.http.headers
                                 - http-outgoing-2 >> *
                                 DELETE* /server/path HTTP/1.1

                                 [I/O dispatcher 2] DEBUG
        org.apache.http.headers
                                 - http-outgoing-2 >>
                                 Accept: text/plain
                                 [I/O dispatcher 2] DEBUG
        org.apache.http.headers
                                 - http-outgoing-2 >>
                                 User-Agent: Apache CXF 2.7.4
                                 [I/O dispatcher 2] DEBUG
        org.apache.http.headers
                                 - http-outgoing-2 >>
                                 *Content-Length:
                                 0*

                                 [I/O dispatcher 2] DEBUG
        org.apache.http.headers
                                 - http-outgoing-2 >>
                                 Host:
                                 my_server
                                 [I/O dispatcher 2] DEBUG
        org.apache.http.headers
                                 - http-outgoing-2 >>
                                 Connection: Keep-Alive

                                 [image: i2cat]
                                 Julio C. Barrera Juez
                                 Office phone: +34 93 357 99 27
        <tel:%2B34%2093%20357%2099%2027>
                                 <tel:%2B34%2093%20357%2099%__2027>

                                 Distributed Applications and Networks
        Area (DANA)
                                 i2CAT Foundation, Barcelona, Spain
        http://dana.i2cat.net


                                 On 16 October 2013 15:17, Julio Carlos
        Barrera
                                 Juez <
        [email protected] <mailto:[email protected]>
                                 <mailto:juliocarlos.barrera@__i2cat.net
        <mailto:[email protected]>>> wrote:

                                     I don't know how to install CXF
        Async HTTP
                                 transport. I have the maven

                                     artifact in my project
        dependencies, but
                                     nothing else.

                                     [image: i2cat]
                                     Julio C. Barrera Juez
                                     Office phone: +34 93 357 99 27
        <tel:%2B34%2093%20357%2099%2027>
                                     <tel:%2B34%2093%20357%2099%__2027>

                                     Distributed Applications and
        Networks Area
                                     (DANA)
                                     i2CAT Foundation, Barcelona, Spain
        http://dana.i2cat.net


                                     On 16 October 2013 13:14, Sergey
        Beryozkin
                                     <[email protected]
        <mailto:[email protected]>
                                     <mailto:[email protected]
        <mailto:[email protected]>>>

                                     wrote:

                                         I guess you don't have CXF
        Async HTTP
                                     transport installed ?

                                         Other than that I've no idea, if it
                                         won;t work with the Async module
                                         then
                                         I guess it is possible to do
                                         Sergey

                                         On 16/10/13 11:49, Julio Carlos
        Barrera
                                         Juez wrote:

                                             I tried to use this information
                                         before, but I don't know how to
                                         solve

                                             my
                                             problem.

                                             I have something like this:

                                             ProxyClassLoader
        classLoader = new
                                             ProxyClassLoader();


        classLoader.addLoader(******____IServiceInterface.class.****
                                             getClassLoader());

        classLoader.addLoader(******____JAXRSClientFactoryBean.class.*____*****




                                             getClassLoader());

                                             JAXRSClientFactoryBean bean
        = new
                                             JAXRSClientFactoryBean();
                                             bean.setAddress(uri);

        bean.setResourceClass(******____IServiceInterface.class);


        bean.setClassLoader(******____classLoader);





                                             client (IServiceInterface)
                                             bean.create();

                                             Then I can use the client
        object as
                                             usual. But if fails sending
                                             DELETE
                                             requests with body.

                                             I tried doing this:

                                             ProxyClassLoader
        classLoader = new
                                             ProxyClassLoader();


        classLoader.addLoader(******____IServiceInterface.class.****
                                             getClassLoader());

        classLoader.addLoader(******____JAXRSClientFactoryBean.class.*____*****




                                             getClassLoader());

                                             JAXRSClientFactoryBean bean
        = new
                                             JAXRSClientFactoryBean();
                                             bean.setAddress(uri);

        bean.setResourceClass(******____IServiceInterface.class);


        bean.setClassLoader(******____classLoader);





                                             // allow body in DELETE
        requests
                                             Client client = bean.create();


        WebClient.getConfig(client).**____****getRequestContext().put(__"*__*

                                             use.****
                                             async.http.conduit",
                                             true);

                                             (IServiceInterface)

        client.******____whateverMethodThatSendsDelete(____**


                                             ****);



                                             But it didn't work.

                                             What am I missing?

                                             [image: i2cat]
                                             Julio C. Barrera Juez
                                             Office phone: +34 93 357 99
        27 <tel:%2B34%2093%20357%2099%2027>

        <tel:%2B34%2093%20357%2099%__2027>

                                             Distributed Applications and
                                             Networks Area (DANA)
                                             i2CAT Foundation,
        Barcelona, Spain
        http://dana.i2cat.net


                                             On 16 October 2013 12:00,
        Sergey
                                             Beryozkin
        <[email protected] <mailto:[email protected]>

        <mailto:[email protected] <mailto:[email protected]>>>

                                             wrote:

                                                  Hi


                                                 On 16/10/13 09:18,
        Julio Carlos
                                                 Barrera Juez wrote:

                                                      Hi.


                                                     I'm creating a REST
        client
                                                     using
        JAXRSClientFactoryBean and
                                                     ProxyClassLoader
        based on a
                                                     JAXRS annotated
        Java interface.

                                                     I want to send a
        DELETE with
                                                     body, which is not
                                                     recommended by
                                                     RESTful
                                                     philosophy, but it is
                                                     allowed by HTTP 1.1
        RFC.

                                                     The body is not
        sent by the
                                                     client and I have
        read a lot of
                                                     problems
                                                     to
                                                     allow it.

                                                     Is it possible send
        a body
                                                     in my DELETE
        requests with this
                                                     configuration?

                                                           Please check
        this thread


        http://cxf.547215.n5.nabble.**____******com/JaxRS-Client-with-__**

                                                 Deletes-****

        td5731444.html<http://cxf.****____54**7215.n5.nabble.com/__JaxRS-*__***
        <http://7215.n5.nabble.com/JaxRS-*__***>

        <http://7215.n5.nabble.com/__JaxRS-****
        
<http://7215.n5.nabble.com/JaxRS-****>><http://7215.n5.__nabble.com/__JaxRS-**
        <http://7215.n5.nabble.com/__JaxRS-**>

        <http://7215.n5.nabble.com/__JaxRS-**
        <http://7215.n5.nabble.com/JaxRS-**>>>

        <http://547215.n5.nabble.com/*____*JaxRS-**
        <http://547215.n5.nabble.com/*__*JaxRS-**>

        <http://547215.n5.nabble.com/*__*JaxRS-**
        
<http://547215.n5.nabble.com/**JaxRS-**>><http://547215.n5.____nabble.com/JaxRS-**
        <http://nabble.com/JaxRS-**>

        <http://547215.n5.nabble.com/__JaxRS-**
        <http://547215.n5.nabble.com/JaxRS-**>>>



        Client-with-Deletes-td5731444.____******html<http://cxf.__547215. 
<http://cxf.547215.>__n5.
                                                 <http://cxf.547215.n5.>****
        nabble.com/JaxRS-Client-with-*____***Deletes-td5731444.html
        <http://nabble.com/JaxRS-Client-with-*__***Deletes-td5731444.html>

        <http://nabble.com/JaxRS-__Client-with-****Deletes-__td5731444.html
        
<http://nabble.com/JaxRS-Client-with-****Deletes-td5731444.html>><http__://nabbl__e.com/JaxRS-Client-__with-**__Deletes-td5731444.html
        <http://nabble.com/JaxRS-Client-__with-**Deletes-td5731444.html>

        <http://nabble.com/JaxRS-__Client-with-**Deletes-__td5731444.html 
<http://nabble.com/JaxRS-Client-with-**Deletes-td5731444.html>>>

        
<http:/**/cxf.547215.n5.__nabb__le.com/**JaxRS-Client-__with-__Deletes-**
        <http://nabble.com/**JaxRS-Client-__with-Deletes-**>

        <http://cxf.547215.n5.nabble.__com/**JaxRS-Client-with-__Deletes-**
        <http://cxf.547215.n5.nabble.com/**JaxRS-Client-with-Deletes-**>>


        
td5731444.html<http://cxf.__54__7215.n5.nabble.com/JaxRS-____Client-with-Deletes-td5731444.____html
        
<http://547215.n5.nabble.com/JaxRS-__Client-with-Deletes-td5731444.__html>


        
<http://cxf.547215.n5.nabble.__com/JaxRS-Client-with-Deletes-__td5731444.html
        
<http://cxf.547215.n5.nabble.com/JaxRS-Client-with-Deletes-td5731444.html>>>








                                                 Cheers, Sergey




                                                       Thank you!


                                                    Regards, Julio


                                                     [image: i2cat]
                                                     Julio C. Barrera Juez
                                                     Office phone: +34
        93 357 99
                                                     27

        <tel:%2B34%2093%20357%2099%__2027>

                                                     Distributed
        Applications and
                                                     Networks Area (DANA)
                                                     i2CAT Foundation,
        Barcelona,
                                                     Spain
        http://dana.i2cat.net






                                                --

                                         Sergey Beryozkin

                                         Talend Community Coders
        http://coders.talend.com/

                                         Blog:
        http://sberyozkin.blogspot.com






                             --
                             Sergey Beryozkin

                             Talend Community Coders
        http://coders.talend.com/

                             Blog: http://sberyozkin.blogspot.com




                     --
                     Sergey Beryozkin

                     Talend Community Coders
        http://coders.talend.com/

                     Blog: http://sberyozkin.blogspot.com








Reply via email to