Search in sources :

Example 1 with CompilationException

use of org.apache.ode.bpel.compiler.api.CompilationException in project carbon-business-process by wso2.

the class TenantProcessStoreImpl method deployBPELPackageInODE.

/**
 * Deploy BPEL package in ODE and add process configuration objects to necessary maps in process
 * store.
 *
 * @param deploymentContext information about current deployment
 * @throws Exception in case of duplicate deployment unit or if error occurred during deploying package in ODE
 */
private void deployBPELPackageInODE(BPELDeploymentContext deploymentContext) throws Exception {
    File bpelPackage = deploymentContext.getBPELPackageContent();
    log.info("Starting deployment of processes from directory " + bpelPackage.getAbsolutePath());
    final Date deployDate = new Date();
    // Create the DU and compile/scan it before doing any other work.
    final DeploymentUnitDir deploymentUnitDir = new DeploymentUnitDir(bpelPackage);
    // Before coming to this stage, we create the bpel package directory with the static version
    // so we don't need to get the version from database. We can directly use static version
    // calculated from bpel package directory name.
    deploymentUnitDir.setVersion(deploymentUnitDir.getStaticVersion());
    try {
        deploymentUnitDir.compile();
    } catch (CompilationException ce) {
        String logMessage = "Deployment failed due to compilation issues. " + ce.getMessage();
        log.error(logMessage, ce);
        deploymentContext.setFailed(true);
        deploymentContext.setDeploymentFailureCause(logMessage);
        deploymentContext.setStackTrace(ce);
        handleDeploymentError(deploymentContext);
        throw new BPELDeploymentException(logMessage, ce);
    }
    deploymentUnitDir.scan();
    DeployDocument deployDocument = deploymentUnitDir.getDeploymentDescriptor();
    List<ProcessConfigurationImpl> processConfs = new ArrayList<ProcessConfigurationImpl>();
    List<QName> processIds = new ArrayList<QName>();
    if (deploymentUnits.containsKey(deploymentUnitDir.getName())) {
        String logMessage = "Aborting deployment. Duplicate Deployment unit " + deploymentUnitDir.getName() + ".";
        log.error(logMessage);
        deploymentContext.setFailed(true);
        deploymentContext.setDeploymentFailureCause(logMessage);
        handleDeploymentError(deploymentContext);
        throw new BPELDeploymentException(logMessage);
    }
    // Validate BPEL package partially before retiring old versions.
    validateBPELPackage(deploymentUnitDir);
    if (deploymentContext.isExistingPackage()) {
        reloadExistingVersionsOfBPELPackage(deploymentContext);
    }
    // Before updating a BPEL package we need to retire processes in old version
    retirePreviousPackageVersions(deploymentUnitDir);
    for (TDeployment.Process processDD : deployDocument.getDeploy().getProcessList()) {
        QName processId = Utils.toPid(processDD.getName(), deploymentUnitDir.getVersion());
        ProcessConfigurationImpl processConf = new ProcessConfigurationImpl(tenantId, processDD, deploymentUnitDir, deployDate, parentProcessStore.getEndpointReferenceContext(), tenantConfigContext);
        processConf.setAbsolutePathForBpelArchive(deploymentContext.getBpelArchive().getAbsolutePath());
        processIds.add(processId);
        processConfs.add(processConf);
        readAnalyticsServerProfiles(processDD, deploymentUnitDir);
    }
    deploymentUnits.put(deploymentUnitDir.getName(), deploymentUnitDir);
    processesInDeploymentUnit.put(deploymentUnitDir.getName(), processIds);
    for (ProcessConfigurationImpl processConf : processConfs) {
        processConfigMap.put(processConf.getProcessId(), processConf);
        deploymentContext.addProcessId(processConf.getProcessId());
    }
    try {
        parentProcessStore.onBPELPackageDeployment(tenantId, deploymentUnitDir.getName(), BPELPackageRepositoryUtils.getResourcePathForBPELPackageContent(deploymentContext), processConfs);
    } catch (ContextException ce) {
        deploymentContext.setDeploymentFailureCause("BPEL Package deployment failed at " + "ODE layer. Possible cause: " + ce.getMessage());
        deploymentContext.setStackTrace(ce);
        deploymentContext.setFailed(true);
        handleDeploymentError(deploymentContext);
        throw ce;
    }
}
Also used : CompilationException(org.apache.ode.bpel.compiler.api.CompilationException) QName(javax.xml.namespace.QName) ArrayList(java.util.ArrayList) DeploymentUnitDir(org.apache.ode.store.DeploymentUnitDir) Date(java.util.Date) TDeployment(org.apache.ode.bpel.dd.TDeployment) ContextException(org.apache.ode.bpel.iapi.ContextException) DeployDocument(org.apache.ode.bpel.dd.DeployDocument) File(java.io.File)

Aggregations

File (java.io.File)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 QName (javax.xml.namespace.QName)1 CompilationException (org.apache.ode.bpel.compiler.api.CompilationException)1 DeployDocument (org.apache.ode.bpel.dd.DeployDocument)1 TDeployment (org.apache.ode.bpel.dd.TDeployment)1 ContextException (org.apache.ode.bpel.iapi.ContextException)1 DeploymentUnitDir (org.apache.ode.store.DeploymentUnitDir)1