diff --git a/scm-webapp/pom.xml b/scm-webapp/pom.xml
index 4edd710c15..afc934d136 100644
--- a/scm-webapp/pom.xml
+++ b/scm-webapp/pom.xml
@@ -218,6 +218,12 @@
+
+
+ org.codehaus.enunciate
+ enunciate-jersey-rt
+ ${enunciate.version}
+
@@ -324,6 +330,7 @@
default
+ 1.24
1.13
1.0
3.0.3
@@ -451,6 +458,52 @@
+
+
+ doc
+
+
+
+
+
+ org.codehaus.enunciate
+ maven-enunciate-plugin
+ ${enunciate.version}
+
+
+
+ docs
+
+ compile
+
+
+
+
+ sonia.scm.api.rest.resources.AuthenticationResource
+ sonia.scm.api.rest.resources.ChangePasswordResource
+
+ sonia.scm.api.rest.resources.GroupResource
+ sonia.scm.api.rest.resources.UserResource
+ sonia.scm.api.rest.resources.RepositoryResource
+ sonia.scm.api.rest.resources.PluginResource
+ sonia.scm.api.rest.resources.SearchResource
+
+ ${project.build.directory}/docs
+
+
+
+ org.codehaus.enunciate
+ enunciate-jersey
+ ${enunciate.version}
+
+
+
+
+
+
+
diff --git a/scm-webapp/src/main/doc/enunciate.xml b/scm-webapp/src/main/doc/enunciate.xml
new file mode 100644
index 0000000000..5a049bb7ab
--- /dev/null
+++ b/scm-webapp/src/main/doc/enunciate.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java
index ec87c5ae4f..05e22a52aa 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java
@@ -39,6 +39,8 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
+import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -72,6 +74,7 @@ import javax.ws.rs.core.Response;
*/
@Singleton
@Path("authentication")
+@SpringManagedLifecycle
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public class AuthenticationResource
{
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ChangePasswordResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ChangePasswordResource.java
index 52bb1aa595..6ee35f34e7 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ChangePasswordResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ChangePasswordResource.java
@@ -38,6 +38,8 @@ package sonia.scm.api.rest.resources;
import com.google.inject.Inject;
import com.google.inject.Provider;
+import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -66,6 +68,7 @@ import javax.ws.rs.core.Response;
*
* @author Sebastian Sdorra
*/
+@SpringManagedLifecycle
@Path("action/change-password")
public class ChangePasswordResource
{
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ConfigurationResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ConfigurationResource.java
index e8bed8bb83..e1be94159a 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ConfigurationResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ConfigurationResource.java
@@ -39,6 +39,8 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
+import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle;
+
import sonia.scm.config.ScmConfiguration;
import sonia.scm.util.ScmConfigurationUtil;
import sonia.scm.util.SecurityUtil;
@@ -62,6 +64,7 @@ import javax.ws.rs.core.UriInfo;
*/
@Singleton
@Path("config")
+@SpringManagedLifecycle
public class ConfigurationResource
{
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/DiffStreamingOutput.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/DiffStreamingOutput.java
index b21a2676c9..a8f7c93ef4 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/DiffStreamingOutput.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/DiffStreamingOutput.java
@@ -67,8 +67,8 @@ public class DiffStreamingOutput implements StreamingOutput
/**
* Constructs ...
- *
- *
+ *
+ *
* @param diffViewer
* @param revision
* @param path
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/GroupResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/GroupResource.java
index 0ea3d02151..df65e3c02b 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/GroupResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/GroupResource.java
@@ -39,6 +39,8 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
+import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle;
+
import sonia.scm.group.Group;
import sonia.scm.group.GroupException;
import sonia.scm.group.GroupManager;
@@ -60,6 +62,7 @@ import javax.ws.rs.core.Response;
*/
@Path("groups")
@Singleton
+@SpringManagedLifecycle
public class GroupResource
extends AbstractManagerResource
{
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/PluginResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/PluginResource.java
index f84e09e5fc..5374a27bca 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/PluginResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/PluginResource.java
@@ -38,6 +38,8 @@ package sonia.scm.api.rest.resources;
import com.google.inject.Inject;
import com.google.inject.Singleton;
+import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle;
+
import sonia.scm.plugin.DefaultPluginManager;
import sonia.scm.plugin.OverviewPluginFilter;
import sonia.scm.plugin.PluginInformation;
@@ -65,6 +67,7 @@ import javax.ws.rs.core.Response;
*/
@Singleton
@Path("plugins")
+@SpringManagedLifecycle
public class PluginResource
{
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java
index 66fd18687a..63f2332b04 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/RepositoryResource.java
@@ -39,6 +39,8 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
+import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -88,6 +90,7 @@ import javax.ws.rs.core.StreamingOutput;
*/
@Singleton
@Path("repositories")
+@SpringManagedLifecycle
public class RepositoryResource
extends AbstractManagerResource
{
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java
index b3608f8c00..4b65b3ba77 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java
@@ -40,6 +40,8 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
+import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle;
+
import sonia.scm.HandlerEvent;
import sonia.scm.cache.Cache;
import sonia.scm.cache.CacheManager;
@@ -68,6 +70,7 @@ import javax.ws.rs.core.MediaType;
*/
@Singleton
@Path("search")
+@SpringManagedLifecycle
public class SearchResource implements UserListener, GroupListener
{
diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/UserResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/UserResource.java
index 00051f21e5..a1a866b1df 100644
--- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/UserResource.java
+++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/UserResource.java
@@ -39,6 +39,8 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
+import org.codehaus.enunciate.modules.jersey.SpringManagedLifecycle;
+
import sonia.scm.security.EncryptionHandler;
import sonia.scm.user.User;
import sonia.scm.user.UserException;
@@ -63,6 +65,7 @@ import javax.ws.rs.core.Response;
*/
@Path("users")
@Singleton
+@SpringManagedLifecycle
public class UserResource extends AbstractManagerResource
{