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 2013/02/06 13:35:22 UTC
svn commit: r1442931 [2/2] - in /cxf/trunk:
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/spec/
rt/frontend/jaxrs/src/main/...
Added: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ServerProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ServerProviderFactory.java?rev=1442931&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ServerProviderFactory.java (added)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ServerProviderFactory.java Wed Feb 6 12:35:21 2013
@@ -0,0 +1,713 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxrs.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.ws.rs.BindingPriority;
+import javax.ws.rs.RuntimeType;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.ContainerResponseFilter;
+import javax.ws.rs.container.DynamicFeature;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.core.Application;
+import javax.ws.rs.core.Configuration;
+import javax.ws.rs.core.Feature;
+import javax.ws.rs.core.FeatureContext;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.ReaderInterceptor;
+import javax.ws.rs.ext.WriterInterceptor;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.common.util.ClassHelper;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.jaxrs.ext.RequestHandler;
+import org.apache.cxf.jaxrs.ext.ResponseHandler;
+import org.apache.cxf.jaxrs.impl.MetadataMap;
+import org.apache.cxf.jaxrs.impl.RequestPreprocessor;
+import org.apache.cxf.jaxrs.impl.ResourceInfoImpl;
+import org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper;
+import org.apache.cxf.jaxrs.model.BeanParamInfo;
+import org.apache.cxf.jaxrs.model.ClassResourceInfo;
+import org.apache.cxf.jaxrs.model.OperationResourceInfo;
+import org.apache.cxf.jaxrs.model.ProviderInfo;
+import org.apache.cxf.jaxrs.model.wadl.WadlGenerator;
+import org.apache.cxf.jaxrs.utils.AnnotationUtils;
+import org.apache.cxf.message.Message;
+
+public final class ServerProviderFactory extends ProviderFactory {
+ private static final String SHARED_SERVER_FACTORY = "jaxrs.shared.server.factory";
+ private static final Class<?>[] FILTER_INTERCEPTOR_CLASSES =
+ new Class<?>[] {ContainerRequestFilter.class,
+ ContainerResponseFilter.class,
+ ReaderInterceptor.class,
+ WriterInterceptor.class};
+ // Server specific providers
+ private List<ProviderInfo<ExceptionMapper<?>>> exceptionMappers =
+ new ArrayList<ProviderInfo<ExceptionMapper<?>>>(1);
+
+ // RequestHandler & ResponseHandler will have to be deprecated for 2.7.0
+ private List<ProviderInfo<RequestHandler>> requestHandlers =
+ new ArrayList<ProviderInfo<RequestHandler>>(1);
+ private List<ProviderInfo<ResponseHandler>> responseHandlers =
+ new ArrayList<ProviderInfo<ResponseHandler>>(1);
+
+ // ContainerRequestFilter & ContainerResponseFilter are introduced in JAX-RS 2.0
+ private List<ProviderInfo<ContainerRequestFilter>> preMatchContainerRequestFilters =
+ new ArrayList<ProviderInfo<ContainerRequestFilter>>(1);
+ //TODO: consider using List as a value type for postmatching filters
+ private Map<NameKey, ProviderInfo<ContainerRequestFilter>> postMatchContainerRequestFilters =
+ new LinkedHashMap<NameKey, ProviderInfo<ContainerRequestFilter>>();
+ private Map<NameKey, ProviderInfo<ContainerResponseFilter>> postMatchContainerResponseFilters =
+ new LinkedHashMap<NameKey, ProviderInfo<ContainerResponseFilter>>();
+ private RequestPreprocessor requestPreprocessor;
+ private ProviderInfo<Application> application;
+ private List<DynamicFeature> dynamicFeatures = new LinkedList<DynamicFeature>();
+
+ // This may be better be kept at OperationResourceInfo ? Though we may have many methods
+ // across different resources that use the same BeanParam.
+ private Map<Class<?>, BeanParamInfo> beanParams = new HashMap<Class<?>, BeanParamInfo>();
+
+ private ServerProviderFactory(ProviderFactory baseFactory, Bus bus) {
+ super(baseFactory, bus);
+ }
+
+ public static ServerProviderFactory getInstance() {
+ return createInstance(null);
+ }
+
+ public static ServerProviderFactory createInstance(Bus bus) {
+ if (bus == null) {
+ bus = BusFactory.getThreadDefaultBus();
+ }
+ ServerProviderFactory baseFactory = initBaseFactory(bus);
+ ServerProviderFactory factory = new ServerProviderFactory(baseFactory, bus);
+ factory.setBusProviders();
+ return factory;
+ }
+
+ public static ServerProviderFactory getInstance(Message m) {
+ Endpoint e = m.getExchange().get(Endpoint.class);
+ return (ServerProviderFactory)e.get(SERVER_FACTORY_NAME);
+ }
+
+ private static synchronized ServerProviderFactory initBaseFactory(Bus bus) {
+ ServerProviderFactory factory = (ServerProviderFactory)bus.getProperty(SHARED_SERVER_FACTORY);
+ if (factory != null) {
+ return factory;
+ }
+ factory = new ServerProviderFactory(null, bus);
+ ProviderFactory.initBaseFactory(factory);
+ factory.setProviders(new WebApplicationExceptionMapper(),
+ new WadlGenerator());
+ bus.setProperty(SHARED_SERVER_FACTORY, factory);
+ return factory;
+ }
+
+ public List<ProviderInfo<ContainerRequestFilter>> getPreMatchContainerRequestFilters() {
+ return Collections.unmodifiableList(preMatchContainerRequestFilters);
+ }
+
+ public List<ProviderInfo<ContainerRequestFilter>> getPostMatchContainerRequestFilters(List<String> names) {
+ return getPostMatchContainerFilters(postMatchContainerRequestFilters,
+ names);
+ }
+
+ public List<ProviderInfo<ContainerResponseFilter>> getContainerResponseFilters(List<String> names) {
+ return getPostMatchContainerFilters(postMatchContainerResponseFilters,
+ names);
+ }
+
+ private static <T> List<ProviderInfo<T>> getPostMatchContainerFilters(Map<NameKey, ProviderInfo<T>> boundFilters,
+ List<String> names) {
+
+ if (boundFilters.isEmpty()) {
+ return Collections.emptyList();
+ }
+ names = names == null ? Collections.<String>emptyList() : names;
+
+ MultivaluedMap<ProviderInfo<T>, String> map =
+ new MetadataMap<ProviderInfo<T>, String>();
+ for (Map.Entry<NameKey, ProviderInfo<T>> entry : boundFilters.entrySet()) {
+ String entryName = entry.getKey().getName();
+ if (entryName.equals(DEFAULT_FILTER_NAME_BINDING)) {
+ map.put(entry.getValue(), Collections.<String>emptyList());
+ } else {
+ map.add(entry.getValue(), entryName);
+ }
+ }
+ List<ProviderInfo<T>> list = new LinkedList<ProviderInfo<T>>();
+ for (Map.Entry<ProviderInfo<T>, List<String>> entry : map.entrySet()) {
+ if (names.containsAll(entry.getValue())) {
+ list.add(entry.getKey());
+ }
+ }
+ return list;
+ }
+
+ public List<ProviderInfo<RequestHandler>> getRequestHandlers() {
+ List<ProviderInfo<RequestHandler>> handlers = null;
+ if (requestHandlers.size() == 0) {
+ handlers = ((ServerProviderFactory)getBaseFactory()).requestHandlers;
+ } else {
+ handlers = new ArrayList<ProviderInfo<RequestHandler>>();
+ boolean customWADLHandler = false;
+ for (int i = 0; i < requestHandlers.size(); i++) {
+ if (requestHandlers.get(i).getProvider() instanceof WadlGenerator) {
+ customWADLHandler = true;
+ break;
+ }
+ }
+ if (!customWADLHandler) {
+ // TODO : this works only because we know we only have a single
+ // system handler which is a default WADLGenerator, think of a better approach
+ handlers.addAll(((ServerProviderFactory)getBaseFactory()).requestHandlers);
+ }
+ handlers.addAll(requestHandlers);
+
+ }
+ return Collections.unmodifiableList(handlers);
+ }
+
+ public List<ProviderInfo<ResponseHandler>> getResponseHandlers() {
+ return Collections.unmodifiableList(responseHandlers);
+ }
+
+ public void addBeanParamInfo(BeanParamInfo bpi) {
+ beanParams.put(bpi.getResourceClass(), bpi);
+ }
+
+ public BeanParamInfo getBeanParamInfo(Class<?> beanClass) {
+ return beanParams.get(beanClass);
+ }
+
+ public <T extends Throwable> ExceptionMapper<T> createExceptionMapper(Class<?> exceptionType,
+ Message m) {
+ ExceptionMapper<T> mapper = doCreateExceptionMapper(exceptionType, m);
+ if (mapper != null || isBaseFactory()) {
+ return mapper;
+ }
+
+ return ((ServerProviderFactory)getBaseFactory()).createExceptionMapper(exceptionType, m);
+ }
+
+ @SuppressWarnings("unchecked")
+ private <T extends Throwable> ExceptionMapper<T> doCreateExceptionMapper(
+ Class<?> exceptionType, Message m) {
+
+ List<ExceptionMapper<?>> candidates = new LinkedList<ExceptionMapper<?>>();
+ for (ProviderInfo<ExceptionMapper<?>> em : exceptionMappers) {
+ handleMapper(candidates, em, exceptionType, m, ExceptionMapper.class, true);
+ }
+ if (candidates.size() == 0) {
+ return null;
+ }
+ Collections.sort(candidates, new ExceptionMapperComparator());
+ return (ExceptionMapper<T>) candidates.get(0);
+ }
+
+ //CHECKSTYLE:OFF
+ @Override
+ protected void setProviders(Object... providers) {
+ super.setProviders(providers);
+ List<ProviderInfo<ContainerRequestFilter>> postMatchRequestFilters =
+ new LinkedList<ProviderInfo<ContainerRequestFilter>>();
+ List<ProviderInfo<ContainerResponseFilter>> postMatchResponseFilters =
+ new LinkedList<ProviderInfo<ContainerResponseFilter>>();
+
+ for (Object o : providers) {
+ if (o == null) {
+ continue;
+ }
+ Class<?> oClass = ClassHelper.getRealClass(o);
+
+
+ if (RequestHandler.class.isAssignableFrom(oClass)) {
+ requestHandlers.add(new ProviderInfo<RequestHandler>((RequestHandler)o, getBus()));
+ }
+
+ if (ResponseHandler.class.isAssignableFrom(oClass)) {
+ responseHandlers.add(new ProviderInfo<ResponseHandler>((ResponseHandler)o, getBus()));
+ }
+
+ if (ContainerRequestFilter.class.isAssignableFrom(oClass)) {
+ addContainerFilter(postMatchRequestFilters,
+ new ProviderInfo<ContainerRequestFilter>((ContainerRequestFilter)o, getBus()),
+ preMatchContainerRequestFilters);
+ }
+
+ if (ContainerResponseFilter.class.isAssignableFrom(oClass)) {
+ addContainerFilter(postMatchResponseFilters,
+ new ProviderInfo<ContainerResponseFilter>((ContainerResponseFilter)o, getBus()),
+ null);
+ }
+
+ if (DynamicFeature.class.isAssignableFrom(oClass)) {
+ dynamicFeatures.add((DynamicFeature)o);
+ }
+
+
+ if (ExceptionMapper.class.isAssignableFrom(oClass)) {
+ exceptionMappers.add(new ProviderInfo<ExceptionMapper<?>>((ExceptionMapper<?>)o, getBus()));
+ }
+
+ }
+
+ Collections.sort(preMatchContainerRequestFilters, new BindingPriorityComparator(true));
+ mapContainerFilters(postMatchContainerRequestFilters, postMatchRequestFilters, true);
+ mapContainerFilters(postMatchContainerResponseFilters, postMatchResponseFilters, false);
+
+ injectContextProxies(
+ requestHandlers, responseHandlers, exceptionMappers,
+ postMatchContainerRequestFilters.values(), preMatchContainerRequestFilters,
+ postMatchContainerResponseFilters.values(),
+ readerInterceptors, writerInterceptors);
+ }
+//CHECKSTYLE:ON
+
+ private static <T> void addContainerFilter(List<ProviderInfo<T>> postMatchFilters,
+ ProviderInfo<T> p,
+ List<ProviderInfo<T>> preMatchFilters) {
+ T filter = p.getProvider();
+ if (preMatchFilters != null && isPrematching(filter.getClass())) {
+ preMatchFilters.add(p);
+ } else {
+ postMatchFilters.add(p);
+ }
+
+ }
+
+ public RequestPreprocessor getRequestPreprocessor() {
+ return requestPreprocessor;
+ }
+
+ public void setApplicationProvider(ProviderInfo<Application> app) {
+ application = app;
+ }
+
+ public void setRequestPreprocessor(RequestPreprocessor rp) {
+ this.requestPreprocessor = rp;
+ }
+
+ public void clearExceptionMapperProxies() {
+ clearProxies(exceptionMappers);
+ }
+
+ @Override
+ public void clearProviders() {
+ super.clearProviders();
+ exceptionMappers.clear();
+ requestHandlers.clear();
+ responseHandlers.clear();
+ postMatchContainerRequestFilters.clear();
+ postMatchContainerResponseFilters.clear();
+ preMatchContainerRequestFilters.clear();
+ }
+
+ @Override
+ public void clearThreadLocalProxies() {
+ if (application != null) {
+ application.clearThreadLocalProxies();
+ }
+ super.clearThreadLocalProxies();
+ }
+
+ public void applyDynamicFeatures(List<ClassResourceInfo> list) {
+ if (dynamicFeatures.size() > 0) {
+ for (ClassResourceInfo cri : list) {
+ doApplyDynamicFeatures(cri);
+ }
+ }
+ }
+
+ private void doApplyDynamicFeatures(ClassResourceInfo cri) {
+ Set<OperationResourceInfo> oris = cri.getMethodDispatcher().getOperationResourceInfos();
+ for (OperationResourceInfo ori : oris) {
+ for (DynamicFeature feature : dynamicFeatures) {
+ FeatureContext methodConfigurable = new MethodConfigurable(ori);
+ feature.configure(new ResourceInfoImpl(ori), methodConfigurable);
+ }
+ }
+ Collection<ClassResourceInfo> subs = cri.getSubResources();
+ for (ClassResourceInfo sub : subs) {
+ if (sub != cri) {
+ doApplyDynamicFeatures(sub);
+ }
+ }
+ }
+
+ protected static boolean isPrematching(Class<?> filterCls) {
+ return AnnotationUtils.getAnnotation(filterCls.getAnnotations(),
+ PreMatching.class) != null;
+ }
+
+ private static <T> void mapContainerFilters(Map<NameKey, ProviderInfo<T>> map,
+ List<ProviderInfo<T>> postMatchFilters,
+ boolean ascending) {
+
+ Collections.sort(postMatchFilters, new PostMatchFilterComparator(ascending));
+ for (ProviderInfo<T> p : postMatchFilters) {
+ List<String> names = AnnotationUtils.getNameBindings(
+ p.getProvider().getClass().getAnnotations());
+ names = names.isEmpty() ? Collections.singletonList(DEFAULT_FILTER_NAME_BINDING) : names;
+ for (String name : names) {
+ map.put(new NameKey(name, AnnotationUtils.getBindingPriority(p.getProvider().getClass())),
+ p);
+ }
+ }
+
+ }
+
+ private static class PostMatchFilterComparator extends BindingPriorityComparator {
+ public PostMatchFilterComparator(boolean ascending) {
+ super(ascending);
+ }
+
+ @Override
+ public int compare(ProviderInfo<?> p1, ProviderInfo<?> p2) {
+ int result = super.compare(p1, p2);
+ if (result == 0) {
+ Integer namesSize1 =
+ AnnotationUtils.getNameBindings(p1.getProvider().getClass().getAnnotations()).size();
+ Integer namesSize2 =
+ AnnotationUtils.getNameBindings(p2.getProvider().getClass().getAnnotations()).size();
+
+ // if we have two filters with the same binding priority,
+ // then put a filter with more name bindings upfront
+ // (this effectively puts name bound filters before global ones)
+ result = namesSize1.compareTo(namesSize2) * -1;
+ }
+ return result;
+ }
+ }
+
+ private static class NameKey {
+ private String name;
+ private int bindingPriority;
+ public NameKey(String name, int priority) {
+ this.name = name;
+ this.bindingPriority = priority;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getPriority() {
+ return bindingPriority;
+ }
+ }
+
+ private class MethodConfigurable implements FeatureContext, Configuration {
+
+ private OperationResourceInfo ori;
+ private String nameBinding;
+ private boolean bindingSet;
+
+ public MethodConfigurable(OperationResourceInfo ori) {
+ this.ori = ori;
+ nameBinding = DEFAULT_FILTER_NAME_BINDING
+ + ori.getClassResourceInfo().getServiceClass().getName()
+ + "."
+ + ori.getMethodToInvoke().getName();
+ }
+
+
+ @Override
+ public Configuration getConfiguration() {
+ return this;
+ }
+
+ @Override
+ public FeatureContext register(Object provider) {
+ return register(provider, AnnotationUtils.getBindingPriority(provider.getClass()));
+ }
+
+ @Override
+ public FeatureContext register(Object provider, int bindingPriority) {
+ return doRegister(provider, bindingPriority, FILTER_INTERCEPTOR_CLASSES);
+ }
+
+ @Override
+ public FeatureContext register(Object provider, Class<?>... contracts) {
+ return register(provider, BindingPriority.USER, contracts);
+ }
+
+ //@Override
+ public FeatureContext register(Object provider, int priority, Class<?>... contracts) {
+ return register(provider, priority, contracts);
+ }
+
+ @Override
+ public FeatureContext register(Object provider, Map<Class<?>, Integer> contracts) {
+ for (Map.Entry<Class<?>, Integer> entry : contracts.entrySet()) {
+ doRegister(provider, entry.getValue(), entry.getKey());
+ }
+ return this;
+ }
+
+ @Override
+ public FeatureContext register(Class<?> providerClass) {
+ return register(providerClass, AnnotationUtils.getBindingPriority(providerClass));
+ }
+
+ @Override
+ public FeatureContext register(Class<?> providerClass, int bindingPriority) {
+ return doRegister(createProvider(providerClass), bindingPriority,
+ FILTER_INTERCEPTOR_CLASSES);
+ }
+
+ @Override
+ public FeatureContext register(Class<?> providerClass, Class<?>... contracts) {
+ return register(providerClass, BindingPriority.USER, contracts);
+ }
+
+ @Override
+ public FeatureContext register(Class<?> providerClass, Map<Class<?>, Integer> contracts) {
+ Object provider = createProvider(providerClass);
+ for (Map.Entry<Class<?>, Integer> entry : contracts.entrySet()) {
+ doRegister(provider, entry.getValue(), entry.getKey());
+ }
+ return this;
+ }
+
+ public FeatureContext replaceWith(Configuration config) {
+ // nothing to do in this case
+ return this;
+ }
+
+ //@Override
+ public FeatureContext register(Class<?> providerClass, int bindingPriority,
+ Class<?>... contracts) {
+ return doRegister(createProvider(providerClass), bindingPriority, contracts);
+ }
+
+ private FeatureContext doRegister(Object provider, int bindingPriority, Class<?>... contracts) {
+
+ if (provider instanceof Feature) {
+ ((Feature)provider).configure(this);
+ return this;
+ }
+
+ boolean setIsNeeded = false;
+ for (Class<?> contract : contracts) {
+ if (contract == ContainerRequestFilter.class && provider instanceof ContainerRequestFilter) {
+ if (isPrematching(provider.getClass())) {
+ addToInterceptors(preMatchContainerRequestFilters, provider, bindingPriority, true);
+ } else {
+ postMatchContainerRequestFilters =
+ addToPostMatching(postMatchContainerRequestFilters, provider, bindingPriority, true);
+ setIsNeeded = true;
+ }
+ }
+ if (contract == ContainerResponseFilter.class && provider instanceof ContainerResponseFilter) {
+ postMatchContainerResponseFilters =
+ addToPostMatching(postMatchContainerResponseFilters, provider, bindingPriority, false);
+ setIsNeeded = true;
+ }
+ if (contract == ReaderInterceptor.class && provider instanceof ReaderInterceptor) {
+ addToInterceptors(readerInterceptors, provider, bindingPriority, true);
+ }
+ if (contract == WriterInterceptor.class && provider instanceof WriterInterceptor) {
+ addToInterceptors(writerInterceptors, provider, bindingPriority, false);
+ }
+ }
+
+ if (setIsNeeded && !bindingSet) {
+ ori.addNameBindings(Collections.singletonList(nameBinding));
+ bindingSet = true;
+ }
+
+ return this;
+ }
+
+ @SuppressWarnings("unchecked")
+ private <T> void addToInterceptors(List<ProviderInfo<T>> providers, Object provider,
+ int priority, boolean asc) {
+ int size = providers.size();
+ if (size > 0) {
+ for (int i = 0; i < size; i++) {
+ int providerPriority = AnnotationUtils.getBindingPriority(
+ providers.get(i).getProvider().getClass());
+ if (asc) {
+ if (priority < providerPriority || i + 1 == size) {
+ int index = priority < providerPriority ? i : i + 1;
+ providers.add(index, (ProviderInfo<T>)newProvider(provider));
+ break;
+ }
+ } else if (priority > providerPriority || i + 1 == size) {
+ int index = priority > providerPriority ? i : i + 1;
+ providers.add(index, (ProviderInfo<T>)newProvider(provider));
+ break;
+ }
+ }
+ } else {
+ providers.add((ProviderInfo<T>)newProvider(provider));
+ }
+ }
+
+ private <T> ProviderInfo<T> newProvider(T provider) {
+ ProviderInfo<T> newProvider = new ProviderInfo<T>(provider, getBus());
+ injectContextProxiesIntoProvider(newProvider);
+ return newProvider;
+ }
+
+ @SuppressWarnings("unchecked")
+ private <T> Map<NameKey, ProviderInfo<T>> addToPostMatching(
+ Map<NameKey, ProviderInfo<T>> map, Object provider, int priority, boolean asc) {
+ Map<NameKey, ProviderInfo<T>> newMap = new LinkedHashMap<NameKey, ProviderInfo<T>>();
+
+ Iterator<Map.Entry<NameKey, ProviderInfo<T>>> it = map.entrySet().iterator();
+ if (it.hasNext()) {
+ boolean added = false;
+ while (it.hasNext()) {
+ Map.Entry<NameKey, ProviderInfo<T>> entry = it.next();
+ int providerPriority = entry.getKey().getPriority();
+ // this surely can be collapsed further
+ if (!added && asc && (priority < providerPriority || !it.hasNext())) {
+ addNewProvider(newMap, entry, provider, priority, providerPriority >= priority);
+ added = true;
+ } else if (!added && !asc && (priority > providerPriority || !it.hasNext())) {
+ addNewProvider(newMap, entry, provider, priority, priority > providerPriority);
+ added = true;
+ } else {
+ newMap.put(entry.getKey(), entry.getValue());
+ }
+ }
+ } else {
+ newMap.put(new NameKey(nameBinding, priority), (ProviderInfo<T>)newProvider(provider));
+ }
+ return newMap;
+
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private <T> void addNewProvider(Map<NameKey, ProviderInfo<T>> newMap,
+ Map.Entry<NameKey, ProviderInfo<T>> entry,
+ Object provider,
+ int priority,
+ boolean first) {
+ if (first) {
+ newMap.put(new NameKey(nameBinding, priority), (ProviderInfo<T>)newProvider(provider));
+ newMap.put(entry.getKey(), entry.getValue());
+ } else {
+ newMap.put(entry.getKey(), entry.getValue());
+ newMap.put(new NameKey(nameBinding, priority), (ProviderInfo<T>)newProvider(provider));
+ }
+ }
+
+ @Override
+ public Set<Class<?>> getClasses() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Map<Class<?>, Integer> getContracts(Class<?> componentClass) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Set<Object> getInstances() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Map<String, Object> getProperties() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean isEnabled(Feature feature) {
+ return false;
+ }
+
+ @Override
+ public boolean isEnabled(Class<? extends Feature> featureClass) {
+ return false;
+ }
+
+ @Override
+ public RuntimeType getRuntimeType() {
+ return null;
+ }
+
+ @Override
+ public Object getProperty(String name) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Collection<String> getPropertyNames() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean isRegistered(Class<?> componentClass) {
+ return false;
+ }
+
+ @Override
+ public boolean isRegistered(Object component) {
+ return false;
+ }
+
+ @Override
+ public FeatureContext setProperty(String name, Object value) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ private Object createProvider(Class<?> cls) {
+ try {
+ return cls.newInstance();
+ } catch (Throwable ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+ }
+
+ private static class ExceptionMapperComparator implements
+ Comparator<ExceptionMapper<? extends Throwable>> {
+
+ public int compare(ExceptionMapper<? extends Throwable> em1,
+ ExceptionMapper<? extends Throwable> em2) {
+ return compareClasses(em1, em2);
+ }
+
+ }
+}
Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ServerProviderFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ServerProviderFactory.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java Wed Feb 6 12:35:21 2013
@@ -92,7 +92,7 @@ import org.apache.cxf.jaxrs.impl.tl.Thre
import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
import org.apache.cxf.jaxrs.model.Parameter;
import org.apache.cxf.jaxrs.model.ParameterType;
-import org.apache.cxf.jaxrs.provider.ProviderFactory;
+import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageUtils;
@@ -401,7 +401,7 @@ public final class InjectionUtils {
Message message) {
T result = null;
if (message != null) {
- ParamConverter<T> pm = ProviderFactory.getInstance(message)
+ ParamConverter<T> pm = ServerProviderFactory.getInstance(message)
.createParameterHandler(pClass);
if (pm != null) {
result = pm.fromString(value);
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Wed Feb 6 12:35:21 2013
@@ -132,6 +132,7 @@ import org.apache.cxf.jaxrs.model.Provid
import org.apache.cxf.jaxrs.model.URITemplate;
import org.apache.cxf.jaxrs.provider.AbstractConfigurableProvider;
import org.apache.cxf.jaxrs.provider.ProviderFactory;
+import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
import org.apache.cxf.jaxrs.utils.multipart.AttachmentUtils;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageUtils;
@@ -895,7 +896,7 @@ public final class JAXRSUtils {
}
public static Object createBeanParamValue(Message m, Class<?> clazz, OperationResourceInfo ori) {
- BeanParamInfo bmi = ProviderFactory.getInstance(m).getBeanParamInfo(clazz);
+ BeanParamInfo bmi = ServerProviderFactory.getInstance(m).getBeanParamInfo(clazz);
if (bmi == null) {
// we could've started introspecting now but the fact no bean info
// is available indicates that the one created at start up has been
@@ -952,7 +953,7 @@ public final class JAXRSUtils {
o = createServletResourceValue(contextMessage, clazz);
if (o == null) {
ContextProvider<?> provider =
- ProviderFactory.getInstance(m).createContextProvider(clazz, contextMessage);
+ ServerProviderFactory.getInstance(m).createContextProvider(clazz, contextMessage);
if (provider != null) {
o = provider.createContext(contextMessage);
}
@@ -1122,7 +1123,7 @@ public final class JAXRSUtils {
List<MediaType> types = JAXRSUtils.intersectMimeTypes(consumeTypes, contentType);
- final ProviderFactory pf = ProviderFactory.getInstance(m);
+ final ProviderFactory pf = ServerProviderFactory.getInstance(m);
for (MediaType type : types) {
List<ReaderInterceptor> readers = pf.createMessageBodyReaderInterceptor(
targetTypeClass,
@@ -1412,7 +1413,7 @@ public final class JAXRSUtils {
}
ExceptionMapper<T> mapper =
- ProviderFactory.getInstance(inMessage).createExceptionMapper(ex.getClass(), inMessage);
+ ServerProviderFactory.getInstance(inMessage).createExceptionMapper(ex.getClass(), inMessage);
if (mapper != null) {
try {
return mapper.toResponse(ex);
@@ -1465,7 +1466,7 @@ public final class JAXRSUtils {
return XMLUtils.convertStringToQName(name, "");
}
- public static boolean runContainerRequestFilters(ProviderFactory pf, Message m, boolean preMatch,
+ public static boolean runContainerRequestFilters(ServerProviderFactory pf, Message m, boolean preMatch,
List<String> names) {
List<ProviderInfo<ContainerRequestFilter>> containerFilters = preMatch
? pf.getPreMatchContainerRequestFilters() : pf.getPostMatchContainerRequestFilters(names);
@@ -1485,7 +1486,7 @@ public final class JAXRSUtils {
return false;
}
- public static void runContainerResponseFilters(ProviderFactory pf,
+ public static void runContainerResponseFilters(ServerProviderFactory pf,
Response r,
Message m,
OperationResourceInfo ori) {
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBeanTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBeanTest.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBeanTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBeanTest.java Wed Feb 6 12:35:21 2013
@@ -25,7 +25,7 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import org.apache.cxf.endpoint.Server;
-import org.apache.cxf.jaxrs.provider.ProviderFactory;
+import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
import org.apache.cxf.jaxrs.resources.BookStore;
import org.apache.cxf.message.MessageImpl;
@@ -48,8 +48,8 @@ public class JAXRSServerFactoryBeanTest
bean.setProviders(providers);
Server s = bean.create();
- ProviderFactory factory =
- (ProviderFactory)s.getEndpoint().get(ProviderFactory.class.getName());
+ ServerProviderFactory factory =
+ (ServerProviderFactory)s.getEndpoint().get(ServerProviderFactory.class.getName());
ExceptionMapper<Exception> mapper1 =
factory.createExceptionMapper(Exception.class, new MessageImpl());
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java Wed Feb 6 12:35:21 2013
@@ -36,7 +36,7 @@ import org.apache.cxf.jaxrs.fortest.Gene
import org.apache.cxf.jaxrs.impl.MetadataMap;
import org.apache.cxf.jaxrs.model.ClassResourceInfo;
import org.apache.cxf.jaxrs.model.OperationResourceInfo;
-import org.apache.cxf.jaxrs.provider.ProviderFactory;
+import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
import org.apache.cxf.jaxrs.resources.Book;
import org.apache.cxf.jaxrs.resources.Chapter;
import org.apache.cxf.jaxrs.utils.JAXRSUtils;
@@ -97,8 +97,8 @@ public class SelectMethodCandidatesTest
EasyMock.expectLastCall().andReturn(0).anyTimes();
e.getEndpointInfo();
EasyMock.expectLastCall().andReturn(null).anyTimes();
- e.get(ProviderFactory.class.getName());
- EasyMock.expectLastCall().andReturn(ProviderFactory.getInstance()).times(2);
+ e.get(ServerProviderFactory.class.getName());
+ EasyMock.expectLastCall().andReturn(ServerProviderFactory.getInstance()).times(2);
e.get("org.apache.cxf.jaxrs.comparator");
EasyMock.expectLastCall().andReturn(null);
EasyMock.replay(e);
@@ -149,8 +149,8 @@ public class SelectMethodCandidatesTest
EasyMock.expectLastCall().andReturn(0).anyTimes();
e.getEndpointInfo();
EasyMock.expectLastCall().andReturn(null).anyTimes();
- e.get(ProviderFactory.class.getName());
- EasyMock.expectLastCall().andReturn(ProviderFactory.getInstance()).times(3);
+ e.get(ServerProviderFactory.class.getName());
+ EasyMock.expectLastCall().andReturn(ServerProviderFactory.getInstance()).times(3);
e.get("org.apache.cxf.jaxrs.comparator");
EasyMock.expectLastCall().andReturn(null);
EasyMock.replay(e);
@@ -198,8 +198,8 @@ public class SelectMethodCandidatesTest
EasyMock.expectLastCall().andReturn(0).anyTimes();
e.getEndpointInfo();
EasyMock.expectLastCall().andReturn(null).anyTimes();
- e.get(ProviderFactory.class.getName());
- EasyMock.expectLastCall().andReturn(ProviderFactory.getInstance()).times(3);
+ e.get(ServerProviderFactory.class.getName());
+ EasyMock.expectLastCall().andReturn(ServerProviderFactory.getInstance()).times(3);
e.get("org.apache.cxf.jaxrs.comparator");
EasyMock.expectLastCall().andReturn(null);
EasyMock.replay(e);
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/MessageContextImplTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/MessageContextImplTest.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/MessageContextImplTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/MessageContextImplTest.java Wed Feb 6 12:35:21 2013
@@ -40,6 +40,7 @@ import org.apache.cxf.jaxrs.impl.Request
import org.apache.cxf.jaxrs.impl.SecurityContextImpl;
import org.apache.cxf.jaxrs.impl.UriInfoImpl;
import org.apache.cxf.jaxrs.provider.ProviderFactory;
+import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
import org.apache.cxf.message.Message;
@@ -142,7 +143,7 @@ public class MessageContextImplTest exte
@Test
public void testContextResolver() {
ContextResolver<JAXBContext> resolver = new CustomContextResolver();
- ProviderFactory factory = ProviderFactory.getInstance();
+ ProviderFactory factory = ServerProviderFactory.getInstance();
factory.registerUserProvider(resolver);
Message m = new MessageImpl();
@@ -150,7 +151,7 @@ public class MessageContextImplTest exte
m.setExchange(ex);
ex.setInMessage(m);
Endpoint e = EasyMock.createMock(Endpoint.class);
- e.get(ProviderFactory.class.getName());
+ e.get(ServerProviderFactory.class.getName());
EasyMock.expectLastCall().andReturn(factory);
EasyMock.replay(e);
ex.put(Endpoint.class, e);
@@ -168,7 +169,7 @@ public class MessageContextImplTest exte
}
private Message createMessage() {
- ProviderFactory factory = ProviderFactory.getInstance();
+ ProviderFactory factory = ServerProviderFactory.getInstance();
Message m = new MessageImpl();
m.put("org.apache.cxf.http.case_insensitive_queries", false);
Exchange e = new ExchangeImpl();
@@ -183,7 +184,7 @@ public class MessageContextImplTest exte
EasyMock.expectLastCall().andReturn(0).anyTimes();
endpoint.isEmpty();
EasyMock.expectLastCall().andReturn(true).anyTimes();
- endpoint.get(ProviderFactory.class.getName());
+ endpoint.get(ServerProviderFactory.class.getName());
EasyMock.expectLastCall().andReturn(factory).anyTimes();
EasyMock.replay(endpoint);
e.put(Endpoint.class, endpoint);
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestPreprocessorTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestPreprocessorTest.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestPreprocessorTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestPreprocessorTest.java Wed Feb 6 12:35:21 2013
@@ -33,7 +33,7 @@ import javax.ws.rs.core.Response;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.jaxrs.JAXRSServiceImpl;
import org.apache.cxf.jaxrs.model.ClassResourceInfo;
-import org.apache.cxf.jaxrs.provider.ProviderFactory;
+import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
import org.apache.cxf.jaxrs.utils.ResourceUtils;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
@@ -122,8 +122,8 @@ public class RequestPreprocessorTest ext
Endpoint endp = control.createMock(Endpoint.class);
e.put(Endpoint.class, endp);
EasyMock.expect(endp.isEmpty()).andReturn(true).anyTimes();
- endp.get(ProviderFactory.class.getName());
- EasyMock.expectLastCall().andReturn(ProviderFactory.getInstance()).anyTimes();
+ endp.get(ServerProviderFactory.class.getName());
+ EasyMock.expectLastCall().andReturn(ServerProviderFactory.getInstance()).anyTimes();
ServletDestination d = control.createMock(ServletDestination.class);
e.setDestination(d);
EndpointInfo epr = new EndpointInfo();
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/JAXBElementProviderTest.java Wed Feb 6 12:35:21 2013
@@ -1590,7 +1590,7 @@ public class JAXBElementProviderTest ext
}
private Message createMessage() {
- ProviderFactory factory = ProviderFactory.getInstance();
+ ServerProviderFactory factory = ServerProviderFactory.getInstance();
Message m = new MessageImpl();
m.put(Message.ENDPOINT_ADDRESS, "http://localhost:8080/bar");
m.put("org.apache.cxf.http.case_insensitive_queries", false);
@@ -1606,7 +1606,7 @@ public class JAXBElementProviderTest ext
EasyMock.expectLastCall().andReturn(0).anyTimes();
endpoint.isEmpty();
EasyMock.expectLastCall().andReturn(true).anyTimes();
- endpoint.get(ProviderFactory.class.getName());
+ endpoint.get(ServerProviderFactory.class.getName());
EasyMock.expectLastCall().andReturn(factory).anyTimes();
EasyMock.replay(endpoint);
e.put(Endpoint.class, endpoint);
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java Wed Feb 6 12:35:21 2013
@@ -29,10 +29,6 @@ import java.util.ArrayList;
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;
-import java.util.concurrent.TimeUnit;
import javax.activation.DataHandler;
import javax.activation.DataSource;
@@ -42,7 +38,6 @@ import javax.ws.rs.WebApplicationExcepti
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.MessageBodyReader;
@@ -59,7 +54,6 @@ 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.RequestHandler;
import org.apache.cxf.jaxrs.impl.MetadataMap;
import org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper;
@@ -77,7 +71,6 @@ import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
public class ProviderFactoryTest extends Assert {
@@ -85,20 +78,18 @@ public class ProviderFactoryTest extends
@Before
public void setUp() {
- ProviderFactory.getInstance().clearProviders();
+ ServerProviderFactory.getInstance().clearProviders();
AbstractResourceInfo.clearAllMaps();
}
@Test
public void testMultipleFactories() {
- assertNotSame(ProviderFactory.getInstance(), ProviderFactory.getSharedInstance());
- assertSame(ProviderFactory.getSharedInstance(), ProviderFactory.getSharedInstance());
- assertNotSame(ProviderFactory.getInstance(), ProviderFactory.getInstance());
+ assertNotSame(ServerProviderFactory.getInstance(), ServerProviderFactory.getInstance());
}
@Test
public void testCustomWadlHandler() {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ServerProviderFactory pf = ServerProviderFactory.getInstance();
assertEquals(1, pf.getRequestHandlers().size());
assertTrue(pf.getRequestHandlers().get(0).getProvider() instanceof WadlGenerator);
@@ -111,7 +102,7 @@ public class ProviderFactoryTest extends
@Test
public void testCustomTestHandler() {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ServerProviderFactory pf = ServerProviderFactory.getInstance();
assertEquals(1, pf.getRequestHandlers().size());
assertTrue(pf.getRequestHandlers().get(0).getProvider() instanceof WadlGenerator);
@@ -124,7 +115,7 @@ public class ProviderFactoryTest extends
@Test
public void testCustomTestAndWadlHandler() {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ServerProviderFactory pf = ServerProviderFactory.getInstance();
assertEquals(1, pf.getRequestHandlers().size());
assertTrue(pf.getRequestHandlers().get(0).getProvider() instanceof WadlGenerator);
@@ -139,90 +130,10 @@ public class ProviderFactoryTest extends
assertSame(th, pf.getRequestHandlers().get(1).getProvider());
}
- @Test
- public void testDefaultJaxbProvider() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
- doTestDefaultJaxbProviderCloned(pf, "http://localhost:8080/base/");
- checkJaxbProvider(pf);
- }
-
- @Test
- public void testDefaultJaxbProviderMultipleThreads() throws Exception {
- for (int i = 0; i < 100; i++) {
- doTestDefaultJaxbProviderClonedMultipleThreads();
- }
- }
-
-
- public void doTestDefaultJaxbProviderClonedMultipleThreads() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
- ThreadPoolExecutor executor = new ThreadPoolExecutor(50, 50, 0, TimeUnit.SECONDS,
- new ArrayBlockingQueue<Runnable>(10));
- CountDownLatch startSignal = new CountDownLatch(1);
- CountDownLatch doneSignal = new CountDownLatch(50);
-
- addThreads(executor, pf, startSignal, doneSignal, 50);
-
- startSignal.countDown();
- doneSignal.await(60, TimeUnit.SECONDS);
- executor.shutdownNow();
- assertEquals("Not all invocations have completed", 0, doneSignal.getCount());
- checkJaxbProvider(pf);
- }
-
- private void addThreads(ThreadPoolExecutor executor, ProviderFactory pf,
- CountDownLatch startSignal, CountDownLatch doneSignal, int count) {
-
- for (int i = 1; i <= count; i++) {
- executor.execute(new TestRunnable(pf, startSignal, doneSignal,
- "http://localhost:8080/base/" + i));
- }
- }
-
- private void doTestDefaultJaxbProviderCloned(ProviderFactory pf, String property) {
- Message message = new MessageImpl();
- message.put(Message.QUERY_STRING, "uri=" + property);
- MessageBodyReader<Book> customJaxbReader = pf.createMessageBodyReader(Book.class, null, null,
- MediaType.TEXT_XML_TYPE, message);
- assertTrue(customJaxbReader instanceof JAXBElementProvider);
-
- JAXBElementProvider<Book> provider = (JAXBElementProvider<Book>)customJaxbReader;
- MessageContext mc = provider.getContext();
- assertNotNull(mc);
- UriInfo ui = mc.getUriInfo();
- MultivaluedMap<String, String> queries = ui.getQueryParameters();
- assertEquals(1, queries.size());
- List<String> uriQuery = queries.get("uri");
- assertEquals(1, uriQuery.size());
- assertEquals(property, uriQuery.get(0));
-
- MessageBodyReader<?> customJaxbReader2 = pf.createMessageBodyReader((Class<?>)Book.class, null, null,
- MediaType.TEXT_XML_TYPE, message);
- assertSame(customJaxbReader, customJaxbReader2);
-
- MessageBodyWriter<?> customJaxbWriter = pf.createMessageBodyWriter((Class<?>)Book.class, null, null,
- MediaType.TEXT_XML_TYPE, message);
- assertSame(customJaxbReader, customJaxbWriter);
-
- MessageBodyReader<?> jaxbReader = ProviderFactory.getSharedInstance().createMessageBodyReader(
- (Class<?>)Book.class, null, null, MediaType.TEXT_XML_TYPE, message);
- assertTrue(jaxbReader instanceof JAXBElementProvider);
- assertNotSame(jaxbReader, customJaxbReader);
- }
-
- private void checkJaxbProvider(ProviderFactory pf) {
- int count = 0;
- for (Object provider : pf.getReadersWriters()) {
- if (((ProviderInfo<?>)provider).getProvider() instanceof JAXBElementProvider) {
- count++;
- }
- }
- assertEquals(1, count);
- }
@Test
public void testCustomJaxbProvider() {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
JAXBElementProvider<Book> provider = new JAXBElementProvider<Book>();
pf.registerUserProvider(provider);
MessageBodyReader<Book> customJaxbReader = pf.createMessageBodyReader(Book.class, null, null,
@@ -236,7 +147,7 @@ public class ProviderFactoryTest extends
@Test
public void testDataSourceReader() {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(new DataSourceProvider<Object>());
MessageBodyReader<DataSource> reader = pf.createMessageBodyReader(
DataSource.class, null, null,
@@ -250,7 +161,7 @@ public class ProviderFactoryTest extends
@Test
public void testDataSourceWriter() {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(new DataSourceProvider<Object>());
MessageBodyWriter<DataSource> writer = pf.createMessageBodyWriter(
DataSource.class, null, null,
@@ -264,7 +175,7 @@ public class ProviderFactoryTest extends
@Test
public void testNoDataSourceWriter() {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(new DataSourceProvider<Object>());
MessageBodyWriter<DataSource> writer = pf.createMessageBodyWriter(
DataSource.class, null, null,
@@ -275,12 +186,12 @@ public class ProviderFactoryTest extends
@Test
public void testSchemaLocations() {
- ProviderFactory pf = ProviderFactory.getInstance();
- pf.setSchemaLocations(Collections.singletonList("classpath:/test.xsd"));
- MessageBodyReader<Book> customJaxbReader = pf.createMessageBodyReader(Book.class, null, null,
+ ProviderFactory pf = ServerProviderFactory.getInstance();
+ MessageBodyReader<Book> jaxbReader = pf.createMessageBodyReader(Book.class, null, null,
MediaType.TEXT_XML_TYPE, new MessageImpl());
- assertTrue(customJaxbReader instanceof JAXBElementProvider);
- MessageBodyReader<Book> jaxbReader = ProviderFactory.getSharedInstance().createMessageBodyReader(
+ assertTrue(jaxbReader instanceof JAXBElementProvider);
+ pf.setSchemaLocations(Collections.singletonList("classpath:/test.xsd"));
+ MessageBodyReader<Book> customJaxbReader = pf.createMessageBodyReader(
Book.class, null, null, MediaType.TEXT_XML_TYPE, new MessageImpl());
assertTrue(jaxbReader instanceof JAXBElementProvider);
assertNotSame(jaxbReader, customJaxbReader);
@@ -291,12 +202,12 @@ public class ProviderFactoryTest extends
@Test
public void testGetFactoryInboundMessage() {
- ProviderFactory factory = ProviderFactory.getInstance();
+ ProviderFactory factory = ServerProviderFactory.getInstance();
Message m = new MessageImpl();
Exchange e = new ExchangeImpl();
m.setExchange(e);
Endpoint endpoint = EasyMock.createMock(Endpoint.class);
- endpoint.get(ProviderFactory.class.getName());
+ endpoint.get(ServerProviderFactory.class.getName());
EasyMock.expectLastCall().andReturn(factory);
EasyMock.replay(endpoint);
e.put(Endpoint.class, endpoint);
@@ -305,7 +216,7 @@ public class ProviderFactoryTest extends
@Test
public void testDefaultUserExceptionMappers() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ServerProviderFactory pf = ServerProviderFactory.getInstance();
ExceptionMapper<?> mapper =
pf.createExceptionMapper(WebApplicationException.class, new MessageImpl());
assertNotNull(mapper);
@@ -319,7 +230,7 @@ public class ProviderFactoryTest extends
@Test
public void testExceptionMappersHierarchy1() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ServerProviderFactory pf = ServerProviderFactory.getInstance();
WebApplicationExceptionMapper wm = new WebApplicationExceptionMapper();
pf.registerUserProvider(wm);
assertSame(wm, pf.createExceptionMapper(WebApplicationException.class, new MessageImpl()));
@@ -332,7 +243,7 @@ public class ProviderFactoryTest extends
@Test
public void testExceptionMappersHierarchy2() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ServerProviderFactory pf = ServerProviderFactory.getInstance();
TestRuntimeExceptionMapper rm = new TestRuntimeExceptionMapper();
pf.registerUserProvider(rm);
@@ -347,7 +258,7 @@ public class ProviderFactoryTest extends
@Test
public void testExceptionMappersHierarchyWithGenerics() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ServerProviderFactory pf = ServerProviderFactory.getInstance();
RuntimeExceptionMapper1 exMapper1 = new RuntimeExceptionMapper1();
pf.registerUserProvider(exMapper1);
RuntimeExceptionMapper2 exMapper2 = new RuntimeExceptionMapper2();
@@ -358,7 +269,7 @@ public class ProviderFactoryTest extends
@Test
public void testMessageBodyHandlerHierarchy() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
List<Object> providers = new ArrayList<Object>();
BookReaderWriter bookHandler = new BookReaderWriter();
providers.add(bookHandler);
@@ -381,7 +292,7 @@ public class ProviderFactoryTest extends
@Test
public void testMessageBodyWriterNoTypes() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
List<Object> providers = new ArrayList<Object>();
SuperBookReaderWriter2<SuperBook> superBookHandler = new SuperBookReaderWriter2<SuperBook>();
providers.add(superBookHandler);
@@ -396,7 +307,7 @@ public class ProviderFactoryTest extends
@Test
public void testSortEntityProviders() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(new TestStringProvider());
pf.registerUserProvider(new PrimitiveTextProvider<Object>());
@@ -414,7 +325,7 @@ public class ProviderFactoryTest extends
@Test
public void testParameterHandlerProvider() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
ParamConverterProvider h = new CustomerParameterHandler();
pf.registerUserProvider(h);
ParamConverter<Customer> h2 = pf.createParameterHandler(Customer.class);
@@ -430,7 +341,7 @@ public class ProviderFactoryTest extends
public void testGetBinaryProvider() throws Exception {
verifyProvider(byte[].class, BinaryDataProvider.class, "*/*");
verifyProvider(InputStream.class, BinaryDataProvider.class, "image/png");
- MessageBodyWriter<File> writer = ProviderFactory.getInstance()
+ MessageBodyWriter<File> writer = ServerProviderFactory.getInstance()
.createMessageBodyWriter(File.class, null, null, MediaType.APPLICATION_OCTET_STREAM_TYPE,
new MessageImpl());
assertTrue(BinaryDataProvider.class == writer.getClass());
@@ -440,7 +351,7 @@ public class ProviderFactoryTest extends
throws Exception {
if (pf == null) {
- pf = ProviderFactory.getInstance();
+ pf = ServerProviderFactory.getInstance();
}
MediaType mType = MediaType.valueOf(mediaType);
@@ -467,14 +378,14 @@ public class ProviderFactoryTest extends
@Test
public void testGetStringProviderUsingProviderDeclaration() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(new TestStringProvider());
verifyProvider(pf, String.class, TestStringProvider.class, "text/html");
}
@Test
public void testRegisterCustomJSONEntityProvider() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(new CustomJSONProvider());
verifyProvider(pf, Book.class, CustomJSONProvider.class,
"application/json");
@@ -483,7 +394,7 @@ public class ProviderFactoryTest extends
@Test
public void testRegisterCustomResolver() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(new JAXBContextProvider());
Message message = prepareMessage("*/*", null);
ContextResolver<JAXBContext> cr = pf.createContextResolver(JAXBContext.class, message);
@@ -495,7 +406,7 @@ public class ProviderFactoryTest extends
@Test
public void testRegisterCustomResolver2() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(new JAXBContextProvider());
pf.registerUserProvider(new JAXBContextProvider2());
Message message = prepareMessage("text/xml+b", null);
@@ -508,7 +419,7 @@ public class ProviderFactoryTest extends
@Test
public void testNoCustomResolver() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(new JAXBContextProvider());
pf.registerUserProvider(new JAXBContextProvider2());
Message message = prepareMessage("text/xml+c", null);
@@ -518,7 +429,7 @@ public class ProviderFactoryTest extends
@Test
public void testCustomResolverOut() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(new JAXBContextProvider());
pf.registerUserProvider(new JAXBContextProvider2());
Message message = prepareMessage("text/xml+c", "text/xml+a");
@@ -530,7 +441,7 @@ public class ProviderFactoryTest extends
@Test
public void testCustomResolverProxy() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(new JAXBContextProvider());
pf.registerUserProvider(new JAXBContextProvider2());
Message message = prepareMessage("text/xml+*", null);
@@ -560,7 +471,7 @@ public class ProviderFactoryTest extends
@Test
public void testRegisterCustomEntityProvider() throws Exception {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(new CustomWidgetProvider());
verifyProvider(pf, org.apache.cxf.jaxrs.resources.Book.class, CustomWidgetProvider.class,
@@ -690,7 +601,7 @@ public class ProviderFactoryTest extends
@Test
public void testSetSchemasFromClasspath() {
JAXBElementProvider<?> provider = new JAXBElementProvider<Object>();
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
pf.registerUserProvider(provider);
List<String> locations = new ArrayList<String>();
@@ -827,39 +738,7 @@ public class ProviderFactoryTest extends
}
}
-
- @Ignore
- private class TestRunnable implements Runnable {
-
- private CountDownLatch startSignal;
- private CountDownLatch doneSignal;
- private ProviderFactory pf;
- private String property;
- public TestRunnable(ProviderFactory pf,
- CountDownLatch startSignal,
- CountDownLatch doneSignal,
- String property) {
- this.startSignal = startSignal;
- this.doneSignal = doneSignal;
- this.pf = pf;
- this.property = property;
- }
-
- public void run() {
-
- try {
- startSignal.await();
- ProviderFactoryTest.this.doTestDefaultJaxbProviderCloned(pf, property);
- doneSignal.countDown();
- } catch (Exception ex) {
- ex.printStackTrace();
- Assert.fail(ex.getMessage());
- }
-
- }
- }
-
private static class RuntimeExceptionMapper1
extends AbstractTestExceptionMapper<RuntimeException> {
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProviderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProviderTest.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProviderTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/XSLTJaxbProviderTest.java Wed Feb 6 12:35:21 2013
@@ -234,7 +234,7 @@ public class XSLTJaxbProviderTest extend
}
private Message createMessage() {
- ProviderFactory factory = ProviderFactory.getInstance();
+ ProviderFactory factory = ServerProviderFactory.getInstance();
Message m = new MessageImpl();
m.put(Message.ENDPOINT_ADDRESS, "http://localhost:8080/bar");
m.put("org.apache.cxf.http.case_insensitive_queries", false);
@@ -250,7 +250,7 @@ public class XSLTJaxbProviderTest extend
EasyMock.expectLastCall().andReturn(0).anyTimes();
endpoint.isEmpty();
EasyMock.expectLastCall().andReturn(true).anyTimes();
- endpoint.get(ProviderFactory.class.getName());
+ endpoint.get(ServerProviderFactory.class.getName());
EasyMock.expectLastCall().andReturn(factory).anyTimes();
EasyMock.replay(endpoint);
e.put(Endpoint.class, endpoint);
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/InjectionUtilsTest.java Wed Feb 6 12:35:21 2013
@@ -36,6 +36,7 @@ import javax.xml.bind.annotation.adapter
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.jaxrs.model.ParameterType;
import org.apache.cxf.jaxrs.provider.ProviderFactory;
+import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
import org.apache.cxf.message.Message;
@@ -212,7 +213,7 @@ public class InjectionUtilsTest extends
}
private Message createMessage() {
- ProviderFactory factory = ProviderFactory.getInstance();
+ ProviderFactory factory = ServerProviderFactory.getInstance();
Message m = new MessageImpl();
m.put("org.apache.cxf.http.case_insensitive_queries", false);
Exchange e = new ExchangeImpl();
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java Wed Feb 6 12:35:21 2013
@@ -92,6 +92,7 @@ import org.apache.cxf.jaxrs.model.Operat
import org.apache.cxf.jaxrs.model.URITemplate;
import org.apache.cxf.jaxrs.provider.FormEncodingProvider;
import org.apache.cxf.jaxrs.provider.ProviderFactory;
+import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
import org.apache.cxf.message.Message;
@@ -1832,7 +1833,7 @@ public class JAXRSUtilsTest extends Asse
}
private Message createMessage() {
- ProviderFactory factory = ProviderFactory.getInstance();
+ ProviderFactory factory = ServerProviderFactory.getInstance();
Message m = new MessageImpl();
m.put("org.apache.cxf.http.case_insensitive_queries", false);
Exchange e = new ExchangeImpl();
@@ -1847,7 +1848,7 @@ public class JAXRSUtilsTest extends Asse
EasyMock.expectLastCall().andReturn(0).anyTimes();
endpoint.isEmpty();
EasyMock.expectLastCall().andReturn(true).anyTimes();
- endpoint.get(ProviderFactory.class.getName());
+ endpoint.get(ServerProviderFactory.class.getName());
EasyMock.expectLastCall().andReturn(factory).anyTimes();
EasyMock.replay(endpoint);
e.put(Endpoint.class, endpoint);
Modified: cxf/trunk/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryAllTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryAllTest.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryAllTest.java (original)
+++ cxf/trunk/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryAllTest.java Wed Feb 6 12:35:21 2013
@@ -37,12 +37,12 @@ public class ProviderFactoryAllTest exte
@Before
public void setUp() {
- ProviderFactory.getInstance().clearProviders();
+ ServerProviderFactory.getInstance().clearProviders();
}
@Test
public void testAtomPojoProvider() {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
AtomPojoProvider provider = new AtomPojoProvider();
pf.registerUserProvider(provider);
MessageBodyReader<?> feedReader = pf.createMessageBodyReader(Book.class,
@@ -61,7 +61,7 @@ public class ProviderFactoryAllTest exte
@Test
public void testCustomJsonProvider() {
- ProviderFactory pf = ProviderFactory.getInstance();
+ ProviderFactory pf = ServerProviderFactory.getInstance();
JSONProvider<Book> provider = new JSONProvider<Book>();
pf.registerUserProvider(provider);
MessageBodyReader<?> customJsonReader = pf.createMessageBodyReader(Book.class, null, null,
@@ -73,33 +73,11 @@ public class ProviderFactoryAllTest exte
assertSame(customJsonWriter, provider);
}
- @Test
- public void testDefaultJsonProviderCloned() {
- ProviderFactory pf = ProviderFactory.getInstance();
- MessageBodyReader<?> customJsonReader = pf.createMessageBodyReader(Book.class, null, null,
- MediaType.APPLICATION_JSON_TYPE, new MessageImpl());
- assertTrue(customJsonReader instanceof JSONProvider);
-
- MessageBodyReader<?> customJsonReader2 = pf.createMessageBodyReader(Book.class, null, null,
- MediaType.APPLICATION_JSON_TYPE, new MessageImpl());
- assertSame(customJsonReader, customJsonReader2);
-
- MessageBodyWriter<?> customJsonWriter = pf.createMessageBodyWriter(Book.class, null, null,
- MediaType.APPLICATION_JSON_TYPE, new MessageImpl());
- assertSame(customJsonReader, customJsonWriter);
-
- MessageBodyReader<?> jsonReader = ProviderFactory.getSharedInstance().createMessageBodyReader(
- Book.class, null, null, MediaType.APPLICATION_JSON_TYPE, new MessageImpl());
- assertTrue(jsonReader instanceof JSONProvider);
- assertNotSame(jsonReader, customJsonReader);
- }
-
-
private void verifyProvider(ProviderFactory pf, Class<?> type, Class<?> provider, String mediaType)
throws Exception {
if (pf == null) {
- pf = ProviderFactory.getInstance();
+ pf = ServerProviderFactory.getInstance();
}
MediaType mType = MediaType.valueOf(mediaType);
Modified: cxf/trunk/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProviderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProviderTest.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProviderTest.java (original)
+++ cxf/trunk/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/dom4j/DOM4JProviderTest.java Wed Feb 6 12:35:21 2013
@@ -29,6 +29,7 @@ import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.jaxrs.impl.MetadataMap;
import org.apache.cxf.jaxrs.impl.ProvidersImpl;
import org.apache.cxf.jaxrs.provider.ProviderFactory;
+import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
import org.apache.cxf.message.Message;
@@ -102,7 +103,7 @@ public class DOM4JProviderTest extends A
}
private Message createMessage() {
- ProviderFactory factory = ProviderFactory.getInstance();
+ ProviderFactory factory = ServerProviderFactory.getInstance();
Message m = new MessageImpl();
m.put("org.apache.cxf.http.case_insensitive_queries", false);
Exchange e = new ExchangeImpl();
@@ -117,7 +118,7 @@ public class DOM4JProviderTest extends A
EasyMock.expectLastCall().andReturn(0).anyTimes();
endpoint.isEmpty();
EasyMock.expectLastCall().andReturn(true).anyTimes();
- endpoint.get(ProviderFactory.class.getName());
+ endpoint.get(ServerProviderFactory.class.getName());
EasyMock.expectLastCall().andReturn(factory).anyTimes();
EasyMock.replay(endpoint);
e.put(Endpoint.class, endpoint);
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/JAXRSSpringSecurityClassTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/JAXRSSpringSecurityClassTest.java?rev=1442931&r1=1442930&r2=1442931&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/JAXRSSpringSecurityClassTest.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/JAXRSSpringSecurityClassTest.java Wed Feb 6 12:35:21 2013
@@ -53,7 +53,7 @@ public class JAXRSSpringSecurityClassTes
WebClient wc = WebClient.create("http://localhost:" + PORT + "/bookstorestorage/bookforms",
"foo", "bar", null);
-
+ wc.accept("application/xml");
Response r = wc.form(new Form().set("name", "CXF Rocks").set("id", "123"));
Book b = readBook((InputStream)r.getEntity());
@@ -66,7 +66,7 @@ public class JAXRSSpringSecurityClassTes
WebClient wc = WebClient.create("http://localhost:" + PORT + "/bookstorestorage/bookforms2",
"foo", "bar", null);
-
+ wc.accept("application/xml");
Response r = wc.form(new Form().set("name", "CXF Rocks").set("id", "123"));
Book b = readBook((InputStream)r.getEntity());