Commit 57efd8fe authored by Brian Long's avatar Brian Long
Browse files

Merge branch 'develop' into stable

parents 59adc9ce 06c8bf5f
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -9,10 +9,9 @@ import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import org.apache.cxf.jaxrs.ext.multipart.MultipartBody;

import com.inteligr8.alfresco.activiti.model.AppDefinitionRepresentation;
import com.inteligr8.alfresco.activiti.model.AppDefinitionUpdateResultRepresentation;
import com.inteligr8.alfresco.activiti.model.FileMultipartCxf;

@Path("/api/enterprise/app-definitions")
public interface AppDefinitionsCxfApi {
@@ -22,7 +21,7 @@ public interface AppDefinitionsCxfApi {
    @Consumes({ MediaType.MULTIPART_FORM_DATA })
    @Produces({ MediaType.APPLICATION_JSON })
    AppDefinitionRepresentation import_(
    		MultipartBody body,
    		FileMultipartCxf body,
    		@QueryParam("renewIdmEntries") Boolean renewIdmEntries);

    @POST
@@ -31,7 +30,7 @@ public interface AppDefinitionsCxfApi {
    @Produces({ MediaType.APPLICATION_JSON })
    AppDefinitionRepresentation import_(
    		@PathParam("modelId") Long appId,
    		MultipartBody body,
    		FileMultipartCxf body,
    		@QueryParam("renewIdmEntries") Boolean renewIdmEntries);

    @POST
@@ -39,7 +38,7 @@ public interface AppDefinitionsCxfApi {
    @Consumes({ MediaType.MULTIPART_FORM_DATA })
    @Produces({ MediaType.APPLICATION_JSON })
    AppDefinitionUpdateResultRepresentation publishApp(
    		MultipartBody body);
    		FileMultipartCxf body);

    @POST
    @Path("{modelId}/publish-app")
@@ -47,6 +46,6 @@ public interface AppDefinitionsCxfApi {
    @Produces({ MediaType.APPLICATION_JSON })
    AppDefinitionUpdateResultRepresentation publishApp(
    		@PathParam("modelId") Long appId,
    		MultipartBody body);
    		FileMultipartCxf body);

}
+5 −7
Original line number Diff line number Diff line
@@ -9,11 +9,9 @@ import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import org.glassfish.jersey.media.multipart.FormDataMultiPart;
import org.glassfish.jersey.media.multipart.FormDataParam;

import com.inteligr8.alfresco.activiti.model.AppDefinitionRepresentation;
import com.inteligr8.alfresco.activiti.model.AppDefinitionUpdateResultRepresentation;
import com.inteligr8.alfresco.activiti.model.FileMultipartJersey;

@Path("/api/enterprise/app-definitions")
public interface AppDefinitionsJerseyApi {
@@ -23,7 +21,7 @@ public interface AppDefinitionsJerseyApi {
    @Consumes({ MediaType.MULTIPART_FORM_DATA })
    @Produces({ MediaType.APPLICATION_JSON })
    AppDefinitionRepresentation importApp(
    		@FormDataParam("file") FormDataMultiPart file,
    		FileMultipartJersey file,
    		@QueryParam("renewIdmEntries") Boolean renewIdmEntries);

    @POST
@@ -32,7 +30,7 @@ public interface AppDefinitionsJerseyApi {
    @Produces({ MediaType.APPLICATION_JSON })
    AppDefinitionRepresentation importApp(
    		@PathParam("modelId") Long appId,
    		@FormDataParam("file") FormDataMultiPart file,
    		FileMultipartJersey file,
    		@QueryParam("renewIdmEntries") Boolean renewIdmEntries);

    @POST
@@ -40,7 +38,7 @@ public interface AppDefinitionsJerseyApi {
    @Consumes({ MediaType.MULTIPART_FORM_DATA })
    @Produces({ MediaType.APPLICATION_JSON })
    AppDefinitionUpdateResultRepresentation publishApp(
    		FormDataMultiPart file);
    		FileMultipartJersey file);

    @POST
    @Path("{modelId}/publish-app")
@@ -48,6 +46,6 @@ public interface AppDefinitionsJerseyApi {
    @Produces({ MediaType.APPLICATION_JSON })
    AppDefinitionUpdateResultRepresentation publishApp(
    		@PathParam("modelId") Long appId,
    		FormDataMultiPart file);
    		FileMultipartJersey file);

}
+38 −0
Original line number Diff line number Diff line
package com.inteligr8.alfresco.activiti.model;

import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;

import org.apache.cxf.jaxrs.ext.multipart.Attachment;
import org.apache.cxf.jaxrs.ext.multipart.ContentDisposition;
import org.apache.cxf.jaxrs.ext.multipart.MultipartBody;

public class FileMultipartCxf extends MultipartBody {
	
	public static FileMultipartCxf from(String filename, InputStream istream) throws IOException {
		return new FileMultipartCxf(Arrays.asList(toAttachment(filename, istream)));
	}
 	
	public FileMultipartCxf(List<Attachment> atts) throws IOException {
		super(atts);
	}
 	
	public FileMultipartCxf(List<Attachment> atts, boolean outbound) {
		super(atts, outbound);
	}
	
	public Attachment getFileAttachment() {
		return this.getAttachment("file");
	}

	private static Attachment toAttachment(String filename, InputStream istream) {
		if (filename == null) {
			return new Attachment("file", istream, new ContentDisposition("form-data; name=\"file\""));
		} else {
			return new Attachment("file", istream, new ContentDisposition("form-data; name=\"file\"; filename=\"" + filename + "\""));
		}
	}

}
+38 −0
Original line number Diff line number Diff line
package com.inteligr8.alfresco.activiti.model;

import java.io.InputStream;
import java.text.ParseException;

import org.glassfish.jersey.media.multipart.BodyPart;
import org.glassfish.jersey.media.multipart.FormDataBodyPart;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataMultiPart;

public class FileMultipartJersey extends FormDataMultiPart {
	
	public static FileMultipartJersey from(String filename, InputStream istream) throws ParseException {
		FileMultipartJersey multipart = new FileMultipartJersey();
		multipart.bodyPart(toBodyPart(filename, istream));
		return multipart;
	}
	
	private FileMultipartJersey() {
	}
	
	public FormDataBodyPart getFileAttachment() {
		return this.getField("file");
	}

	private static BodyPart toBodyPart(String filename, InputStream istream) throws ParseException {
		if (filename == null) {
			return new FormDataBodyPart()
					.contentDisposition(new FormDataContentDisposition("form-data; name=\"file\""))
					.entity(istream);
		} else {
			return new FormDataBodyPart()
					.contentDisposition(new FormDataContentDisposition("form-data; name=\"file\"; filename=\"" + filename + "\""))
					.entity(istream);
		}
	}

}