You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2012/06/27 13:58:33 UTC
svn commit: r1354452 - in /cxf/branches/2.4.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/
rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/
Author: sergeyb
Date: Wed Jun 27 11:58:32 2012
New Revision: 1354452
URL: http://svn.apache.org/viewvc?rev=1354452&view=rev
Log:
Merged revisions 1354451 via svnmerge from
https://svn.apache.org/repos/asf/cxf/branches/2.5.x-fixes
................
r1354451 | sergeyb | 2012-06-27 12:55:57 +0100 (Wed, 27 Jun 2012) | 24 lines
Merged revisions 1354447 via svnmerge from
https://svn.apache.org/repos/asf/cxf/branches/2.6.x-fixes
................
r1354447 | sergeyb | 2012-06-27 12:51:30 +0100 (Wed, 27 Jun 2012) | 17 lines
Merged revisions 1354441-1354442,1354446 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1354441 | sergeyb | 2012-06-27 12:44:38 +0100 (Wed, 27 Jun 2012) | 1 line
[CXF-4396] Checking a port when 0.0.0.0 address gets replaced
........
r1354442 | sergeyb | 2012-06-27 12:45:33 +0100 (Wed, 27 Jun 2012) | 1 line
[CXF-4379] Passing corect type for adapters bound to interfaces to be discoverd
........
r1354446 | sergeyb | 2012-06-27 12:49:57 +0100 (Wed, 27 Jun 2012) | 1 line
[CXF-4379] Minor optimization
........
................
................
Modified:
cxf/branches/2.4.x-fixes/ (props changed)
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Merged /cxf/branches/2.5.x-fixes:r1354451
Merged /cxf/trunk:r1354441-1354446
Merged /cxf/branches/2.6.x-fixes:r1354447
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java Wed Jun 27 11:58:32 2012
@@ -200,7 +200,10 @@ public final class HttpUtils {
if (!absolute) {
u = URI.create(base + u.toString());
} else {
- u = URI.create(u.toString().replace(ANY_IP_ADDRESS, serverAndPort));
+ int originalPort = u.getPort();
+ String replaceValue = originalPort == -1 ? ANY_IP_ADDRESS
+ : ANY_IP_ADDRESS + ":" + originalPort;
+ u = URI.create(u.toString().replace(replaceValue, serverAndPort));
}
}
return u;
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java Wed Jun 27 11:58:32 2012
@@ -366,10 +366,11 @@ public final class InjectionUtils {
result = createFromParameterHandler(value, pClass, message);
}
- if (result != null && adapterHasToBeUsed) {
+ if (adapterHasToBeUsed) {
// as the last resort, try XmlJavaTypeAdapters
+ Object valueToReplace = result != null ? result : value;
try {
- result = JAXBUtils.convertWithAdapter(result, paramAnns);
+ result = JAXBUtils.convertWithAdapter(valueToReplace, pClass, paramAnns);
} catch (Throwable ex) {
result = null;
}
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java Wed Jun 27 11:58:32 2012
@@ -29,10 +29,11 @@ public final class JAXBUtils {
}
- public static Object convertWithAdapter(Object obj,
+ public static Object convertWithAdapter(Object obj,
+ Class<?> adapterClass,
Annotation[] anns) {
return useAdapter(obj,
- getAdapter(obj.getClass(), anns),
+ getAdapter(adapterClass, anns),
false,
obj);
}
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java?rev=1354452&r1=1354451&r2=1354452&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java Wed Jun 27 11:58:32 2012
@@ -178,6 +178,29 @@ public class HttpUtilsTest extends Asser
assertEquals("http://localhost:8080/bar/foo", u.toString());
}
+ @Test
+ public void testReplaceAnyIPAddressWithPort() {
+ Message m = new MessageImpl();
+ HttpServletRequest req = EasyMock.createMock(HttpServletRequest.class);
+ m.put(AbstractHTTPDestination.HTTP_REQUEST, req);
+ req.getScheme();
+ EasyMock.expectLastCall().andReturn("http");
+ req.getServerName();
+ EasyMock.expectLastCall().andReturn("localhost");
+ req.getLocalPort();
+ EasyMock.expectLastCall().andReturn(8080);
+ EasyMock.replay(req);
+ URI u = HttpUtils.toAbsoluteUri(URI.create("http://0.0.0.0:8080/bar/foo"), m);
+ assertEquals("http://localhost:8080/bar/foo", u.toString());
+ }
+
+ @Test
+ public void testReplaceLocalHostWithPort() {
+ Message m = new MessageImpl();
+ URI u = HttpUtils.toAbsoluteUri(URI.create("http://localhost:8080/bar/foo"), m);
+ assertEquals("http://localhost:8080/bar/foo", u.toString());
+ }
+
private void doTestGetBaseAddress(String baseURI, String expected) {
Message m = new MessageImpl();
Exchange exchange = new ExchangeImpl();
Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java?rev=1354452&r1=1354451&r2=1354452&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java Wed Jun 27 11:58:32 2012
@@ -18,6 +18,7 @@
*/
package org.apache.cxf.jaxrs.utils;
+import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -27,13 +28,44 @@ import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
+import javax.ws.rs.core.Application;
import javax.ws.rs.core.MultivaluedMap;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.jaxrs.model.ParameterType;
+import org.apache.cxf.jaxrs.provider.ProviderFactory;
+import org.apache.cxf.message.Exchange;
+import org.apache.cxf.message.ExchangeImpl;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
+import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Test;
public class InjectionUtilsTest extends Assert {
+
+ @Test
+ public void testHandleParameterWithXmlAdapterOnInterface() throws Exception {
+ // Arrange
+ String value = "1.1";
+
+ // Act
+ Object id = InjectionUtils.handleParameter(value,
+ true,
+ Id.class,
+ new Annotation[] {},
+ ParameterType.PATH,
+ createMessage());
+
+ // Assert
+ assertTrue(id instanceof Id);
+ assertEquals(value, ((Id)id).getId());
+ }
+
public void testCollectionTypeFromArray() {
assertNull(InjectionUtils.getCollectionType(String[].class));
}
@@ -179,4 +211,62 @@ public class InjectionUtilsTest extends
}
}
+ private Message createMessage() {
+ ProviderFactory factory = ProviderFactory.getInstance();
+ Message m = new MessageImpl();
+ m.put("org.apache.cxf.http.case_insensitive_queries", false);
+ Exchange e = new ExchangeImpl();
+ m.setExchange(e);
+ e.setInMessage(m);
+ Endpoint endpoint = EasyMock.createMock(Endpoint.class);
+ endpoint.getEndpointInfo();
+ EasyMock.expectLastCall().andReturn(null).anyTimes();
+ endpoint.get(Application.class.getName());
+ EasyMock.expectLastCall().andReturn(null);
+ endpoint.size();
+ EasyMock.expectLastCall().andReturn(0).anyTimes();
+ endpoint.isEmpty();
+ EasyMock.expectLastCall().andReturn(true).anyTimes();
+ endpoint.get(ProviderFactory.class.getName());
+ EasyMock.expectLastCall().andReturn(factory).anyTimes();
+ EasyMock.replay(endpoint);
+ e.put(Endpoint.class, endpoint);
+ return m;
+ }
+
+ public static class Adapter extends XmlAdapter<String, Id> {
+
+ @Override
+ public String marshal(final Id id) throws Exception {
+ return id.getId();
+ }
+
+ @Override
+ public Id unmarshal(final String idStr) throws Exception {
+ Id id = new DelegatingId();
+ id.setId(idStr);
+ return id;
+ }
+ }
+
+ @XmlJavaTypeAdapter(Adapter.class)
+ public interface Id {
+ String getId();
+
+ void setId(String id);
+ }
+
+ public static class DelegatingId implements Id {
+
+ private String id;
+
+ public String getId() {
+ return this.id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ }
}
Re: svn commit: r1354452 - in /cxf/branches/2.4.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/
rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Willem, Freeman
Willem, the fix looks OK, thanks for doing it,
I was doing the merge to 2.5.x manually so that led to that broken code
Cheers, Sergey
On 05/07/12 10:08, Sergey Beryozkin wrote:
> Oh, sorry, completely missed it. Will look asap
>
> Cheers, Sergey
>
> On 05/07/12 10:02, Willem Jiang wrote:
>> I just committed a quick fix for it.
>> Sergey, if you have time, please double check it.
>>
>>
>> On Wed Jul 4 08:44:12 2012, Freeman Fang wrote:
>>> Hi Sergey,
>>>
>>> This commit break some jaxrs tests in 2.5.x branch, they're
>>>
>>> org.apache.cxf.jaxrs.utils.InjectionUtilsTest.testHandleParameterWithXmlAdapterOnInterface
>>>
>>>
>>>
>>>
>>> org.apache.cxf.jaxrs.ext.codegen.CodeGeneratorProviderTest.testBookStoreAsInterface
>>>
>>>
>>>
>>>
>>> org.apache.cxf.jaxrs.ext.codegen.CodeGeneratorProviderTest.testBookStoreAsClass
>>>
>>>
>>>
>>>
>>> org.apache.cxf.jaxrs.ext.codegen.CodeGeneratorProviderTest.testBookStoreTypesOnly
>>>
>>>
>>>
>>>
>>> Those test failed since Project CXF-2.5.x #337[1] on CI and afterwards.
>>>
>>> The reason for CodeGeneratorProviderTest failure is because there's
>>> another extra "Books.class" in addition to the classes listed, as
>>> CodeGeneratorProviderTest get removed from trunk and 2.6.x branches,
>>> so I'm not sure CodeGeneratorProviderTest is still valid based on
>>> current jaxrs code.
>>>
>>> The InjectionUtilsTest failed because the code
>>> Object id = InjectionUtils.handleParameter(value,
>>> true,
>>> Id.class,
>>> new Annotation[] {},
>>> ParameterType.PATH,
>>> createMessage());
>>>
>>> now return id as a String.class, but not the expected Id.class.
>>>
>>> Could you please take a look?
>>>
>>>
>>> [1]https://builds.apache.org/job/CXF-2.5.x/337/#showFailuresLink
>>>
>>> Thanks
>>> Freeman
>>>
>>> On 2012-6-27, at 下午7:58, sergeyb@apache.org wrote:
>>>
>>>> Author: sergeyb
>>>> Date: Wed Jun 27 11:58:32 2012
>>>> New Revision: 1354452
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=1354452&view=rev
>>>> Log:
>>>> Merged revisions 1354451 via svnmerge from
>>>> https://svn.apache.org/repos/asf/cxf/branches/2.5.x-fixes
>>>>
>>>> ................
>>>> r1354451 | sergeyb | 2012-06-27 12:55:57 +0100 (Wed, 27 Jun 2012) |
>>>> 24 lines
>>>>
>>>> Merged revisions 1354447 via svnmerge from
>>>> https://svn.apache.org/repos/asf/cxf/branches/2.6.x-fixes
>>>>
>>>> ................
>>>> r1354447 | sergeyb | 2012-06-27 12:51:30 +0100 (Wed, 27 Jun 2012)
>>>> | 17 lines
>>>>
>>>> Merged revisions 1354441-1354442,1354446 via svnmerge from
>>>> https://svn.apache.org/repos/asf/cxf/trunk
>>>>
>>>> ........
>>>> r1354441 | sergeyb | 2012-06-27 12:44:38 +0100 (Wed, 27 Jun
>>>> 2012) | 1 line
>>>>
>>>> [CXF-4396] Checking a port when 0.0.0.0 address gets replaced
>>>> ........
>>>> r1354442 | sergeyb | 2012-06-27 12:45:33 +0100 (Wed, 27 Jun
>>>> 2012) | 1 line
>>>>
>>>> [CXF-4379] Passing corect type for adapters bound to interfaces
>>>> to be discoverd
>>>> ........
>>>> r1354446 | sergeyb | 2012-06-27 12:49:57 +0100 (Wed, 27 Jun
>>>> 2012) | 1 line
>>>>
>>>> [CXF-4379] Minor optimization
>>>> ........
>>>> ................
>>>> ................
>>>>
>>>> Modified:
>>>> cxf/branches/2.4.x-fixes/ (props changed)
>>>>
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
>>>>
>>>>
>>>>
>>>>
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
>>>>
>>>>
>>>>
>>>>
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
>>>>
>>>>
>>>>
>>>>
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
>>>>
>>>>
>>>>
>>>>
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>>>>
>>>>
>>>>
>>>>
>>>> Propchange: cxf/branches/2.4.x-fixes/
>>>> ------------------------------------------------------------------------------
>>>>
>>>>
>>>>
>>>> Merged /cxf/branches/2.5.x-fixes:r1354451
>>>> Merged /cxf/trunk:r1354441-1354446
>>>> Merged /cxf/branches/2.6.x-fixes:r1354447
>>>>
>>>> Propchange: cxf/branches/2.4.x-fixes/
>>>> ------------------------------------------------------------------------------
>>>>
>>>>
>>>>
>>>> Binary property 'svnmerge-integrated' - no diff available.
>>>>
>>>> Modified:
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
>>>>
>>>>
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>>>
>>>>
>>>>
>>>> ==============================================================================
>>>>
>>>>
>>>>
>>>> ---
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
>>>>
>>>>
>>>> (original)
>>>> +++
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
>>>>
>>>>
>>>> Wed Jun 27 11:58:32 2012
>>>> @@ -200,7 +200,10 @@ public final class HttpUtils {
>>>> if (!absolute) {
>>>> u = URI.create(base + u.toString());
>>>> } else {
>>>> - u = URI.create(u.toString().replace(ANY_IP_ADDRESS,
>>>> serverAndPort));
>>>> + int originalPort = u.getPort();
>>>> + String replaceValue = originalPort == -1 ?
>>>> ANY_IP_ADDRESS
>>>> + : ANY_IP_ADDRESS + ":" + originalPort;
>>>> + u = URI.create(u.toString().replace(replaceValue,
>>>> serverAndPort));
>>>> }
>>>> }
>>>> return u;
>>>>
>>>> Modified:
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
>>>>
>>>>
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>>>
>>>>
>>>>
>>>> ==============================================================================
>>>>
>>>>
>>>>
>>>> ---
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
>>>>
>>>>
>>>> (original)
>>>> +++
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
>>>>
>>>>
>>>> Wed Jun 27 11:58:32 2012
>>>> @@ -366,10 +366,11 @@ public final class InjectionUtils {
>>>> result = createFromParameterHandler(value, pClass, message);
>>>> }
>>>>
>>>> - if (result != null && adapterHasToBeUsed) {
>>>> + if (adapterHasToBeUsed) {
>>>> // as the last resort, try XmlJavaTypeAdapters
>>>> + Object valueToReplace = result != null ? result : value;
>>>> try {
>>>> - result = JAXBUtils.convertWithAdapter(result,
>>>> paramAnns);
>>>> + result =
>>>> JAXBUtils.convertWithAdapter(valueToReplace, pClass, paramAnns);
>>>> } catch (Throwable ex) {
>>>> result = null;
>>>> }
>>>>
>>>> Modified:
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
>>>>
>>>>
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>>>
>>>>
>>>>
>>>> ==============================================================================
>>>>
>>>>
>>>>
>>>> ---
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
>>>>
>>>>
>>>> (original)
>>>> +++
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
>>>>
>>>>
>>>> Wed Jun 27 11:58:32 2012
>>>> @@ -29,10 +29,11 @@ public final class JAXBUtils {
>>>>
>>>> }
>>>>
>>>> - public static Object convertWithAdapter(Object obj,
>>>> + public static Object convertWithAdapter(Object obj,
>>>> + Class<?> adapterClass,
>>>> Annotation[] anns) {
>>>> return useAdapter(obj,
>>>> - getAdapter(obj.getClass(), anns),
>>>> + getAdapter(adapterClass, anns),
>>>> false,
>>>> obj);
>>>> }
>>>>
>>>> Modified:
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
>>>>
>>>>
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>>>
>>>>
>>>>
>>>> ==============================================================================
>>>>
>>>>
>>>>
>>>> ---
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
>>>>
>>>>
>>>> (original)
>>>> +++
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
>>>>
>>>>
>>>> Wed Jun 27 11:58:32 2012
>>>> @@ -178,6 +178,29 @@ public class HttpUtilsTest extends Asser
>>>> assertEquals("http://localhost:8080/bar/foo", u.toString());
>>>> }
>>>>
>>>> + @Test
>>>> + public void testReplaceAnyIPAddressWithPort() {
>>>> + Message m = new MessageImpl();
>>>> + HttpServletRequest req =
>>>> EasyMock.createMock(HttpServletRequest.class);
>>>> + m.put(AbstractHTTPDestination.HTTP_REQUEST, req);
>>>> + req.getScheme();
>>>> + EasyMock.expectLastCall().andReturn("http");
>>>> + req.getServerName();
>>>> + EasyMock.expectLastCall().andReturn("localhost");
>>>> + req.getLocalPort();
>>>> + EasyMock.expectLastCall().andReturn(8080);
>>>> + EasyMock.replay(req);
>>>> + URI u =
>>>> HttpUtils.toAbsoluteUri(URI.create("http://0.0.0.0:8080/bar/foo"), m);
>>>> + assertEquals("http://localhost:8080/bar/foo", u.toString());
>>>> + }
>>>> +
>>>> + @Test
>>>> + public void testReplaceLocalHostWithPort() {
>>>> + Message m = new MessageImpl();
>>>> + URI u =
>>>> HttpUtils.toAbsoluteUri(URI.create("http://localhost:8080/bar/foo"),
>>>> m);
>>>> + assertEquals("http://localhost:8080/bar/foo", u.toString());
>>>> + }
>>>> +
>>>> private void doTestGetBaseAddress(String baseURI, String expected) {
>>>> Message m = new MessageImpl();
>>>> Exchange exchange = new ExchangeImpl();
>>>>
>>>> Modified:
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>>>>
>>>>
>>>>
>>>> URL:
>>>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>>>
>>>>
>>>>
>>>> ==============================================================================
>>>>
>>>>
>>>>
>>>> ---
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>>>>
>>>>
>>>> (original)
>>>> +++
>>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>>>>
>>>>
>>>> Wed Jun 27 11:58:32 2012
>>>> @@ -18,6 +18,7 @@
>>>> */
>>>> package org.apache.cxf.jaxrs.utils;
>>>>
>>>> +import java.lang.annotation.Annotation;
>>>> import java.util.ArrayList;
>>>> import java.util.Collection;
>>>> import java.util.HashSet;
>>>> @@ -27,13 +28,44 @@ import java.util.Set;
>>>> import java.util.SortedSet;
>>>> import java.util.TreeSet;
>>>>
>>>> +import javax.ws.rs.core.Application;
>>>> import javax.ws.rs.core.MultivaluedMap;
>>>> +import javax.xml.bind.annotation.adapters.XmlAdapter;
>>>> +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
>>>> +
>>>> +import org.apache.cxf.endpoint.Endpoint;
>>>> +import org.apache.cxf.jaxrs.model.ParameterType;
>>>> +import org.apache.cxf.jaxrs.provider.ProviderFactory;
>>>> +import org.apache.cxf.message.Exchange;
>>>> +import org.apache.cxf.message.ExchangeImpl;
>>>> +import org.apache.cxf.message.Message;
>>>> +import org.apache.cxf.message.MessageImpl;
>>>> +import org.easymock.EasyMock;
>>>>
>>>> import org.junit.Assert;
>>>> import org.junit.Test;
>>>>
>>>> public class InjectionUtilsTest extends Assert {
>>>>
>>>> +
>>>> + @Test
>>>> + public void testHandleParameterWithXmlAdapterOnInterface()
>>>> throws Exception {
>>>> + // Arrange
>>>> + String value = "1.1";
>>>> +
>>>> + // Act
>>>> + Object id = InjectionUtils.handleParameter(value,
>>>> + true,
>>>> + Id.class,
>>>> + new Annotation[] {},
>>>> + ParameterType.PATH,
>>>> + createMessage());
>>>> +
>>>> + // Assert
>>>> + assertTrue(id instanceof Id);
>>>> + assertEquals(value, ((Id)id).getId());
>>>> + }
>>>> +
>>>> public void testCollectionTypeFromArray() {
>>>> assertNull(InjectionUtils.getCollectionType(String[].class));
>>>> }
>>>> @@ -179,4 +211,62 @@ public class InjectionUtilsTest extends
>>>> }
>>>> }
>>>>
>>>> + private Message createMessage() {
>>>> + ProviderFactory factory = ProviderFactory.getInstance();
>>>> + Message m = new MessageImpl();
>>>> + m.put("org.apache.cxf.http.case_insensitive_queries", false);
>>>> + Exchange e = new ExchangeImpl();
>>>> + m.setExchange(e);
>>>> + e.setInMessage(m);
>>>> + Endpoint endpoint = EasyMock.createMock(Endpoint.class);
>>>> + endpoint.getEndpointInfo();
>>>> + EasyMock.expectLastCall().andReturn(null).anyTimes();
>>>> + endpoint.get(Application.class.getName());
>>>> + EasyMock.expectLastCall().andReturn(null);
>>>> + endpoint.size();
>>>> + EasyMock.expectLastCall().andReturn(0).anyTimes();
>>>> + endpoint.isEmpty();
>>>> + EasyMock.expectLastCall().andReturn(true).anyTimes();
>>>> + endpoint.get(ProviderFactory.class.getName());
>>>> + EasyMock.expectLastCall().andReturn(factory).anyTimes();
>>>> + EasyMock.replay(endpoint);
>>>> + e.put(Endpoint.class, endpoint);
>>>> + return m;
>>>> + }
>>>> +
>>>> + public static class Adapter extends XmlAdapter<String, Id> {
>>>> +
>>>> + @Override
>>>> + public String marshal(final Id id) throws Exception {
>>>> + return id.getId();
>>>> + }
>>>> +
>>>> + @Override
>>>> + public Id unmarshal(final String idStr) throws Exception {
>>>> + Id id = new DelegatingId();
>>>> + id.setId(idStr);
>>>> + return id;
>>>> + }
>>>> + }
>>>> +
>>>> + @XmlJavaTypeAdapter(Adapter.class)
>>>> + public interface Id {
>>>> + String getId();
>>>> +
>>>> + void setId(String id);
>>>> + }
>>>> +
>>>> + public static class DelegatingId implements Id {
>>>> +
>>>> + private String id;
>>>> +
>>>> + public String getId() {
>>>> + return this.id;
>>>> + }
>>>> +
>>>> + public void setId(String id) {
>>>> + this.id = id;
>>>> + }
>>>> +
>>>> + }
>>>> }
>>>>
>>>>
>>>
>>> ---------------------------------------------
>>> Freeman Fang
>>>
>>> FuseSource
>>> Email:ffang@fusesource.com
>>> Web: fusesource.com
>>> Twitter: freemanfang
>>> Blog: http://freemanfang.blogspot.com
>>> http://blog.sina.com.cn/u/1473905042
>>> weibo: http://weibo.com/u/1473905042
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>> --
>> Willem
>> ----------------------------------
>> FuseSource
>> Web: http://www.fusesource.com
>> Blog: http://willemjiang.blogspot.com (English)
>> http://jnn.javaeye.com (Chinese)
>> Twitter: willemjiang
>> Weibo: willemjiang
>>
>
>
Re: svn commit: r1354452 - in /cxf/branches/2.4.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/
rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/
Posted by Sergey Beryozkin <sb...@gmail.com>.
Oh, sorry, completely missed it. Will look asap
Cheers, Sergey
On 05/07/12 10:02, Willem Jiang wrote:
> I just committed a quick fix for it.
> Sergey, if you have time, please double check it.
>
>
> On Wed Jul 4 08:44:12 2012, Freeman Fang wrote:
>> Hi Sergey,
>>
>> This commit break some jaxrs tests in 2.5.x branch, they're
>>
>> org.apache.cxf.jaxrs.utils.InjectionUtilsTest.testHandleParameterWithXmlAdapterOnInterface
>>
>>
>>
>> org.apache.cxf.jaxrs.ext.codegen.CodeGeneratorProviderTest.testBookStoreAsInterface
>>
>>
>>
>> org.apache.cxf.jaxrs.ext.codegen.CodeGeneratorProviderTest.testBookStoreAsClass
>>
>>
>>
>> org.apache.cxf.jaxrs.ext.codegen.CodeGeneratorProviderTest.testBookStoreTypesOnly
>>
>>
>>
>> Those test failed since Project CXF-2.5.x #337[1] on CI and afterwards.
>>
>> The reason for CodeGeneratorProviderTest failure is because there's
>> another extra "Books.class" in addition to the classes listed, as
>> CodeGeneratorProviderTest get removed from trunk and 2.6.x branches,
>> so I'm not sure CodeGeneratorProviderTest is still valid based on
>> current jaxrs code.
>>
>> The InjectionUtilsTest failed because the code
>> Object id = InjectionUtils.handleParameter(value,
>> true,
>> Id.class,
>> new Annotation[] {},
>> ParameterType.PATH,
>> createMessage());
>>
>> now return id as a String.class, but not the expected Id.class.
>>
>> Could you please take a look?
>>
>>
>> [1]https://builds.apache.org/job/CXF-2.5.x/337/#showFailuresLink
>>
>> Thanks
>> Freeman
>>
>> On 2012-6-27, at 下午7:58, sergeyb@apache.org wrote:
>>
>>> Author: sergeyb
>>> Date: Wed Jun 27 11:58:32 2012
>>> New Revision: 1354452
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1354452&view=rev
>>> Log:
>>> Merged revisions 1354451 via svnmerge from
>>> https://svn.apache.org/repos/asf/cxf/branches/2.5.x-fixes
>>>
>>> ................
>>> r1354451 | sergeyb | 2012-06-27 12:55:57 +0100 (Wed, 27 Jun 2012) |
>>> 24 lines
>>>
>>> Merged revisions 1354447 via svnmerge from
>>> https://svn.apache.org/repos/asf/cxf/branches/2.6.x-fixes
>>>
>>> ................
>>> r1354447 | sergeyb | 2012-06-27 12:51:30 +0100 (Wed, 27 Jun 2012)
>>> | 17 lines
>>>
>>> Merged revisions 1354441-1354442,1354446 via svnmerge from
>>> https://svn.apache.org/repos/asf/cxf/trunk
>>>
>>> ........
>>> r1354441 | sergeyb | 2012-06-27 12:44:38 +0100 (Wed, 27 Jun
>>> 2012) | 1 line
>>>
>>> [CXF-4396] Checking a port when 0.0.0.0 address gets replaced
>>> ........
>>> r1354442 | sergeyb | 2012-06-27 12:45:33 +0100 (Wed, 27 Jun
>>> 2012) | 1 line
>>>
>>> [CXF-4379] Passing corect type for adapters bound to interfaces
>>> to be discoverd
>>> ........
>>> r1354446 | sergeyb | 2012-06-27 12:49:57 +0100 (Wed, 27 Jun
>>> 2012) | 1 line
>>>
>>> [CXF-4379] Minor optimization
>>> ........
>>> ................
>>> ................
>>>
>>> Modified:
>>> cxf/branches/2.4.x-fixes/ (props changed)
>>>
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
>>>
>>>
>>>
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
>>>
>>>
>>>
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
>>>
>>>
>>>
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
>>>
>>>
>>>
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>>>
>>>
>>>
>>> Propchange: cxf/branches/2.4.x-fixes/
>>> ------------------------------------------------------------------------------
>>>
>>>
>>> Merged /cxf/branches/2.5.x-fixes:r1354451
>>> Merged /cxf/trunk:r1354441-1354446
>>> Merged /cxf/branches/2.6.x-fixes:r1354447
>>>
>>> Propchange: cxf/branches/2.4.x-fixes/
>>> ------------------------------------------------------------------------------
>>>
>>>
>>> Binary property 'svnmerge-integrated' - no diff available.
>>>
>>> Modified:
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
>>>
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>>
>>>
>>> ==============================================================================
>>>
>>>
>>> ---
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
>>>
>>> (original)
>>> +++
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
>>>
>>> Wed Jun 27 11:58:32 2012
>>> @@ -200,7 +200,10 @@ public final class HttpUtils {
>>> if (!absolute) {
>>> u = URI.create(base + u.toString());
>>> } else {
>>> - u = URI.create(u.toString().replace(ANY_IP_ADDRESS,
>>> serverAndPort));
>>> + int originalPort = u.getPort();
>>> + String replaceValue = originalPort == -1 ?
>>> ANY_IP_ADDRESS
>>> + : ANY_IP_ADDRESS + ":" + originalPort;
>>> + u = URI.create(u.toString().replace(replaceValue,
>>> serverAndPort));
>>> }
>>> }
>>> return u;
>>>
>>> Modified:
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
>>>
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>>
>>>
>>> ==============================================================================
>>>
>>>
>>> ---
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
>>>
>>> (original)
>>> +++
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
>>>
>>> Wed Jun 27 11:58:32 2012
>>> @@ -366,10 +366,11 @@ public final class InjectionUtils {
>>> result = createFromParameterHandler(value, pClass, message);
>>> }
>>>
>>> - if (result != null && adapterHasToBeUsed) {
>>> + if (adapterHasToBeUsed) {
>>> // as the last resort, try XmlJavaTypeAdapters
>>> + Object valueToReplace = result != null ? result : value;
>>> try {
>>> - result = JAXBUtils.convertWithAdapter(result,
>>> paramAnns);
>>> + result =
>>> JAXBUtils.convertWithAdapter(valueToReplace, pClass, paramAnns);
>>> } catch (Throwable ex) {
>>> result = null;
>>> }
>>>
>>> Modified:
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
>>>
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>>
>>>
>>> ==============================================================================
>>>
>>>
>>> ---
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
>>>
>>> (original)
>>> +++
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
>>>
>>> Wed Jun 27 11:58:32 2012
>>> @@ -29,10 +29,11 @@ public final class JAXBUtils {
>>>
>>> }
>>>
>>> - public static Object convertWithAdapter(Object obj,
>>> + public static Object convertWithAdapter(Object obj,
>>> + Class<?> adapterClass,
>>> Annotation[] anns) {
>>> return useAdapter(obj,
>>> - getAdapter(obj.getClass(), anns),
>>> + getAdapter(adapterClass, anns),
>>> false,
>>> obj);
>>> }
>>>
>>> Modified:
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
>>>
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>>
>>>
>>> ==============================================================================
>>>
>>>
>>> ---
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
>>>
>>> (original)
>>> +++
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
>>>
>>> Wed Jun 27 11:58:32 2012
>>> @@ -178,6 +178,29 @@ public class HttpUtilsTest extends Asser
>>> assertEquals("http://localhost:8080/bar/foo", u.toString());
>>> }
>>>
>>> + @Test
>>> + public void testReplaceAnyIPAddressWithPort() {
>>> + Message m = new MessageImpl();
>>> + HttpServletRequest req =
>>> EasyMock.createMock(HttpServletRequest.class);
>>> + m.put(AbstractHTTPDestination.HTTP_REQUEST, req);
>>> + req.getScheme();
>>> + EasyMock.expectLastCall().andReturn("http");
>>> + req.getServerName();
>>> + EasyMock.expectLastCall().andReturn("localhost");
>>> + req.getLocalPort();
>>> + EasyMock.expectLastCall().andReturn(8080);
>>> + EasyMock.replay(req);
>>> + URI u =
>>> HttpUtils.toAbsoluteUri(URI.create("http://0.0.0.0:8080/bar/foo"), m);
>>> + assertEquals("http://localhost:8080/bar/foo", u.toString());
>>> + }
>>> +
>>> + @Test
>>> + public void testReplaceLocalHostWithPort() {
>>> + Message m = new MessageImpl();
>>> + URI u =
>>> HttpUtils.toAbsoluteUri(URI.create("http://localhost:8080/bar/foo"), m);
>>> + assertEquals("http://localhost:8080/bar/foo", u.toString());
>>> + }
>>> +
>>> private void doTestGetBaseAddress(String baseURI, String expected) {
>>> Message m = new MessageImpl();
>>> Exchange exchange = new ExchangeImpl();
>>>
>>> Modified:
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>>>
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>>
>>>
>>> ==============================================================================
>>>
>>>
>>> ---
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>>>
>>> (original)
>>> +++
>>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>>>
>>> Wed Jun 27 11:58:32 2012
>>> @@ -18,6 +18,7 @@
>>> */
>>> package org.apache.cxf.jaxrs.utils;
>>>
>>> +import java.lang.annotation.Annotation;
>>> import java.util.ArrayList;
>>> import java.util.Collection;
>>> import java.util.HashSet;
>>> @@ -27,13 +28,44 @@ import java.util.Set;
>>> import java.util.SortedSet;
>>> import java.util.TreeSet;
>>>
>>> +import javax.ws.rs.core.Application;
>>> import javax.ws.rs.core.MultivaluedMap;
>>> +import javax.xml.bind.annotation.adapters.XmlAdapter;
>>> +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
>>> +
>>> +import org.apache.cxf.endpoint.Endpoint;
>>> +import org.apache.cxf.jaxrs.model.ParameterType;
>>> +import org.apache.cxf.jaxrs.provider.ProviderFactory;
>>> +import org.apache.cxf.message.Exchange;
>>> +import org.apache.cxf.message.ExchangeImpl;
>>> +import org.apache.cxf.message.Message;
>>> +import org.apache.cxf.message.MessageImpl;
>>> +import org.easymock.EasyMock;
>>>
>>> import org.junit.Assert;
>>> import org.junit.Test;
>>>
>>> public class InjectionUtilsTest extends Assert {
>>>
>>> +
>>> + @Test
>>> + public void testHandleParameterWithXmlAdapterOnInterface()
>>> throws Exception {
>>> + // Arrange
>>> + String value = "1.1";
>>> +
>>> + // Act
>>> + Object id = InjectionUtils.handleParameter(value,
>>> + true,
>>> + Id.class,
>>> + new Annotation[] {},
>>> + ParameterType.PATH,
>>> + createMessage());
>>> +
>>> + // Assert
>>> + assertTrue(id instanceof Id);
>>> + assertEquals(value, ((Id)id).getId());
>>> + }
>>> +
>>> public void testCollectionTypeFromArray() {
>>> assertNull(InjectionUtils.getCollectionType(String[].class));
>>> }
>>> @@ -179,4 +211,62 @@ public class InjectionUtilsTest extends
>>> }
>>> }
>>>
>>> + private Message createMessage() {
>>> + ProviderFactory factory = ProviderFactory.getInstance();
>>> + Message m = new MessageImpl();
>>> + m.put("org.apache.cxf.http.case_insensitive_queries", false);
>>> + Exchange e = new ExchangeImpl();
>>> + m.setExchange(e);
>>> + e.setInMessage(m);
>>> + Endpoint endpoint = EasyMock.createMock(Endpoint.class);
>>> + endpoint.getEndpointInfo();
>>> + EasyMock.expectLastCall().andReturn(null).anyTimes();
>>> + endpoint.get(Application.class.getName());
>>> + EasyMock.expectLastCall().andReturn(null);
>>> + endpoint.size();
>>> + EasyMock.expectLastCall().andReturn(0).anyTimes();
>>> + endpoint.isEmpty();
>>> + EasyMock.expectLastCall().andReturn(true).anyTimes();
>>> + endpoint.get(ProviderFactory.class.getName());
>>> + EasyMock.expectLastCall().andReturn(factory).anyTimes();
>>> + EasyMock.replay(endpoint);
>>> + e.put(Endpoint.class, endpoint);
>>> + return m;
>>> + }
>>> +
>>> + public static class Adapter extends XmlAdapter<String, Id> {
>>> +
>>> + @Override
>>> + public String marshal(final Id id) throws Exception {
>>> + return id.getId();
>>> + }
>>> +
>>> + @Override
>>> + public Id unmarshal(final String idStr) throws Exception {
>>> + Id id = new DelegatingId();
>>> + id.setId(idStr);
>>> + return id;
>>> + }
>>> + }
>>> +
>>> + @XmlJavaTypeAdapter(Adapter.class)
>>> + public interface Id {
>>> + String getId();
>>> +
>>> + void setId(String id);
>>> + }
>>> +
>>> + public static class DelegatingId implements Id {
>>> +
>>> + private String id;
>>> +
>>> + public String getId() {
>>> + return this.id;
>>> + }
>>> +
>>> + public void setId(String id) {
>>> + this.id = id;
>>> + }
>>> +
>>> + }
>>> }
>>>
>>>
>>
>> ---------------------------------------------
>> Freeman Fang
>>
>> FuseSource
>> Email:ffang@fusesource.com
>> Web: fusesource.com
>> Twitter: freemanfang
>> Blog: http://freemanfang.blogspot.com
>> http://blog.sina.com.cn/u/1473905042
>> weibo: http://weibo.com/u/1473905042
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
>
> --
> Willem
> ----------------------------------
> FuseSource
> Web: http://www.fusesource.com
> Blog: http://willemjiang.blogspot.com (English)
> http://jnn.javaeye.com (Chinese)
> Twitter: willemjiang
> Weibo: willemjiang
>
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com
Re: svn commit: r1354452 - in /cxf/branches/2.4.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/
rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/
Posted by Willem Jiang <wi...@gmail.com>.
I just committed a quick fix for it.
Sergey, if you have time, please double check it.
On Wed Jul 4 08:44:12 2012, Freeman Fang wrote:
> Hi Sergey,
>
> This commit break some jaxrs tests in 2.5.x branch, they're
>
> org.apache.cxf.jaxrs.utils.InjectionUtilsTest.testHandleParameterWithXmlAdapterOnInterface
>
>
> org.apache.cxf.jaxrs.ext.codegen.CodeGeneratorProviderTest.testBookStoreAsInterface
>
>
> org.apache.cxf.jaxrs.ext.codegen.CodeGeneratorProviderTest.testBookStoreAsClass
>
>
> org.apache.cxf.jaxrs.ext.codegen.CodeGeneratorProviderTest.testBookStoreTypesOnly
>
>
> Those test failed since Project CXF-2.5.x #337[1] on CI and afterwards.
>
> The reason for CodeGeneratorProviderTest failure is because there's
> another extra "Books.class" in addition to the classes listed, as
> CodeGeneratorProviderTest get removed from trunk and 2.6.x branches,
> so I'm not sure CodeGeneratorProviderTest is still valid based on
> current jaxrs code.
>
> The InjectionUtilsTest failed because the code
> Object id = InjectionUtils.handleParameter(value,
> true,
> Id.class,
> new Annotation[] {},
> ParameterType.PATH,
> createMessage());
>
> now return id as a String.class, but not the expected Id.class.
>
> Could you please take a look?
>
>
> [1]https://builds.apache.org/job/CXF-2.5.x/337/#showFailuresLink
>
> Thanks
> Freeman
>
> On 2012-6-27, at 下午7:58, sergeyb@apache.org wrote:
>
>> Author: sergeyb
>> Date: Wed Jun 27 11:58:32 2012
>> New Revision: 1354452
>>
>> URL: http://svn.apache.org/viewvc?rev=1354452&view=rev
>> Log:
>> Merged revisions 1354451 via svnmerge from
>> https://svn.apache.org/repos/asf/cxf/branches/2.5.x-fixes
>>
>> ................
>> r1354451 | sergeyb | 2012-06-27 12:55:57 +0100 (Wed, 27 Jun 2012) |
>> 24 lines
>>
>> Merged revisions 1354447 via svnmerge from
>> https://svn.apache.org/repos/asf/cxf/branches/2.6.x-fixes
>>
>> ................
>> r1354447 | sergeyb | 2012-06-27 12:51:30 +0100 (Wed, 27 Jun 2012)
>> | 17 lines
>>
>> Merged revisions 1354441-1354442,1354446 via svnmerge from
>> https://svn.apache.org/repos/asf/cxf/trunk
>>
>> ........
>> r1354441 | sergeyb | 2012-06-27 12:44:38 +0100 (Wed, 27 Jun
>> 2012) | 1 line
>>
>> [CXF-4396] Checking a port when 0.0.0.0 address gets replaced
>> ........
>> r1354442 | sergeyb | 2012-06-27 12:45:33 +0100 (Wed, 27 Jun
>> 2012) | 1 line
>>
>> [CXF-4379] Passing corect type for adapters bound to interfaces
>> to be discoverd
>> ........
>> r1354446 | sergeyb | 2012-06-27 12:49:57 +0100 (Wed, 27 Jun
>> 2012) | 1 line
>>
>> [CXF-4379] Minor optimization
>> ........
>> ................
>> ................
>>
>> Modified:
>> cxf/branches/2.4.x-fixes/ (props changed)
>>
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
>>
>>
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
>>
>>
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
>>
>>
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
>>
>>
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>>
>>
>> Propchange: cxf/branches/2.4.x-fixes/
>> ------------------------------------------------------------------------------
>>
>> Merged /cxf/branches/2.5.x-fixes:r1354451
>> Merged /cxf/trunk:r1354441-1354446
>> Merged /cxf/branches/2.6.x-fixes:r1354447
>>
>> Propchange: cxf/branches/2.4.x-fixes/
>> ------------------------------------------------------------------------------
>>
>> Binary property 'svnmerge-integrated' - no diff available.
>>
>> Modified:
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
>>
>> URL:
>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>
>> ==============================================================================
>>
>> ---
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
>> (original)
>> +++
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
>> Wed Jun 27 11:58:32 2012
>> @@ -200,7 +200,10 @@ public final class HttpUtils {
>> if (!absolute) {
>> u = URI.create(base + u.toString());
>> } else {
>> - u = URI.create(u.toString().replace(ANY_IP_ADDRESS,
>> serverAndPort));
>> + int originalPort = u.getPort();
>> + String replaceValue = originalPort == -1 ?
>> ANY_IP_ADDRESS
>> + : ANY_IP_ADDRESS + ":" + originalPort;
>> + u = URI.create(u.toString().replace(replaceValue,
>> serverAndPort));
>> }
>> }
>> return u;
>>
>> Modified:
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
>>
>> URL:
>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>
>> ==============================================================================
>>
>> ---
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
>> (original)
>> +++
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
>> Wed Jun 27 11:58:32 2012
>> @@ -366,10 +366,11 @@ public final class InjectionUtils {
>> result = createFromParameterHandler(value, pClass, message);
>> }
>>
>> - if (result != null && adapterHasToBeUsed) {
>> + if (adapterHasToBeUsed) {
>> // as the last resort, try XmlJavaTypeAdapters
>> + Object valueToReplace = result != null ? result : value;
>> try {
>> - result = JAXBUtils.convertWithAdapter(result,
>> paramAnns);
>> + result =
>> JAXBUtils.convertWithAdapter(valueToReplace, pClass, paramAnns);
>> } catch (Throwable ex) {
>> result = null;
>> }
>>
>> Modified:
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
>>
>> URL:
>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>
>> ==============================================================================
>>
>> ---
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
>> (original)
>> +++
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java
>> Wed Jun 27 11:58:32 2012
>> @@ -29,10 +29,11 @@ public final class JAXBUtils {
>>
>> }
>>
>> - public static Object convertWithAdapter(Object obj,
>> + public static Object convertWithAdapter(Object obj,
>> + Class<?> adapterClass,
>> Annotation[] anns) {
>> return useAdapter(obj,
>> - getAdapter(obj.getClass(), anns),
>> + getAdapter(adapterClass, anns),
>> false,
>> obj);
>> }
>>
>> Modified:
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
>>
>> URL:
>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>
>> ==============================================================================
>>
>> ---
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
>> (original)
>> +++
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
>> Wed Jun 27 11:58:32 2012
>> @@ -178,6 +178,29 @@ public class HttpUtilsTest extends Asser
>> assertEquals("http://localhost:8080/bar/foo", u.toString());
>> }
>>
>> + @Test
>> + public void testReplaceAnyIPAddressWithPort() {
>> + Message m = new MessageImpl();
>> + HttpServletRequest req =
>> EasyMock.createMock(HttpServletRequest.class);
>> + m.put(AbstractHTTPDestination.HTTP_REQUEST, req);
>> + req.getScheme();
>> + EasyMock.expectLastCall().andReturn("http");
>> + req.getServerName();
>> + EasyMock.expectLastCall().andReturn("localhost");
>> + req.getLocalPort();
>> + EasyMock.expectLastCall().andReturn(8080);
>> + EasyMock.replay(req);
>> + URI u =
>> HttpUtils.toAbsoluteUri(URI.create("http://0.0.0.0:8080/bar/foo"), m);
>> + assertEquals("http://localhost:8080/bar/foo", u.toString());
>> + }
>> +
>> + @Test
>> + public void testReplaceLocalHostWithPort() {
>> + Message m = new MessageImpl();
>> + URI u =
>> HttpUtils.toAbsoluteUri(URI.create("http://localhost:8080/bar/foo"), m);
>> + assertEquals("http://localhost:8080/bar/foo", u.toString());
>> + }
>> +
>> private void doTestGetBaseAddress(String baseURI, String expected) {
>> Message m = new MessageImpl();
>> Exchange exchange = new ExchangeImpl();
>>
>> Modified:
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>>
>> URL:
>> http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java?rev=1354452&r1=1354451&r2=1354452&view=diff
>>
>> ==============================================================================
>>
>> ---
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>> (original)
>> +++
>> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>> Wed Jun 27 11:58:32 2012
>> @@ -18,6 +18,7 @@
>> */
>> package org.apache.cxf.jaxrs.utils;
>>
>> +import java.lang.annotation.Annotation;
>> import java.util.ArrayList;
>> import java.util.Collection;
>> import java.util.HashSet;
>> @@ -27,13 +28,44 @@ import java.util.Set;
>> import java.util.SortedSet;
>> import java.util.TreeSet;
>>
>> +import javax.ws.rs.core.Application;
>> import javax.ws.rs.core.MultivaluedMap;
>> +import javax.xml.bind.annotation.adapters.XmlAdapter;
>> +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
>> +
>> +import org.apache.cxf.endpoint.Endpoint;
>> +import org.apache.cxf.jaxrs.model.ParameterType;
>> +import org.apache.cxf.jaxrs.provider.ProviderFactory;
>> +import org.apache.cxf.message.Exchange;
>> +import org.apache.cxf.message.ExchangeImpl;
>> +import org.apache.cxf.message.Message;
>> +import org.apache.cxf.message.MessageImpl;
>> +import org.easymock.EasyMock;
>>
>> import org.junit.Assert;
>> import org.junit.Test;
>>
>> public class InjectionUtilsTest extends Assert {
>>
>> +
>> + @Test
>> + public void testHandleParameterWithXmlAdapterOnInterface()
>> throws Exception {
>> + // Arrange
>> + String value = "1.1";
>> +
>> + // Act
>> + Object id = InjectionUtils.handleParameter(value,
>> + true,
>> + Id.class,
>> + new Annotation[] {},
>> + ParameterType.PATH,
>> + createMessage());
>> +
>> + // Assert
>> + assertTrue(id instanceof Id);
>> + assertEquals(value, ((Id)id).getId());
>> + }
>> +
>> public void testCollectionTypeFromArray() {
>> assertNull(InjectionUtils.getCollectionType(String[].class));
>> }
>> @@ -179,4 +211,62 @@ public class InjectionUtilsTest extends
>> }
>> }
>>
>> + private Message createMessage() {
>> + ProviderFactory factory = ProviderFactory.getInstance();
>> + Message m = new MessageImpl();
>> + m.put("org.apache.cxf.http.case_insensitive_queries", false);
>> + Exchange e = new ExchangeImpl();
>> + m.setExchange(e);
>> + e.setInMessage(m);
>> + Endpoint endpoint = EasyMock.createMock(Endpoint.class);
>> + endpoint.getEndpointInfo();
>> + EasyMock.expectLastCall().andReturn(null).anyTimes();
>> + endpoint.get(Application.class.getName());
>> + EasyMock.expectLastCall().andReturn(null);
>> + endpoint.size();
>> + EasyMock.expectLastCall().andReturn(0).anyTimes();
>> + endpoint.isEmpty();
>> + EasyMock.expectLastCall().andReturn(true).anyTimes();
>> + endpoint.get(ProviderFactory.class.getName());
>> + EasyMock.expectLastCall().andReturn(factory).anyTimes();
>> + EasyMock.replay(endpoint);
>> + e.put(Endpoint.class, endpoint);
>> + return m;
>> + }
>> +
>> + public static class Adapter extends XmlAdapter<String, Id> {
>> +
>> + @Override
>> + public String marshal(final Id id) throws Exception {
>> + return id.getId();
>> + }
>> +
>> + @Override
>> + public Id unmarshal(final String idStr) throws Exception {
>> + Id id = new DelegatingId();
>> + id.setId(idStr);
>> + return id;
>> + }
>> + }
>> +
>> + @XmlJavaTypeAdapter(Adapter.class)
>> + public interface Id {
>> + String getId();
>> +
>> + void setId(String id);
>> + }
>> +
>> + public static class DelegatingId implements Id {
>> +
>> + private String id;
>> +
>> + public String getId() {
>> + return this.id;
>> + }
>> +
>> + public void setId(String id) {
>> + this.id = id;
>> + }
>> +
>> + }
>> }
>>
>>
>
> ---------------------------------------------
> Freeman Fang
>
> FuseSource
> Email:ffang@fusesource.com
> Web: fusesource.com
> Twitter: freemanfang
> Blog: http://freemanfang.blogspot.com
> http://blog.sina.com.cn/u/1473905042
> weibo: http://weibo.com/u/1473905042
>
>
>
>
>
>
>
>
>
>
>
--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang
Re: svn commit: r1354452 - in /cxf/branches/2.4.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/
Posted by Freeman Fang <fr...@gmail.com>.
Hi Sergey,
This commit break some jaxrs tests in 2.5.x branch, they're
org
.apache
.cxf
.jaxrs
.utils.InjectionUtilsTest.testHandleParameterWithXmlAdapterOnInterface
org
.apache
.cxf
.jaxrs.ext.codegen.CodeGeneratorProviderTest.testBookStoreAsInterface
org
.apache
.cxf.jaxrs.ext.codegen.CodeGeneratorProviderTest.testBookStoreAsClass
org
.apache
.cxf.jaxrs.ext.codegen.CodeGeneratorProviderTest.testBookStoreTypesOnly
Those test failed since Project CXF-2.5.x #337[1] on CI and afterwards.
The reason for CodeGeneratorProviderTest failure is because there's
another extra "Books.class" in addition to the classes listed, as
CodeGeneratorProviderTest get removed from trunk and 2.6.x branches,
so I'm not sure CodeGeneratorProviderTest is still valid based on
current jaxrs code.
The InjectionUtilsTest failed because the code
Object id = InjectionUtils.handleParameter(value,
true,
Id.class,
new Annotation[] {},
ParameterType.PATH,
createMessage());
now return id as a String.class, but not the expected Id.class.
Could you please take a look?
[1]https://builds.apache.org/job/CXF-2.5.x/337/#showFailuresLink
Thanks
Freeman
On 2012-6-27, at 下午7:58, sergeyb@apache.org wrote:
> Author: sergeyb
> Date: Wed Jun 27 11:58:32 2012
> New Revision: 1354452
>
> URL: http://svn.apache.org/viewvc?rev=1354452&view=rev
> Log:
> Merged revisions 1354451 via svnmerge from
> https://svn.apache.org/repos/asf/cxf/branches/2.5.x-fixes
>
> ................
> r1354451 | sergeyb | 2012-06-27 12:55:57 +0100 (Wed, 27 Jun 2012) |
> 24 lines
>
> Merged revisions 1354447 via svnmerge from
> https://svn.apache.org/repos/asf/cxf/branches/2.6.x-fixes
>
> ................
> r1354447 | sergeyb | 2012-06-27 12:51:30 +0100 (Wed, 27 Jun 2012)
> | 17 lines
>
> Merged revisions 1354441-1354442,1354446 via svnmerge from
> https://svn.apache.org/repos/asf/cxf/trunk
>
> ........
> r1354441 | sergeyb | 2012-06-27 12:44:38 +0100 (Wed, 27 Jun
> 2012) | 1 line
>
> [CXF-4396] Checking a port when 0.0.0.0 address gets replaced
> ........
> r1354442 | sergeyb | 2012-06-27 12:45:33 +0100 (Wed, 27 Jun
> 2012) | 1 line
>
> [CXF-4379] Passing corect type for adapters bound to interfaces
> to be discoverd
> ........
> r1354446 | sergeyb | 2012-06-27 12:49:57 +0100 (Wed, 27 Jun
> 2012) | 1 line
>
> [CXF-4379] Minor optimization
> ........
> ................
> ................
>
> Modified:
> cxf/branches/2.4.x-fixes/ (props changed)
> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/
> apache/cxf/jaxrs/utils/HttpUtils.java
> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/
> apache/cxf/jaxrs/utils/InjectionUtils.java
> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/
> apache/cxf/jaxrs/utils/JAXBUtils.java
> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/
> apache/cxf/jaxrs/utils/HttpUtilsTest.java
> cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/
> apache/cxf/jaxrs/utils/InjectionUtilsTest.java
>
> Propchange: cxf/branches/2.4.x-fixes/
> ------------------------------------------------------------------------------
> Merged /cxf/branches/2.5.x-fixes:r1354451
> Merged /cxf/trunk:r1354441-1354446
> Merged /cxf/branches/2.6.x-fixes:r1354447
>
> Propchange: cxf/branches/2.4.x-fixes/
> ------------------------------------------------------------------------------
> Binary property 'svnmerge-integrated' - no diff available.
>
> Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/
> org/apache/cxf/jaxrs/utils/HttpUtils.java
> URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/
> apache/cxf/jaxrs/utils/HttpUtils.java (original)
> +++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/
> apache/cxf/jaxrs/utils/HttpUtils.java Wed Jun 27 11:58:32 2012
> @@ -200,7 +200,10 @@ public final class HttpUtils {
> if (!absolute) {
> u = URI.create(base + u.toString());
> } else {
> - u = URI.create(u.toString().replace(ANY_IP_ADDRESS,
> serverAndPort));
> + int originalPort = u.getPort();
> + String replaceValue = originalPort == -1 ?
> ANY_IP_ADDRESS
> + : ANY_IP_ADDRESS + ":" + originalPort;
> + u = URI.create(u.toString().replace(replaceValue,
> serverAndPort));
> }
> }
> return u;
>
> Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/
> org/apache/cxf/jaxrs/utils/InjectionUtils.java
> URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/
> apache/cxf/jaxrs/utils/InjectionUtils.java (original)
> +++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/
> apache/cxf/jaxrs/utils/InjectionUtils.java Wed Jun 27 11:58:32 2012
> @@ -366,10 +366,11 @@ public final class InjectionUtils {
> result = createFromParameterHandler(value, pClass,
> message);
> }
>
> - if (result != null && adapterHasToBeUsed) {
> + if (adapterHasToBeUsed) {
> // as the last resort, try XmlJavaTypeAdapters
> + Object valueToReplace = result != null ? result : value;
> try {
> - result = JAXBUtils.convertWithAdapter(result,
> paramAnns);
> + result =
> JAXBUtils.convertWithAdapter(valueToReplace, pClass, paramAnns);
> } catch (Throwable ex) {
> result = null;
> }
>
> Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/
> org/apache/cxf/jaxrs/utils/JAXBUtils.java
> URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXBUtils.java?rev=1354452&r1=1354451&r2=1354452&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/
> apache/cxf/jaxrs/utils/JAXBUtils.java (original)
> +++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/
> apache/cxf/jaxrs/utils/JAXBUtils.java Wed Jun 27 11:58:32 2012
> @@ -29,10 +29,11 @@ public final class JAXBUtils {
>
> }
>
> - public static Object convertWithAdapter(Object obj,
> + public static Object convertWithAdapter(Object obj,
> + Class<?> adapterClass,
> Annotation[] anns) {
> return useAdapter(obj,
> - getAdapter(obj.getClass(), anns),
> + getAdapter(adapterClass, anns),
> false,
> obj);
> }
>
> Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/
> org/apache/cxf/jaxrs/utils/HttpUtilsTest.java
> URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/HttpUtilsTest.java?rev=1354452&r1=1354451&r2=1354452&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/
> apache/cxf/jaxrs/utils/HttpUtilsTest.java (original)
> +++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/
> apache/cxf/jaxrs/utils/HttpUtilsTest.java Wed Jun 27 11:58:32 2012
> @@ -178,6 +178,29 @@ public class HttpUtilsTest extends Asser
> assertEquals("http://localhost:8080/bar/foo", u.toString());
> }
>
> + @Test
> + public void testReplaceAnyIPAddressWithPort() {
> + Message m = new MessageImpl();
> + HttpServletRequest req =
> EasyMock.createMock(HttpServletRequest.class);
> + m.put(AbstractHTTPDestination.HTTP_REQUEST, req);
> + req.getScheme();
> + EasyMock.expectLastCall().andReturn("http");
> + req.getServerName();
> + EasyMock.expectLastCall().andReturn("localhost");
> + req.getLocalPort();
> + EasyMock.expectLastCall().andReturn(8080);
> + EasyMock.replay(req);
> + URI u = HttpUtils.toAbsoluteUri(URI.create("http://0.0.0.0:8080/bar/foo
> "), m);
> + assertEquals("http://localhost:8080/bar/foo", u.toString());
> + }
> +
> + @Test
> + public void testReplaceLocalHostWithPort() {
> + Message m = new MessageImpl();
> + URI u = HttpUtils.toAbsoluteUri(URI.create("http://localhost:8080/bar/foo
> "), m);
> + assertEquals("http://localhost:8080/bar/foo", u.toString());
> + }
> +
> private void doTestGetBaseAddress(String baseURI, String
> expected) {
> Message m = new MessageImpl();
> Exchange exchange = new ExchangeImpl();
>
> Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/
> org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
> URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java?rev=1354452&r1=1354451&r2=1354452&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/
> apache/cxf/jaxrs/utils/InjectionUtilsTest.java (original)
> +++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/
> apache/cxf/jaxrs/utils/InjectionUtilsTest.java Wed Jun 27 11:58:32
> 2012
> @@ -18,6 +18,7 @@
> */
> package org.apache.cxf.jaxrs.utils;
>
> +import java.lang.annotation.Annotation;
> import java.util.ArrayList;
> import java.util.Collection;
> import java.util.HashSet;
> @@ -27,13 +28,44 @@ import java.util.Set;
> import java.util.SortedSet;
> import java.util.TreeSet;
>
> +import javax.ws.rs.core.Application;
> import javax.ws.rs.core.MultivaluedMap;
> +import javax.xml.bind.annotation.adapters.XmlAdapter;
> +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
> +
> +import org.apache.cxf.endpoint.Endpoint;
> +import org.apache.cxf.jaxrs.model.ParameterType;
> +import org.apache.cxf.jaxrs.provider.ProviderFactory;
> +import org.apache.cxf.message.Exchange;
> +import org.apache.cxf.message.ExchangeImpl;
> +import org.apache.cxf.message.Message;
> +import org.apache.cxf.message.MessageImpl;
> +import org.easymock.EasyMock;
>
> import org.junit.Assert;
> import org.junit.Test;
>
> public class InjectionUtilsTest extends Assert {
>
> +
> + @Test
> + public void testHandleParameterWithXmlAdapterOnInterface()
> throws Exception {
> + // Arrange
> + String value = "1.1";
> +
> + // Act
> + Object id = InjectionUtils.handleParameter(value,
> + true,
> + Id.class,
> + new Annotation[]
> {},
> +
> ParameterType.PATH,
> + createMessage());
> +
> + // Assert
> + assertTrue(id instanceof Id);
> + assertEquals(value, ((Id)id).getId());
> + }
> +
> public void testCollectionTypeFromArray() {
> assertNull(InjectionUtils.getCollectionType(String[].class));
> }
> @@ -179,4 +211,62 @@ public class InjectionUtilsTest extends
> }
> }
>
> + private Message createMessage() {
> + ProviderFactory factory = ProviderFactory.getInstance();
> + Message m = new MessageImpl();
> + m.put("org.apache.cxf.http.case_insensitive_queries", false);
> + Exchange e = new ExchangeImpl();
> + m.setExchange(e);
> + e.setInMessage(m);
> + Endpoint endpoint = EasyMock.createMock(Endpoint.class);
> + endpoint.getEndpointInfo();
> + EasyMock.expectLastCall().andReturn(null).anyTimes();
> + endpoint.get(Application.class.getName());
> + EasyMock.expectLastCall().andReturn(null);
> + endpoint.size();
> + EasyMock.expectLastCall().andReturn(0).anyTimes();
> + endpoint.isEmpty();
> + EasyMock.expectLastCall().andReturn(true).anyTimes();
> + endpoint.get(ProviderFactory.class.getName());
> + EasyMock.expectLastCall().andReturn(factory).anyTimes();
> + EasyMock.replay(endpoint);
> + e.put(Endpoint.class, endpoint);
> + return m;
> + }
> +
> + public static class Adapter extends XmlAdapter<String, Id> {
> +
> + @Override
> + public String marshal(final Id id) throws Exception {
> + return id.getId();
> + }
> +
> + @Override
> + public Id unmarshal(final String idStr) throws Exception {
> + Id id = new DelegatingId();
> + id.setId(idStr);
> + return id;
> + }
> + }
> +
> + @XmlJavaTypeAdapter(Adapter.class)
> + public interface Id {
> + String getId();
> +
> + void setId(String id);
> + }
> +
> + public static class DelegatingId implements Id {
> +
> + private String id;
> +
> + public String getId() {
> + return this.id;
> + }
> +
> + public void setId(String id) {
> + this.id = id;
> + }
> +
> + }
> }
>
>
---------------------------------------------
Freeman Fang
FuseSource
Email:ffang@fusesource.com
Web: fusesource.com
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com
http://blog.sina.com.cn/u/1473905042
weibo: http://weibo.com/u/1473905042