Hi,

Here is a simple test case to prove my point:

public class URITestCase {
   @Test
   public void testURI() {
       URI uri = URI.create("http://abc";);
       URI uri1 = uri.resolve("uri");
       URI uri2 = URI.create("http://abcxyz";);
       Assert.assertEquals(uri1, uri2);
   }
}

The Assert will fail, even though the uri1.toString() equals to uri2.toString().

Thanks,
Raymond

--------------------------------------------------
From: "Vamsavardhana Reddy" <[EMAIL PROTECTED]>
Sent: Tuesday, June 10, 2008 8:26 AM
To: <tuscany-dev@ws.apache.org>
Subject: Re: Databinding tests for array of java.net.URI

Hi Raymond,

Whether or not resolve() works with http://abc, I have a URI created as
URI.create("http://abc";).resolve("xyz") and java does not complain about
this URI object . The current problem can be restated that this URI object
can not be passed in an array of URI objects back and forth between client
and service component in case of a remotable service. The URI object can be
passed between the client and service components properly when the service
method takes an URI as argument.

++Vamsi

On Tue, Jun 10, 2008 at 8:33 PM, Raymond Feng <[EMAIL PROTECTED]> wrote:

I think it's a problem in the test case. The resolve() cannot work with
http://abc (which abc is treated as a host name). I changed it to
http://abc/, then it works well.

You can simply create a test case using URIs only without Tuscany in the
picture.

Thanks,
Raymond
--------------------------------------------------
From: "Vamsavardhana Reddy" <[EMAIL PROTECTED]>
Sent: Tuesday, June 10, 2008 2:20 AM
To: <tuscany-dev@ws.apache.org>
Subject: Databinding tests for array of java.net.URI


 I am using the following URI's in my test:
      URI[] uris = new URI[3];
      uris[0] = URI.create("a/b/c");
      uris[1] = URI.create("http://abc";);
      uris[2] = URI.create("ftp://a/b";);

The return value from the service method is inputUri.resolve("uri").

One service method takes an uri as input and returns the changed uri as
given above. Another method takes an array of uri as input and returns an
array of uri where each element in the returned array contains an uri
which
is changed as given above. The remotable service invoked over binding.sca is able to provide expected return value for uris[1] with the method that
takes URI as argument.  But, with the method that takes URI array as
argument, the return value for uris[1] is not as expected.

In the failing case the input uri has (authority = "abc", host = "abc",
path
= "") , expected uri has (authority = "abc", host = "abc", path = "uri")
and
the uri returned from the service method has (authority="abcuri", host =
"abcuri", path = ""). I have verified through the debugger that the array
being returned by the service method has the second element as expected.
But, once the array is returned to the caller after data transformations,
the element is changed.  There definitely is a problem with the data
transformation.



Reply via email to