diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/RestActionUploadResult.java b/scm-webapp/src/main/java/sonia/scm/api/rest/RestActionUploadResult.java new file mode 100644 index 0000000000..2143ece628 --- /dev/null +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/RestActionUploadResult.java @@ -0,0 +1,54 @@ +/** + * Copyright (c) 2010, Sebastian Sdorra All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. 2. Redistributions in + * binary form must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or other + * materials provided with the distribution. 3. Neither the name of SCM-Manager; + * nor the names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + + +package sonia.scm.api.rest; + +import javax.xml.bind.annotation.XmlRootElement; + +/** + * + * @author Sebastian Sdorra + */ +@XmlRootElement(name="result") +public class RestActionUploadResult extends RestActionResult +{ + + /** + * Constructs ... + * + * + * @param success + */ + public RestActionUploadResult(boolean success) + { + super(success); + } +} diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/RestActionResultMessageWriter.java b/scm-webapp/src/main/java/sonia/scm/api/rest/RestActionUploadResultMessageWriter.java similarity index 92% rename from scm-webapp/src/main/java/sonia/scm/api/rest/RestActionResultMessageWriter.java rename to scm-webapp/src/main/java/sonia/scm/api/rest/RestActionUploadResultMessageWriter.java index b026eecdd4..cc2881bd00 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/RestActionResultMessageWriter.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/RestActionUploadResultMessageWriter.java @@ -30,6 +30,7 @@ */ + package sonia.scm.api.rest; //~--- non-JDK imports -------------------------------------------------------- @@ -51,11 +52,14 @@ import javax.ws.rs.ext.MessageBodyWriter; import javax.ws.rs.ext.Provider; /** + * Force json output for uploads, because of a bug we have to use a html + * mimetype for uploads. * + * TODO find a better way * @author Sebastian Sdorra */ @Provider -public class RestActionResultMessageWriter +public class RestActionUploadResultMessageWriter implements MessageBodyWriter { @@ -122,6 +126,7 @@ public class RestActionResultMessageWriter public boolean isWriteable(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) { - return RestActionResult.class.isAssignableFrom(type); + return RestActionUploadResult.class.isAssignableFrom(type) + && mediaType.equals(MediaType.TEXT_HTML_TYPE); } } 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 b547e02094..02631c39fc 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 @@ -45,6 +45,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.api.rest.RestActionResult; +import sonia.scm.api.rest.RestActionUploadResult; import sonia.scm.plugin.DefaultPluginManager; import sonia.scm.plugin.OverviewPluginFilter; import sonia.scm.plugin.PluginConditionFailedException; @@ -132,7 +133,7 @@ public class PluginResource try { pluginManager.installPackage(uploadedInputStream); - response = Response.ok(new RestActionResult(true)).build(); + response = Response.ok(new RestActionUploadResult(true)).build(); } catch (PluginConditionFailedException ex) { @@ -173,7 +174,7 @@ public class PluginResource } /** - * Installs a plugin from a package. This method is a workaround for ExtJS + * Installs a plugin from a package. This method is a workaround for ExtJS * file upload, which requires text/html as content-type.
*
*