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 { 20 private final PluginController pluginController; 21 private final PluginAccessor pluginAccessor; 22 public static final String V2_KEY = "com.atlassian.plugins.rest.atlassian-rest-refimpl-plugin-v2"; 23 24 public RestartingResource(PluginController pluginController, PluginAccessor pluginAccessor) 25 { 26 this.pluginController = pluginController; 27 this.pluginAccessor = pluginAccessor; 28 } 29 30 @POST 31 @AnonymousAllowed 32 public Response restartV2Plugin() 33 { 34 if (!pluginAccessor.isPluginEnabled(V2_KEY)) 35 { 36 throw new RuntimeException("Plugin isn't enabled"); 37 } 38 pluginController.disablePlugin(V2_KEY); 39 if (pluginAccessor.isPluginEnabled(V2_KEY)) 40 { 41 throw new RuntimeException("Plugin should be disabled"); 42 } 43 pluginController.enablePlugins(V2_KEY); 44 if (!pluginAccessor.isPluginEnabled(V2_KEY)) 45 { 46 throw new RuntimeException("Plugin isn't enabled"); 47 } 48 return Response.ok().build(); 49 } 50 }