package com.perforce.spark.artifact.maven; import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.io.FilenameUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import spark.Request; import spark.Response; import com.perforce.p4java.exception.P4JavaException; import com.perforce.p4java.server.IOptionsServer; import com.perforce.spark.artifact.DefaultArtifact; import com.perforce.spark.artifact.ArtifactInterface; import com.perforce.spark.depot.DepotFactory; import com.perforce.spark.depot.DepotModel; public class MavenArtifact extends DefaultArtifact implements ArtifactInterface { private static Logger logger = LoggerFactory.getLogger(MavenArtifact.class); private String groupID; private String assetID; private String version; private List<FileItem> fileItems = new ArrayList<>(); public MavenArtifact(Request request, Response response) throws P4JavaException, FileUploadException { super(request, response); } public MavenArtifact(IOptionsServer p4, String repoID) { super(p4); this.repoID = repoID; } @Override public void processForm(Request request) throws FileUploadException { DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload up = new ServletFileUpload(factory); List<FileItem> items = up.parseRequest(request.raw()); for (FileItem item : items) { if (item.isFormField()) { String fieldname = item.getFieldName(); String fieldvalue = item.getString(); switch (fieldname) { case "repoID": repoID = fieldvalue; break; case "groupID": groupID = fieldvalue; break; case "assetID": assetID = fieldvalue; break; case "version": version = fieldvalue; break; } } else { fileItems.add(item); } } } @Override public Path getPath() { String groupPath = groupID.replace(".", "/"); String id[] = { groupPath, assetID, version }; Path depotPath = Paths.get(repoID, id); return depotPath; } @Override public DepotModel getDepot() throws P4JavaException { DepotModel depot = DepotFactory.getByName(p4, repoID); return depot; } @Override public List<String> populateWorkspace(File root) throws Exception { List<String> list = new ArrayList<>(); for (FileItem item : fileItems) { String fileName = FilenameUtils.getName(item.getName()); File file = new File(root, fileName); item.write(file); list.add(file.getPath()); logger.info("uploading: " + fileName); } return list; } @Override public void index() throws Exception { // no indexing } @Override public void buildIndex() throws Exception { // no indexing } }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 15801 | Paul Allen | Experimental copy of PAM. | ||
//guest/paul_allen/p4am/src/main/java/com/perforce/spark/artifact/maven/MavenArtifact.java | |||||
#5 | 15313 | Paul Allen |
Added Client Workspace pool to manage parallel upload requests by the proxy (configuration set to 50). User uploads are restricted to only one per user. |
||
#4 | 15232 | Paul Allen | Fix on Artifact indexing | ||
#3 | 15221 | Paul Allen | Generate Gem index and submit after a deploy or proxy fetch event. | ||
#2 | 15218 | Paul Allen |
Index/catalog for Ruby. Plus depot names must be lower-case. |
||
#1 | 14897 | Paul Allen | Added form validation and Perforce Artifacts | ||
//guest/paul_allen/p4am/src/main/java/com/perforce/spark/MavenArtifact.java | |||||
#1 | 14886 | Paul Allen | Asset --> Artifact refactor | ||
//guest/paul_allen/p4am/src/main/java/com/perforce/spark/MavenAsset.java | |||||
#9 | 14883 | Paul Allen | Submit via preview and redirect to asset | ||
#8 | 14863 | Paul Allen | Change File/Dir browse to support extended options | ||
#7 | 14742 | Paul Allen | update - still issues with upload. | ||
#6 | 14741 | Paul Allen | Fix upload for multiple files. | ||
#5 | 14726 | Paul Allen | Limit deploy control path, and remove AssetHelper | ||
#4 | 14181 | Paul Allen | Lots of updates and refactoring. | ||
#3 | 14013 | Paul Allen | Basic proxy | ||
#2 | 13969 | Paul Allen | Depot list/create for Assets | ||
#1 | 13862 | Paul Allen | Submit uploads to Perforce |