diff --git a/modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/management/deployment/DefaultDeploymentFilter.java b/modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/management/deployment/DefaultDeploymentFilter.java index ed55a2be6245b4c94f0703344f7f6ca7a59fefdb..1dabb9ecc263fa46b357b75343bf158a4c394452 100644 --- a/modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/management/deployment/DefaultDeploymentFilter.java +++ b/modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/management/deployment/DefaultDeploymentFilter.java @@ -15,6 +15,7 @@ package org.activiti.explorer.ui.management.deployment; import org.activiti.engine.RepositoryService; import org.activiti.engine.repository.Deployment; +import org.activiti.engine.repository.DeploymentBuilder; import org.activiti.engine.repository.DeploymentQuery; import org.activiti.explorer.ui.management.deployment.DeploymentListQuery.DeploymentListitem; @@ -42,5 +43,9 @@ public class DefaultDeploymentFilter implements DeploymentFilter { public DeploymentListitem createItem(Deployment deployment) { return new DeploymentListitem(deployment); } + + public void beforeDeploy(DeploymentBuilder deployment) { + // Nothing special needs to be done with the deployment, by default + } } diff --git a/modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/management/deployment/DeploymentFilter.java b/modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/management/deployment/DeploymentFilter.java index a2b663508e6ea50c73455b10f0e063b2afe49e13..08f73ddb9626f2a92faee2b4e7c3df1541d5866c 100644 --- a/modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/management/deployment/DeploymentFilter.java +++ b/modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/management/deployment/DeploymentFilter.java @@ -15,12 +15,14 @@ package org.activiti.explorer.ui.management.deployment; import org.activiti.engine.RepositoryService; import org.activiti.engine.repository.Deployment; +import org.activiti.engine.repository.DeploymentBuilder; import org.activiti.engine.repository.DeploymentQuery; import org.activiti.explorer.ui.management.deployment.DeploymentListQuery.DeploymentListitem; /** - * Class used in {@link DeploymentListQuery} for filtering. + * Class used in {@link DeploymentListQuery} for filtering and consulted right before + * a new {@link Deployment} is about to be deployed through the UI. * * @author Frederik Heremans */ @@ -42,4 +44,10 @@ public interface DeploymentFilter { * @return item representing the deployment */ DeploymentListitem createItem(Deployment deployment); -} + + /** + * Called right before the deployment, created in the UI, is deployed to the + * API. This allows to ad additional artifacts or alter deployment properties. + */ + void beforeDeploy(DeploymentBuilder deployment); +} \ No newline at end of file diff --git a/modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/management/deployment/DeploymentUploadReceiver.java b/modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/management/deployment/DeploymentUploadReceiver.java index 449701c280667fc5a5ac8fbe1d9656009d1276e9..b8492b95f5c23e57111560210481f83132cc159f 100644 --- a/modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/management/deployment/DeploymentUploadReceiver.java +++ b/modules/activiti-explorer/src/main/java/org/activiti/explorer/ui/management/deployment/DeploymentUploadReceiver.java @@ -76,21 +76,24 @@ public class DeploymentUploadReceiver implements Receiver, FinishedListener { protected void deployUploadedFile() { DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().name(fileName); + DeploymentFilter deploymentFilter = ExplorerApp.get().getComponentFactory(DeploymentFilterFactory.class).create(); try { try { if (fileName.endsWith(".bpmn20.xml") || fileName.endsWith(".bpmn")) { validFile = true; - deployment = deploymentBuilder - .addInputStream(fileName, new ByteArrayInputStream(outputStream.toByteArray())) - .deploy(); + deploymentBuilder.addInputStream(fileName, new ByteArrayInputStream(outputStream.toByteArray())); } else if (fileName.endsWith(".bar") || fileName.endsWith(".zip")) { validFile = true; - deployment = deploymentBuilder - .addZipInputStream(new ZipInputStream(new ByteArrayInputStream(outputStream.toByteArray()))) - .deploy(); + deploymentBuilder.addZipInputStream(new ZipInputStream(new ByteArrayInputStream(outputStream.toByteArray()))); } else { notificationManager.showErrorNotification(Messages.DEPLOYMENT_UPLOAD_INVALID_FILE, - i18nManager.getMessage(Messages.DEPLOYMENT_UPLOAD_INVALID_FILE_EXPLANATION)); + i18nManager.getMessage(Messages.DEPLOYMENT_UPLOAD_INVALID_FILE_EXPLANATION)); + } + + // If the deployment is valid, run it through the beforeDeploy and actually deploy it in Activiti + if(validFile) { + deploymentFilter.beforeDeploy(deploymentBuilder); + deployment = deploymentBuilder.deploy(); } } catch (ActivitiException e) { String errorMsg = e.getMessage().replace(System.getProperty("line.separator"), "
");