Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8DF6A9086 for ; Fri, 3 Feb 2012 12:59:52 +0000 (UTC) Received: (qmail 64644 invoked by uid 500); 3 Feb 2012 12:59:52 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 64561 invoked by uid 500); 3 Feb 2012 12:59:51 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 64554 invoked by uid 99); 3 Feb 2012 12:59:51 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 03 Feb 2012 12:59:51 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 03 Feb 2012 12:59:49 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 8864E23888E4 for ; Fri, 3 Feb 2012 12:59:29 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1240147 - in /cxf/branches/2.5.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ rt/frontend/jax... Date: Fri, 03 Feb 2012 12:59:29 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120203125929.8864E23888E4@eris.apache.org> Author: sergeyb Date: Fri Feb 3 12:59:28 2012 New Revision: 1240147 URL: http://svn.apache.org/viewvc?rev=1240147&view=rev Log: Merged revisions 1240136 via svnmerge from https://svn.apache.org/repos/asf/cxf/trunk ........ r1240136 | sergeyb | 2012-02-03 12:33:08 +0000 (Fri, 03 Feb 2012) | 1 line [CXF-4086] Proper support for selecting ContextResolvers ........ Added: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider2.java - copied unchanged from r1240136, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider2.java Modified: cxf/branches/2.5.x-fixes/ (props changed) cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java Propchange: cxf/branches/2.5.x-fixes/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Fri Feb 3 12:59:28 2012 @@ -1 +1 @@ -/cxf/trunk:1236624,1236769,1236849,1237715,1238046,1239365 +/cxf/trunk:1236624,1236769,1236849,1237715,1238046,1239365,1240136 Propchange: cxf/branches/2.5.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java?rev=1240147&r1=1240146&r2=1240147&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java (original) +++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java Fri Feb 3 12:59:28 2012 @@ -56,6 +56,7 @@ import org.apache.cxf.jaxrs.utils.JAXRSU import org.apache.cxf.message.ExchangeImpl; import org.apache.cxf.message.Message; import org.apache.cxf.message.MessageImpl; +import org.apache.cxf.message.MessageUtils; public class MessageContextImpl implements MessageContext { @@ -87,12 +88,8 @@ public class MessageContextImpl implemen return value; } - private boolean isRequestor() { - return Boolean.TRUE.equals(m.containsKey(Message.REQUESTOR_ROLE)); - } - public T getContent(Class format) { - if (isRequestor() && m.getExchange().getInMessage() != null) { + if (MessageUtils.isRequestor(m) && m.getExchange().getInMessage() != null) { Message inMessage = m.getExchange().getInMessage(); return inMessage.getContent(format); } @@ -164,7 +161,7 @@ public class MessageContextImpl implemen convertToAttachments(value); } m.put(key.toString(), value); - if (!isRequestor()) { + if (!MessageUtils.isRequestor(m)) { m.getExchange().put(key.toString(), value); } Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java?rev=1240147&r1=1240146&r2=1240147&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java (original) +++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java Fri Feb 3 12:59:28 2012 @@ -33,7 +33,9 @@ import java.util.List; import java.util.Set; import java.util.logging.Logger; +import javax.ws.rs.Produces; import javax.ws.rs.core.Application; +import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.ExceptionMapper; @@ -49,6 +51,7 @@ import org.apache.cxf.jaxrs.client.Respo import org.apache.cxf.jaxrs.ext.ParameterHandler; import org.apache.cxf.jaxrs.ext.RequestHandler; import org.apache.cxf.jaxrs.ext.ResponseHandler; +import org.apache.cxf.jaxrs.impl.HttpHeadersImpl; import org.apache.cxf.jaxrs.impl.RequestPreprocessor; import org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper; import org.apache.cxf.jaxrs.model.ClassResourceInfo; @@ -57,6 +60,7 @@ import org.apache.cxf.jaxrs.model.wadl.W import org.apache.cxf.jaxrs.utils.InjectionUtils; import org.apache.cxf.jaxrs.utils.JAXRSUtils; import org.apache.cxf.message.Message; +import org.apache.cxf.message.MessageUtils; public final class ProviderFactory { private static final Logger LOG = LogUtils.getL7dLogger(ProviderFactory.class); @@ -154,9 +158,29 @@ public final class ProviderFactory { public ContextResolver createContextResolver(Type contextType, Message m) { - Object mt = m.get(Message.CONTENT_TYPE); + boolean isRequestor = MessageUtils.isRequestor(m); + Message requestMessage = isRequestor ? m.getExchange().getOutMessage() + : m.getExchange().getInMessage(); + HttpHeaders requestHeaders = new HttpHeadersImpl(requestMessage); + MediaType mt = null; + + Message responseMessage = isRequestor ? m.getExchange().getInMessage() + : m.getExchange().getOutMessage(); + if (responseMessage != null) { + if (!responseMessage.containsKey(Message.CONTENT_TYPE)) { + List accepts = requestHeaders.getAcceptableMediaTypes(); + if (accepts.size() > 0) { + mt = accepts.get(0); + } + } else { + mt = MediaType.valueOf(responseMessage.get(Message.CONTENT_TYPE).toString()); + } + } else { + mt = requestHeaders.getMediaType(); + } + return createContextResolver(contextType, m, - mt == null ? MediaType.valueOf("*/*") : MediaType.valueOf(mt.toString())); + mt == null ? MediaType.WILDCARD_TYPE : mt); } @@ -164,22 +188,41 @@ public final class ProviderFactory { public ContextResolver createContextResolver(Type contextType, Message m, MediaType type) { + Class contextCls = InjectionUtils.getActualType(contextType); + if (contextCls == null) { + return null; + } + List> candidates = new LinkedList>(); for (ProviderInfo cr : contextResolvers) { Type[] types = cr.getProvider().getClass().getGenericInterfaces(); for (Type t : types) { if (t instanceof ParameterizedType) { ParameterizedType pt = (ParameterizedType)t; Type[] args = pt.getActualTypeArguments(); - for (int i = 0; i < args.length; i++) { - if (contextType == args[i]) { - injectContextValues(cr, m); - return cr.getProvider(); + if (args.length > 0) { + Class argCls = InjectionUtils.getActualType(args[0]); + + if (argCls != null && argCls.isAssignableFrom(contextCls)) { + List mTypes = JAXRSUtils.getProduceTypes( + cr.getProvider().getClass().getAnnotation(Produces.class)); + if (JAXRSUtils.intersectMimeTypes(mTypes, type).size() > 0) { + injectContextValues(cr, m); + candidates.add((ContextResolver)cr.getProvider()); + } } } } } } - return null; + if (candidates.size() == 0) { + return null; + } else if (candidates.size() == 1) { + return candidates.get(0); + } else { + Collections.sort(candidates, new ClassComparator()); + return new ContextResolverProxy(candidates); + } + } @@ -439,6 +482,7 @@ public final class ProviderFactory { } sortReaders(); sortWriters(); + sortContextResolvers(); injectContextProxies(messageReaders, messageWriters, contextResolvers, requestHandlers, responseHandlers, exceptionMappers); @@ -479,6 +523,10 @@ public final class ProviderFactory { Collections.sort(messageWriters, new MessageBodyWriterComparator()); } + private void sortContextResolvers() { + Collections.sort(contextResolvers, new ContextResolverComparator()); + } + /** @@ -661,6 +709,25 @@ public final class ProviderFactory { } } + private static class ContextResolverComparator + implements Comparator> { + + public int compare(ProviderInfo p1, + ProviderInfo p2) { + ContextResolver e1 = p1.getProvider(); + ContextResolver e2 = p2.getProvider(); + + List types1 = + JAXRSUtils.sortMediaTypes(JAXRSUtils.getProduceTypes( + e1.getClass().getAnnotation(Produces.class))); + List types2 = + JAXRSUtils.sortMediaTypes(JAXRSUtils.getProduceTypes( + e2.getClass().getAnnotation(Produces.class))); + + return JAXRSUtils.compareSortedMediaTypes(types1, types2); + } + } + public void setApplicationProvider(ProviderInfo app) { application = app; } @@ -821,4 +888,24 @@ public final class ProviderFactory { } return getGenericInterfaces(cls.getSuperclass()); } + + static class ContextResolverProxy implements ContextResolver { + private List> candidates; + public ContextResolverProxy(List> candidates) { + this.candidates = candidates; + } + public T getContext(Class cls) { + for (ContextResolver resolver : candidates) { + T context = resolver.getContext(cls); + if (context != null) { + return context; + } + } + return null; + } + + public List> getResolvers() { + return candidates; + } + } } Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=1240147&r1=1240146&r2=1240147&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original) +++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Fri Feb 3 12:59:28 2012 @@ -162,20 +162,19 @@ public final class JAXRSUtils { String[] values = getUserMediaTypes(provider, "getConsumeMediaTypes"); if (values == null) { - Consumes c = provider.getClass().getAnnotation(Consumes.class); - values = c == null ? new String[]{"*/*"} : c.value(); + return getConsumeTypes(provider.getClass().getAnnotation(Consumes.class)); + } else { + return JAXRSUtils.getMediaTypes(values); } - return JAXRSUtils.getMediaTypes(values); } public static List getProviderProduceTypes(MessageBodyWriter provider) { String[] values = getUserMediaTypes(provider, "getProduceMediaTypes"); - if (values == null) { - Produces c = provider.getClass().getAnnotation(Produces.class); - values = c == null ? new String[]{"*/*"} : c.value(); + return getProduceTypes(provider.getClass().getAnnotation(Produces.class)); + } else { + return JAXRSUtils.getMediaTypes(values); } - return JAXRSUtils.getMediaTypes(values); } public static List getMediaTypes(String[] values) { @@ -1122,14 +1121,24 @@ public final class JAXRSUtils { if (!isCompatible && requiredType.getType().equalsIgnoreCase(userType.getType())) { // check if we have composite subtypes String subType1 = requiredType.getSubtype(); - String subTypeAfterPlus1 = splitMediaSubType(subType1); String subType2 = userType.getSubtype(); - String subTypeAfterPlus2 = splitMediaSubType(subType2); - if (subTypeAfterPlus1 != null && subTypeAfterPlus2 != null - && subTypeAfterPlus1.equalsIgnoreCase(subTypeAfterPlus2) - && (subType1.charAt(0) == '*' || subType2.charAt(0) == '*')) { - isCompatible = true; + String subTypeAfterPlus1 = splitMediaSubType(subType1, true); + String subTypeAfterPlus2 = splitMediaSubType(subType2, true); + + if (subTypeAfterPlus1 != null && subTypeAfterPlus2 != null) { + + isCompatible = subTypeAfterPlus1.equalsIgnoreCase(subTypeAfterPlus2) + && (subType1.charAt(0) == '*' || subType2.charAt(0) == '*'); + + if (!isCompatible) { + String subTypeBeforePlus1 = splitMediaSubType(subType1, false); + String subTypeBeforePlus2 = splitMediaSubType(subType2, false); + + isCompatible = subTypeBeforePlus1.equalsIgnoreCase(subTypeBeforePlus2) + && (subType1.charAt(subType1.length() - 1) == '*' + || subType2.charAt(subType2.length() - 1) == '*'); + } } } if (isCompatible) { @@ -1167,9 +1176,9 @@ public final class JAXRSUtils { } - static String splitMediaSubType(String type) { + private static String splitMediaSubType(String type, boolean after) { int index = type.indexOf('+'); - return index == -1 ? null : type.substring(index + 1); + return index == -1 ? null : after ? type.substring(index + 1) : type.substring(0, index); } public static List intersectMimeTypes(List mimeTypesA, Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java?rev=1240147&r1=1240146&r2=1240147&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java (original) +++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXBContextProvider.java Fri Feb 3 12:59:28 2012 @@ -19,9 +19,11 @@ package org.apache.cxf.jaxrs; +import javax.ws.rs.Produces; import javax.ws.rs.ext.ContextResolver; import javax.xml.bind.JAXBContext; +@Produces("text/xml+a") public class JAXBContextProvider implements ContextResolver { public JAXBContext getContext(Class type) { Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java?rev=1240147&r1=1240146&r2=1240147&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java (original) +++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java Fri Feb 3 12:59:28 2012 @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ThreadPoolExecutor; @@ -58,9 +59,11 @@ import org.apache.cxf.helpers.IOUtils; import org.apache.cxf.jaxrs.Customer; import org.apache.cxf.jaxrs.CustomerParameterHandler; import org.apache.cxf.jaxrs.JAXBContextProvider; +import org.apache.cxf.jaxrs.JAXBContextProvider2; import org.apache.cxf.jaxrs.ext.MessageContext; import org.apache.cxf.jaxrs.ext.ParameterHandler; import org.apache.cxf.jaxrs.ext.RequestHandler; +import org.apache.cxf.jaxrs.impl.MetadataMap; import org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper; import org.apache.cxf.jaxrs.model.ClassResourceInfo; import org.apache.cxf.jaxrs.model.ProviderInfo; @@ -566,13 +569,80 @@ public class ProviderFactoryTest extends public void testRegisterCustomResolver() throws Exception { ProviderFactory pf = ProviderFactory.getInstance(); pf.registerUserProvider(new JAXBContextProvider()); - ContextResolver cr = pf.createContextResolver(JAXBContext.class, new MessageImpl()); + Message message = prepareMessage("*/*", null); + ContextResolver cr = pf.createContextResolver(JAXBContext.class, message); + assertFalse(cr instanceof ProviderFactory.ContextResolverProxy); assertTrue("JAXBContext ContextProvider can not be found", cr instanceof JAXBContextProvider); } @Test + public void testRegisterCustomResolver2() throws Exception { + ProviderFactory pf = ProviderFactory.getInstance(); + pf.registerUserProvider(new JAXBContextProvider()); + pf.registerUserProvider(new JAXBContextProvider2()); + Message message = prepareMessage("text/xml+b", null); + ContextResolver cr = pf.createContextResolver(JAXBContext.class, message); + assertFalse(cr instanceof ProviderFactory.ContextResolverProxy); + assertTrue("JAXBContext ContextProvider can not be found", + cr instanceof JAXBContextProvider2); + + } + + @Test + public void testNoCustomResolver() throws Exception { + ProviderFactory pf = ProviderFactory.getInstance(); + pf.registerUserProvider(new JAXBContextProvider()); + pf.registerUserProvider(new JAXBContextProvider2()); + Message message = prepareMessage("text/xml+c", null); + ContextResolver cr = pf.createContextResolver(JAXBContext.class, message); + assertNull(cr); + } + + @Test + public void testCustomResolverOut() throws Exception { + ProviderFactory pf = ProviderFactory.getInstance(); + pf.registerUserProvider(new JAXBContextProvider()); + pf.registerUserProvider(new JAXBContextProvider2()); + Message message = prepareMessage("text/xml+c", "text/xml+a"); + ContextResolver cr = pf.createContextResolver(JAXBContext.class, message); + assertFalse(cr instanceof ProviderFactory.ContextResolverProxy); + assertTrue("JAXBContext ContextProvider can not be found", + cr instanceof JAXBContextProvider); + } + + @Test + public void testCustomResolverProxy() throws Exception { + ProviderFactory pf = ProviderFactory.getInstance(); + pf.registerUserProvider(new JAXBContextProvider()); + pf.registerUserProvider(new JAXBContextProvider2()); + Message message = prepareMessage("text/xml+*", null); + ContextResolver cr = pf.createContextResolver(JAXBContext.class, message); + assertTrue(cr instanceof ProviderFactory.ContextResolverProxy); + assertTrue(((ProviderFactory.ContextResolverProxy)cr).getResolvers().get(0) + instanceof JAXBContextProvider); + assertTrue(((ProviderFactory.ContextResolverProxy)cr).getResolvers().get(1) + instanceof JAXBContextProvider2); + } + + private Message prepareMessage(String contentType, String acceptType) { + Message message = new MessageImpl(); + Map> headers = new MetadataMap(); + message.put(Message.PROTOCOL_HEADERS, headers); + Exchange exchange = new ExchangeImpl(); + exchange.setInMessage(message); + if (acceptType != null) { + headers.put("Accept", Collections.singletonList(acceptType)); + exchange.setOutMessage(new MessageImpl()); + } else { + headers.put("Content-Type", Collections.singletonList(contentType)); + } + message.setExchange(exchange); + return message; + } + + @Test public void testRegisterCustomEntityProvider() throws Exception { ProviderFactory pf = (ProviderFactory)ProviderFactory.getInstance(); pf.registerUserProvider(new CustomWidgetProvider()); Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java?rev=1240147&r1=1240146&r2=1240147&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java (original) +++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java Fri Feb 3 12:59:28 2012 @@ -438,6 +438,15 @@ public class JAXRSUtilsTest extends Asse } @Test + public void testIntersectMimeTypesCompositeSubtype5() throws Exception { + List candidateList = + JAXRSUtils.intersectMimeTypes("application/bar+xml", "application/bar+*"); + + assertEquals(1, candidateList.size()); + assertEquals("application/bar+xml", candidateList.get(0).toString()); + } + + @Test public void testIntersectMimeTypes() throws Exception { //test basic List methodMimeTypes = new ArrayList( Modified: cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java?rev=1240147&r1=1240146&r2=1240147&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java (original) +++ cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java Fri Feb 3 12:59:28 2012 @@ -89,7 +89,7 @@ public class JAXRSSoapBookTest extends A @BeforeClass public static void startServers() throws Exception { assertTrue("server did not launch correctly", - launchServer(BookServerRestSoap.class)); + launchServer(BookServerRestSoap.class, true)); } @Test