1 package com.atlassian.plugins.rest.restart; 2 3 import com.atlassian.plugin.PluginAccessor; 4 import com.atlassian.plugin.PluginController; 5 import com.atlassian.plugins.rest.autowiring.SomeService; 6 import com.atlassian.plugins.rest.common.security.AnonymousAllowed; 7 import org.apache.commons.lang.Validate; 8 9 import javax.ws.rs.GET; 10 import javax.ws.rs.POST; 11 import javax.ws.rs.Path; 12 import javax.ws.rs.Produces; 13 import javax.ws.rs.core.MediaType; 14 import javax.ws.rs.core.Response; 15 16 @Path("/restart") 17 @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 18 public class RestartingResource { 19 private final PluginController pluginController; 20 private final PluginAccessor pluginAccessor; 21 public static final String V2_KEY = "com.atlassian.plugins.rest.atlassian-rest-refimpl-plugin-v2"; 22 23 public RestartingResource(PluginController pluginController, PluginAccessor pluginAccessor) { 24 this.pluginController = pluginController; 25 this.pluginAccessor = pluginAccessor; 26 } 27 28 @POST 29 @AnonymousAllowed 30 public Response restartV2Plugin() { 31 if (!pluginAccessor.isPluginEnabled(V2_KEY)) { 32 throw new RuntimeException("Plugin isn't enabled"); 33 } 34 pluginController.disablePlugin(V2_KEY); 35 if (pluginAccessor.isPluginEnabled(V2_KEY)) { 36 throw new RuntimeException("Plugin should be disabled"); 37 } 38 pluginController.enablePlugins(V2_KEY); 39 if (!pluginAccessor.isPluginEnabled(V2_KEY)) { 40 throw new RuntimeException("Plugin isn't enabled"); 41 } 42 return Response.ok().build(); 43 } 44 }