You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by bl...@apache.org on 2009/10/03 18:40:07 UTC
svn commit: r821358 - in /incubator/wink/trunk:
wink-common/src/main/java/org/apache/wink/common/internal/registry/
wink-itests/wink-itest/wink-itest-params/src/test/java/org/apache/wink/itest/
wink-server/src/main/java/org/apache/wink/server/internal/...
Author: bluk
Date: Sat Oct 3 16:40:07 2009
New Revision: 821358
URL: http://svn.apache.org/viewvc?rev=821358&view=rev
Log:
Make distinction between user and system providers
Add boolean flag to indicate different types of
providers to cleanup code.
Modified:
incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/ProvidersRegistry.java
incubator/wink/trunk/wink-itests/wink-itest/wink-itest-params/src/test/java/org/apache/wink/itest/CookieFieldsTest.java
incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/DeploymentConfiguration.java
incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/RequestProcessor.java
incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/application/ApplicationProcessor.java
incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/servlet/RestServlet.java
incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/utils/RegistrationUtils.java
incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/application/ApplicationProcessorTest.java
incubator/wink/trunk/wink-spring-support/src/main/java/org/apache/wink/spring/Registrar.java
Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/ProvidersRegistry.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/ProvidersRegistry.java?rev=821358&r1=821357&r2=821358&view=diff
==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/ProvidersRegistry.java (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/ProvidersRegistry.java Sat Oct 3 16:40:07 2009
@@ -94,27 +94,35 @@
this.applicationValidator = applicationValidator;
}
- @SuppressWarnings("unchecked")
public boolean addProvider(Class<?> cls, double priority) {
+ return addProvider(cls, priority, false);
+ }
+
+ @SuppressWarnings("unchecked")
+ public boolean addProvider(Class<?> cls, double priority, boolean isSystemProvider) {
if (cls == null) {
throw new NullPointerException("cls");
}
ObjectFactory<?> objectFactory = factoryFactoryRegistry.getObjectFactory(cls);
- return addProvider(new PriorityObjectFactory(objectFactory, priority));
+ return addProvider(new PriorityObjectFactory(objectFactory, priority, isSystemProvider));
}
- @SuppressWarnings("unchecked")
public boolean addProvider(Object provider, double priority) {
+ return addProvider(provider, priority, false);
+ }
+
+ @SuppressWarnings("unchecked")
+ public boolean addProvider(Object provider, double priority, boolean isSystemProvider) {
if (provider == null) {
throw new NullPointerException("provider");
}
ObjectFactory<?> objectFactory = factoryFactoryRegistry.getObjectFactory(provider);
- return addProvider(new PriorityObjectFactory(objectFactory, priority));
+ return addProvider(new PriorityObjectFactory(objectFactory, priority, isSystemProvider));
}
@SuppressWarnings("unchecked")
- private synchronized boolean addProvider(ObjectFactory<?> objectFactory) {
+ private synchronized boolean addProvider(PriorityObjectFactory<?> objectFactory) {
Class<? extends Object> cls = objectFactory.getInstanceClass();
logger.debug("Processing provider of type {}", cls);
@@ -126,7 +134,7 @@
}
if (ContextResolver.class.isAssignableFrom(cls)) {
- contextResolvers.putProvider((ObjectFactory<ContextResolver<?>>)objectFactory);
+ contextResolvers.putProvider((PriorityObjectFactory<ContextResolver<?>>)objectFactory);
retValue = true;
}
if (ExceptionMapper.class.isAssignableFrom(cls)) {
@@ -139,11 +147,13 @@
retValue = true;
}
if (MessageBodyReader.class.isAssignableFrom(cls)) {
- messageBodyReaders.putProvider((ObjectFactory<MessageBodyReader<?>>)objectFactory);
+ messageBodyReaders
+ .putProvider((PriorityObjectFactory<MessageBodyReader<?>>)objectFactory);
retValue = true;
}
if (MessageBodyWriter.class.isAssignableFrom(cls)) {
- messageBodyWriters.putProvider((ObjectFactory<MessageBodyWriter<?>>)objectFactory);
+ messageBodyWriters
+ .putProvider((PriorityObjectFactory<MessageBodyWriter<?>>)objectFactory);
retValue = true;
}
if (retValue == false) {
@@ -184,7 +194,7 @@
return null;
}
- final List<ObjectFactory<ContextResolver<?>>> factories =
+ final List<MediaTypeMap<ContextResolver<?>>.OFHolder<ContextResolver<?>>> factories =
contextResolvers.getProvidersByMediaType(mediaType, contextType);
if (factories.isEmpty()) {
@@ -349,7 +359,7 @@
.debug("Getting MessageBodyReader for class type {}, genericType {}, annotations {}, and media type {}",
new Object[] {type, genericType, anns, mediaType});
}
- List<ObjectFactory<MessageBodyReader<?>>> factories =
+ List<MediaTypeMap<MessageBodyReader<?>>.OFHolder<MessageBodyReader<?>>> factories =
messageBodyReaders.getProvidersByMediaType(mediaType, type);
logger.debug("Found possible MessageBodyReader ObjectFactories {}", factories);
@@ -391,7 +401,7 @@
.debug("Getting MessageBodyWriter for class type {}, genericType {}, annotations {}, and media type {}",
new Object[] {type, genericType, anns, mediaType});
}
- List<ObjectFactory<MessageBodyWriter<?>>> writersFactories =
+ List<MediaTypeMap<MessageBodyWriter<?>>.OFHolder<MessageBodyWriter<?>>> writersFactories =
messageBodyWriters.getProvidersByMediaType(mediaType, type);
logger.debug("Found possible MessageBodyWriter ObjectFactories {}", writersFactories);
for (ObjectFactory<MessageBodyWriter<?>> factory : writersFactories) {
@@ -419,7 +429,7 @@
Set<MediaType> mediaTypes = new HashSet<MediaType>();
logger.debug("Searching MessageBodyReaders media types limited by class type {}", type);
- List<ObjectFactory<MessageBodyReader<?>>> readerFactories =
+ List<MediaTypeMap<MessageBodyReader<?>>.OFHolder<MessageBodyReader<?>>> readerFactories =
messageBodyReaders.getProvidersByMediaType(MediaType.WILDCARD_TYPE, type);
logger.debug("Found all MessageBodyReader ObjectFactories limited by class type {}",
readerFactories);
@@ -467,7 +477,7 @@
super(rawType);
}
- public void putProvider(ObjectFactory<T> objectFactory) {
+ public void putProvider(PriorityObjectFactory<T> objectFactory) {
Produces produces = objectFactory.getInstanceClass().getAnnotation(Produces.class);
if (produces == null) {
put(MediaType.WILDCARD_TYPE, objectFactory);
@@ -486,7 +496,7 @@
super(rawType);
}
- public void putProvider(ObjectFactory<T> objectFactory) {
+ public void putProvider(PriorityObjectFactory<T> objectFactory) {
Consumes consumes = objectFactory.getInstanceClass().getAnnotation(Consumes.class);
if (consumes == null) {
put(MediaType.WILDCARD_TYPE, objectFactory);
@@ -501,17 +511,17 @@
private abstract class MediaTypeMap<T> {
- private volatile HashMap<MediaType, HashSet<ObjectFactory<T>>> data =
- new HashMap<MediaType, HashSet<ObjectFactory<T>>>();
+ private volatile HashMap<MediaType, HashSet<PriorityObjectFactory<T>>> data =
+ new HashMap<MediaType, HashSet<PriorityObjectFactory<T>>>();
@SuppressWarnings("unchecked")
- private volatile Entry<MediaType, HashSet<ObjectFactory<T>>>[] entrySet =
- data
- .entrySet()
- .toArray(new Entry[0]);
- private final Class<?> rawType;
+ private volatile Entry<MediaType, HashSet<PriorityObjectFactory<T>>>[] entrySet =
+ data
+ .entrySet()
+ .toArray(new Entry[0]);
+ private final Class<?> rawType;
- private final SoftConcurrentMap<Class<?>, SoftConcurrentMap<MediaType, List<ObjectFactory<T>>>> providersCache =
- new SoftConcurrentMap<Class<?>, SoftConcurrentMap<MediaType, List<ObjectFactory<T>>>>(); ;
+ private final SoftConcurrentMap<Class<?>, SoftConcurrentMap<MediaType, List<OFHolder<T>>>> providersCache =
+ new SoftConcurrentMap<Class<?>, SoftConcurrentMap<MediaType, List<OFHolder<T>>>>(); ;
public MediaTypeMap(Class<?> rawType) {
super();
@@ -529,7 +539,7 @@
* @param cls
* @return
*/
- public List<ObjectFactory<T>> getProvidersByMediaType(MediaType mediaType, Class<?> cls) {
+ public List<OFHolder<T>> getProvidersByMediaType(MediaType mediaType, Class<?> cls) {
String subtype = mediaType.getSubtype();
String type = mediaType.getType();
if (!mediaType.getParameters().isEmpty()) {
@@ -540,18 +550,17 @@
.debug("Getting providers by media type by calling getProvidersByMediaType({}, {})",
mediaType,
cls);
- SoftConcurrentMap<MediaType, List<ObjectFactory<T>>> mediaTypeToProvidersCache =
+ SoftConcurrentMap<MediaType, List<OFHolder<T>>> mediaTypeToProvidersCache =
providersCache.get(cls);
if (mediaTypeToProvidersCache == null) {
logger
.debug("MediaType to providers cache for class {} does not exist so creating",
cls);
- mediaTypeToProvidersCache =
- new SoftConcurrentMap<MediaType, List<ObjectFactory<T>>>();
+ mediaTypeToProvidersCache = new SoftConcurrentMap<MediaType, List<OFHolder<T>>>();
providersCache.put(cls, mediaTypeToProvidersCache);
}
- List<ObjectFactory<T>> list = mediaTypeToProvidersCache.get(mediaType);
+ List<OFHolder<T>> list = mediaTypeToProvidersCache.get(mediaType);
logger.debug("Get media type to providers cache for media type {} resulted in {}",
mediaType,
@@ -564,15 +573,13 @@
return list;
}
- private List<ObjectFactory<T>> internalGetProvidersByMediaType(MediaType mediaType,
- Class<?> cls) {
- Set<ObjectFactory<T>> compatible =
- new TreeSet<ObjectFactory<T>>(Collections.reverseOrder());
- for (Entry<MediaType, HashSet<ObjectFactory<T>>> entry : entrySet) {
+ private List<OFHolder<T>> internalGetProvidersByMediaType(MediaType mediaType, Class<?> cls) {
+ Set<OFHolder<T>> compatible = new TreeSet<OFHolder<T>>(Collections.reverseOrder());
+ for (Entry<MediaType, HashSet<PriorityObjectFactory<T>>> entry : entrySet) {
if (entry.getKey().isCompatible(mediaType)) {
// media type is compatible, check generic type of the
// subset
- for (ObjectFactory<T> of : entry.getValue()) {
+ for (PriorityObjectFactory<T> of : entry.getValue()) {
if (GenericsUtils.isGenericInterfaceAssignableFrom(cls, of
.getInstanceClass(), rawType)) {
// Both media type and generic types are compatible.
@@ -583,23 +590,24 @@
// This is done via the equals() of the OFHolder
// which doesn't compare the MediaType
- compatible.add(new OFHolder<T>(entry.getKey(), of));
+ compatible
+ .add(new OFHolder<T>(entry.getKey(), of, of.isSystemProvider));
}
}
}
}
@SuppressWarnings("unchecked")
- ObjectFactory<T>[] tmp = compatible.toArray(new ObjectFactory[compatible.size()]);
+ OFHolder<T>[] tmp = compatible.toArray(new OFHolder[compatible.size()]);
return Arrays.asList(tmp);
}
public Set<MediaType> getProvidersMediaTypes(Class<?> type) {
Set<MediaType> mediaTypes = new HashSet<MediaType>();
- l1: for (Entry<MediaType, HashSet<ObjectFactory<T>>> entry : data.entrySet()) {
+ l1: for (Entry<MediaType, HashSet<PriorityObjectFactory<T>>> entry : data.entrySet()) {
MediaType mediaType = entry.getKey();
- Set<ObjectFactory<T>> set = entry.getValue();
- for (ObjectFactory<T> t : set) {
+ Set<PriorityObjectFactory<T>> set = entry.getValue();
+ for (PriorityObjectFactory<T> t : set) {
if (GenericsUtils.isGenericInterfaceAssignableFrom(type,
t.getInstanceClass(),
rawType)) {
@@ -612,17 +620,17 @@
}
@SuppressWarnings("unchecked")
- synchronized void put(MediaType key, ObjectFactory<T> objectFactory) {
- HashMap<MediaType, HashSet<ObjectFactory<T>>> copyOfMap =
- new HashMap<MediaType, HashSet<ObjectFactory<T>>>(data);
+ synchronized void put(MediaType key, PriorityObjectFactory<T> objectFactory) {
+ HashMap<MediaType, HashSet<PriorityObjectFactory<T>>> copyOfMap =
+ new HashMap<MediaType, HashSet<PriorityObjectFactory<T>>>(data);
if (!key.getParameters().isEmpty()) {
key = new MediaType(key.getType(), key.getSubtype());
}
- HashSet<ObjectFactory<T>> set = data.get(key);
+ HashSet<PriorityObjectFactory<T>> set = data.get(key);
if (set == null) {
- set = new HashSet<ObjectFactory<T>>();
+ set = new HashSet<PriorityObjectFactory<T>>();
} else {
- set = new HashSet<ObjectFactory<T>>(set);
+ set = new HashSet<PriorityObjectFactory<T>>(set);
}
copyOfMap.put(key, set);
if (!set.add(objectFactory)) {
@@ -630,19 +638,21 @@
} else {
// need to resort the entry set
- Entry<MediaType, HashSet<ObjectFactory<T>>>[] newEntrySet =
+ Entry<MediaType, HashSet<PriorityObjectFactory<T>>>[] newEntrySet =
copyOfMap.entrySet().toArray(new Entry[0]);
// It's important to sort the media types here to ensure that
// provider of the more dominant media type will precede, when
// adding to the compatible set.
- Arrays.sort(newEntrySet, Collections
- .reverseOrder(new Comparator<Entry<MediaType, HashSet<ObjectFactory<T>>>>() {
-
- public int compare(Entry<MediaType, HashSet<ObjectFactory<T>>> o1,
- Entry<MediaType, HashSet<ObjectFactory<T>>> o2) {
- return MediaTypeUtils.compareTo(o1.getKey(), o2.getKey());
- }
- }));
+ Arrays
+ .sort(newEntrySet,
+ Collections
+ .reverseOrder(new Comparator<Entry<MediaType, HashSet<PriorityObjectFactory<T>>>>() {
+
+ public int compare(Entry<MediaType, HashSet<PriorityObjectFactory<T>>> o1,
+ Entry<MediaType, HashSet<PriorityObjectFactory<T>>> o2) {
+ return MediaTypeUtils.compareTo(o1.getKey(), o2.getKey());
+ }
+ }));
if (logger.isDebugEnabled()) {
logger.debug("Added ObjectFactory {} with MediaType {} to MediaTypeMap {}",
@@ -695,16 +705,20 @@
return sb.toString();
}
- private class OFHolder<T> implements ObjectFactory<T>, Comparable<OFHolder<T>> {
+ class OFHolder<T> implements ObjectFactory<T>, Comparable<OFHolder<T>> {
private final PriorityObjectFactory<T> of;
private final MediaType mediaType;
private final Class<?> genericType;
+ private final boolean isSystemProvider;
- public OFHolder(MediaType mediaType, ObjectFactory<T> of) {
+ public OFHolder(MediaType mediaType,
+ PriorityObjectFactory<T> of,
+ boolean isSystemProvider) {
super();
- this.of = (PriorityObjectFactory<T>)of;
+ this.of = of;
this.mediaType = mediaType;
+ this.isSystemProvider = isSystemProvider;
genericType =
GenericsUtils.getClassType(GenericsUtils.getGenericInterfaceParamType(of
.getInstanceClass(), rawType));
@@ -757,23 +771,21 @@
return of.getInstanceClass();
}
- private static final double MAX_SYSTEM_PRIORITY = WinkApplication.SYSTEM_PRIORITY + 0.1;
-
public int compareTo(OFHolder<T> o) {
// check if this is a system provider
// system providers are less than
// WinkApplication.SYSTEM_PRIORITY + 0.1 (they start at
// WinkApplication.SYSTEM_PRIORITY and
// unless there are 10000000000, this shouldn't matter)
- if (of.priority < MAX_SYSTEM_PRIORITY) {
+ if (isSystemProvider) {
// this is a system provider
- if (o.of.priority > MAX_SYSTEM_PRIORITY) {
+ if (!o.isSystemProvider) {
// the other is a user provider so this is > 0.2
return -1;
}
- } else if (o.of.priority < MAX_SYSTEM_PRIORITY) {
+ } else if (o.isSystemProvider) {
// the other is a system provider
- if (of.priority > MAX_SYSTEM_PRIORITY) {
+ if (!isSystemProvider) {
// this is a user provider
return 1;
}
@@ -803,13 +815,15 @@
private final ObjectFactory<T> of;
private final double priority;
+ final boolean isSystemProvider;
private static double counter = 0.00000000001;
private static final double inc = 0.00000000001;
- public PriorityObjectFactory(ObjectFactory<T> of, double priority) {
+ public PriorityObjectFactory(ObjectFactory<T> of, double priority, boolean isSystemProvider) {
super();
this.of = of;
this.priority = priority + (counter += inc);
+ this.isSystemProvider = isSystemProvider;
}
public T getInstance(RuntimeContext context) {
Modified: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-params/src/test/java/org/apache/wink/itest/CookieFieldsTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-params/src/test/java/org/apache/wink/itest/CookieFieldsTest.java?rev=821358&r1=821357&r2=821358&view=diff
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-params/src/test/java/org/apache/wink/itest/CookieFieldsTest.java (original)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-params/src/test/java/org/apache/wink/itest/CookieFieldsTest.java Sat Oct 3 16:40:07 2009
@@ -38,7 +38,7 @@
*/
public class CookieFieldsTest extends TestCase {
- protected HttpClient httpclient = new HttpClient();
+ protected HttpClient httpclient;
private static String BASE_URI =
ServerEnvironmentInfo.getBaseURI() + "/newcookies/cookiestests";
@@ -49,6 +49,11 @@
}
}
+ @Override
+ public void setUp() {
+ httpclient = new HttpClient();
+ }
+
/**
* Test that the HttpHeaders.getCookies() method returns correct cookies and
* information
@@ -56,7 +61,6 @@
* @throws Exception
*/
public void testHttpHeadersGetCookie() throws Exception {
- httpclient = new HttpClient();
setCookies();
// call get to exercise HttpHeaders.getCookies()
GetMethod getHttpMethod = new GetMethod();
@@ -123,7 +127,6 @@
* @throws Exception
*/
public void testCookieParamPrivateVar() throws Exception {
- httpclient = new HttpClient();
setCookies();
GetMethod getHttpMethod = new GetMethod();
getHttpMethod.getParams().setCookiePolicy(CookiePolicy.RFC_2965);
Modified: incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/DeploymentConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/DeploymentConfiguration.java?rev=821358&r1=821357&r2=821358&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/DeploymentConfiguration.java (original)
+++ incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/DeploymentConfiguration.java Sat Oct 3 16:40:07 2009
@@ -257,8 +257,9 @@
return errorUserHandlers;
}
- public void addApplication(Application application) {
- new ApplicationProcessor(application, resourceRegistry, providersRegistry).process();
+ public void addApplication(Application application, boolean isSystemApplication) {
+ new ApplicationProcessor(application, resourceRegistry, providersRegistry,
+ isSystemApplication).process();
}
// init methods
Modified: incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/RequestProcessor.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/RequestProcessor.java?rev=821358&r1=821357&r2=821358&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/RequestProcessor.java (original)
+++ incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/RequestProcessor.java Sat Oct 3 16:40:07 2009
@@ -85,7 +85,7 @@
RegistrationUtils.InnerApplication application =
new RegistrationUtils.InnerApplication(classes);
application.setPriority(WinkApplication.SYSTEM_PRIORITY);
- configuration.addApplication(application);
+ configuration.addApplication(application, true);
} catch (FileNotFoundException e) {
throw new WebApplicationException(e);
}
@@ -100,7 +100,7 @@
RegistrationUtils.InnerApplication application =
new RegistrationUtils.InnerApplication(RootResource.class);
application.setPriority(WinkApplication.SYSTEM_PRIORITY);
- configuration.addApplication(application);
+ configuration.addApplication(application, true);
} else if (registerRootResource.equals(PROPERTY_ROOT_RESOURCE_NONE)) {
// do nothing
} else {
@@ -113,7 +113,7 @@
RegistrationUtils.InnerApplication application =
new RegistrationUtils.InnerApplication(instance);
application.setPriority(WinkApplication.SYSTEM_PRIORITY);
- configuration.addApplication(application);
+ configuration.addApplication(application, true);
}
}
Modified: incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/application/ApplicationProcessor.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/application/ApplicationProcessor.java?rev=821358&r1=821357&r2=821358&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/application/ApplicationProcessor.java (original)
+++ incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/application/ApplicationProcessor.java Sat Oct 3 16:40:07 2009
@@ -51,14 +51,17 @@
private final Application application;
private final ResourceRegistry resourceRegistry;
private final ProvidersRegistry providersRegistry;
+ private final boolean isSystemApplication;
public ApplicationProcessor(Application application,
ResourceRegistry resourceRegistry,
- ProvidersRegistry providersRegistry) {
+ ProvidersRegistry providersRegistry,
+ boolean isSystemApplication) {
super();
this.application = application;
this.resourceRegistry = resourceRegistry;
this.providersRegistry = providersRegistry;
+ this.isSystemApplication = isSystemApplication;
}
public void process() {
@@ -111,7 +114,7 @@
} else if (ResourceMetadataCollector.isStaticResource(cls)) {
resourceRegistry.addResource(obj, priority);
} else if (ProviderMetadataCollector.isProvider(cls)) {
- providersRegistry.addProvider(obj, priority);
+ providersRegistry.addProvider(obj, priority, isSystemApplication);
} else {
logger.warn(Messages
.getMessage("classNotADynamicResourceNorResourceNorProvider"), obj);
@@ -135,7 +138,7 @@
if (ResourceMetadataCollector.isStaticResource(cls)) {
resourceRegistry.addResource(cls, priority);
} else if (ProviderMetadataCollector.isProvider(cls)) {
- providersRegistry.addProvider(cls, priority);
+ providersRegistry.addProvider(cls, priority, isSystemApplication);
} else {
logger.warn(Messages.getMessage("classNotAResourceNorProvider"), cls);
}
@@ -158,7 +161,7 @@
if (ResourceMetadataCollector.isStaticResource(cls)) {
resourceRegistry.addResource(obj, priority);
} else if (ProviderMetadataCollector.isProvider(cls)) {
- providersRegistry.addProvider(obj, priority);
+ providersRegistry.addProvider(obj, priority, isSystemApplication);
} else {
logger.warn(Messages.getMessage("classNotAResourceNorProvider"), obj);
}
Modified: incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/servlet/RestServlet.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/servlet/RestServlet.java?rev=821358&r1=821357&r2=821358&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/servlet/RestServlet.java (original)
+++ incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/servlet/RestServlet.java Sat Oct 3 16:40:07 2009
@@ -110,7 +110,7 @@
DeploymentConfiguration deploymentConfiguration = getDeploymentConfiguration();
RequestProcessor requestProcessor = new RequestProcessor(deploymentConfiguration);
logger.debug("Creating request processor {} for servlet {}", requestProcessor, this);
- deploymentConfiguration.addApplication(getApplication());
+ deploymentConfiguration.addApplication(getApplication(), false);
return requestProcessor;
}
Modified: incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/utils/RegistrationUtils.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/utils/RegistrationUtils.java?rev=821358&r1=821357&r2=821358&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/utils/RegistrationUtils.java (original)
+++ incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/utils/RegistrationUtils.java Sat Oct 3 16:40:07 2009
@@ -82,7 +82,7 @@
String requestProcessorAttribute) {
RequestProcessor requestProcessor =
RequestProcessor.getRequestProcessor(servletContext, requestProcessorAttribute);
- requestProcessor.getConfiguration().addApplication(application);
+ requestProcessor.getConfiguration().addApplication(application, false);
}
public static class InnerApplication extends WinkApplication {
Modified: incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/application/ApplicationProcessorTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/application/ApplicationProcessorTest.java?rev=821358&r1=821357&r2=821358&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/application/ApplicationProcessorTest.java (original)
+++ incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/application/ApplicationProcessorTest.java Sat Oct 3 16:40:07 2009
@@ -100,12 +100,26 @@
return classes.add(cls);
}
+ public boolean addProvider(Class<?> cls, double priority, boolean isSystemProvider) {
+ if (BadProvider.class == cls) {
+ throw new BadProvider("BadProvider cannot be added");
+ }
+ return classes.add(cls);
+ }
+
public boolean addProvider(Object provider, double priority) {
if (provider instanceof BadProvider) {
throw new BadProvider("BadProvider cannot be added");
}
return instances.add(provider);
}
+
+ public boolean addProvider(Object provider, double priority, boolean isSystemProvider) {
+ if (provider instanceof BadProvider) {
+ throw new BadProvider("BadProvider cannot be added");
+ }
+ return instances.add(provider);
+ }
}
@Provider
@@ -207,7 +221,7 @@
public void testApplication() {
ResourceRegistryMock resourceRegistry = new ResourceRegistryMock();
ProvidersRegistryMock providersRegistry = new ProvidersRegistryMock();
- new ApplicationProcessor(new ApplicationMock(), resourceRegistry, providersRegistry)
+ new ApplicationProcessor(new ApplicationMock(), resourceRegistry, providersRegistry, false)
.process();
assertTrue(providersRegistry.classes.contains(FileProvider.class));
assertTrue(resourceRegistry.classes.contains(RootResource.class));
@@ -222,8 +236,8 @@
public void testWinkApplication() {
ResourceRegistryMock resourceRegistry = new ResourceRegistryMock();
ProvidersRegistryMock providersRegistry = new ProvidersRegistryMock();
- new ApplicationProcessor(new WinkApplicationMock(), resourceRegistry, providersRegistry)
- .process();
+ new ApplicationProcessor(new WinkApplicationMock(), resourceRegistry, providersRegistry,
+ false).process();
assertTrue(providersRegistry.classes.contains(FileProvider.class));
assertTrue(resourceRegistry.classes.contains(RootResource.class));
assertEquals(1, providersRegistry.classes.size());
Modified: incubator/wink/trunk/wink-spring-support/src/main/java/org/apache/wink/spring/Registrar.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-spring-support/src/main/java/org/apache/wink/spring/Registrar.java?rev=821358&r1=821357&r2=821358&view=diff
==============================================================================
--- incubator/wink/trunk/wink-spring-support/src/main/java/org/apache/wink/spring/Registrar.java (original)
+++ incubator/wink/trunk/wink-spring-support/src/main/java/org/apache/wink/spring/Registrar.java Sat Oct 3 16:40:07 2009
@@ -52,7 +52,7 @@
}
public void register(ResourceRegistry resourceRegistry, ProvidersRegistry providersRegistry) {
- new ApplicationProcessor(this, resourceRegistry, providersRegistry).process();
+ new ApplicationProcessor(this, resourceRegistry, providersRegistry, false).process();
}
public void setInstances(Set<Object> instances) {