Compare commits

...

3 Commits
v1.2.0 ... v1.x

Author SHA1 Message Date
06c8bf5f2f fixed multipart handling; similar to ACS API 2022-04-18 15:44:42 -04:00
0365425e4f added renew param for import app 2022-04-07 23:48:34 -04:00
14c91eb237 fix appdef upload 2022-03-28 14:48:13 -04:00
4 changed files with 102 additions and 31 deletions

View File

@@ -1,51 +1,51 @@
package com.inteligr8.alfresco.activiti.api;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.apache.cxf.jaxrs.ext.multipart.Attachment;
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 {
@POST
@Path("import")
@Consumes({ MediaType.APPLICATION_JSON, "application/zip", MediaType.MULTIPART_FORM_DATA })
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
AppDefinitionRepresentation import_(
List<Attachment> attachments);
FileMultipartCxf body,
@QueryParam("renewIdmEntries") Boolean renewIdmEntries);
@POST
@Path("{modelId}/import")
@Consumes({ MediaType.APPLICATION_JSON, "application/zip", MediaType.MULTIPART_FORM_DATA })
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
AppDefinitionRepresentation import_(
@PathParam("modelId") Long appId,
List<Attachment> attachments);
FileMultipartCxf body,
@QueryParam("renewIdmEntries") Boolean renewIdmEntries);
@POST
@Path("publish-app")
@Consumes({ MediaType.APPLICATION_JSON, "application/zip", MediaType.MULTIPART_FORM_DATA })
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
AppDefinitionUpdateResultRepresentation publishApp(
List<Attachment> attachments);
FileMultipartCxf body);
@POST
@Path("{modelId}/publish-app")
@Consumes({ MediaType.APPLICATION_JSON, "application/zip", MediaType.MULTIPART_FORM_DATA })
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
AppDefinitionUpdateResultRepresentation publishApp(
@PathParam("modelId") Long appId,
List<Attachment> attachments);
FileMultipartCxf body);
}

View File

@@ -1,56 +1,51 @@
package com.inteligr8.alfresco.activiti.api;
import java.io.InputStream;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
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 {
@POST
@Path("import")
@Consumes({ MediaType.APPLICATION_JSON, "application/zip", MediaType.MULTIPART_FORM_DATA })
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
AppDefinitionRepresentation import_(
@FormDataParam("file") InputStream filedataStream,
@FormDataParam("file") FormDataContentDisposition filedataDisposition);
AppDefinitionRepresentation importApp(
FileMultipartJersey file,
@QueryParam("renewIdmEntries") Boolean renewIdmEntries);
@POST
@Path("{modelId}/import")
@Consumes({ MediaType.APPLICATION_JSON, "application/zip", MediaType.MULTIPART_FORM_DATA })
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
AppDefinitionRepresentation import_(
AppDefinitionRepresentation importApp(
@PathParam("modelId") Long appId,
@FormDataParam("file") InputStream filedataStream,
@FormDataParam("file") FormDataContentDisposition filedataDisposition);
FileMultipartJersey file,
@QueryParam("renewIdmEntries") Boolean renewIdmEntries);
@POST
@Path("publish-app")
@Consumes({ MediaType.APPLICATION_JSON, "application/zip", MediaType.MULTIPART_FORM_DATA })
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
AppDefinitionUpdateResultRepresentation publishApp(
@FormDataParam("file") InputStream filedataStream,
@FormDataParam("file") FormDataContentDisposition filedataDisposition);
FileMultipartJersey file);
@POST
@Path("{modelId}/publish-app")
@Consumes({ MediaType.APPLICATION_JSON, "application/zip", MediaType.MULTIPART_FORM_DATA })
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
AppDefinitionUpdateResultRepresentation publishApp(
@PathParam("modelId") Long appId,
@FormDataParam("file") InputStream filedataStream,
@FormDataParam("file") FormDataContentDisposition filedataDisposition);
FileMultipartJersey file);
}

View File

@@ -0,0 +1,38 @@
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 + "\""));
}
}
}

View File

@@ -0,0 +1,38 @@
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);
}
}
}