Index: src/main/java/org/jboss/resteasy/spi/ResteasyDeployment.java
===================================================================
--- src/main/java/org/jboss/resteasy/spi/ResteasyDeployment.java (revision 794)
+++ src/main/java/org/jboss/resteasy/spi/ResteasyDeployment.java (working copy)
@@ -15,8 +15,10 @@
import javax.ws.rs.core.MediaType;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
* @author Bill Burke
@@ -211,22 +213,35 @@
public static void processApplication(Application config, Registry registry, ResteasyProviderFactory factory)
{
logger.info("Deploying " + Application.class.getName() + ": " + config.getClass());
+ Set> resources = new HashSet>();
+ Set> providers = new HashSet>();
+
if (config.getClasses() != null)
{
- for (Class clazz : config.getClasses())
+ for (Class> clazz : config.getClasses())
{
if (clazz.isAnnotationPresent(Path.class))
{
- logger.info("Adding class resource " + clazz.getName() + " from Application " + Application.class.getName());
- registry.addPerRequestResource(clazz);
+ resources.add(clazz);
}
else
{
- logger.info("Adding class @Provider " + clazz.getName() + " from Application " + Application.class.getName());
- factory.registerProvider(clazz);
+ providers.add(clazz);
+
}
}
}
+
+ for (Class> clazz : providers) {
+ logger.info("Adding class @Provider " + clazz.getName() + " from Application " + Application.class.getName());
+ factory.registerProvider(clazz);
+ }
+
+ for (Class> clazz : providers) {
+ logger.info("Adding class resource " + clazz.getName() + " from Application " + Application.class.getName());
+ registry.addPerRequestResource(clazz);
+ }
+
if (config.getSingletons() != null)
{
for (Object obj : config.getSingletons())