Search in sources :

Example 1 with DeploymentStatus

use of javax.enterprise.deploy.spi.status.DeploymentStatus in project Payara by payara.

the class ProgressObjectSink method reviseStatusAndMessage.

private void reviseStatusAndMessage(DeploymentStatus ds, DFDeploymentStatus newStageStatus) {
    String msgKey = null;
    Status stageStatus;
    if (ds.isCompleted()) {
        /*
             *The deployment status for this source was successful. 
             */
        msgKey = "enterprise.deployment.client.action_completed";
        stageStatus = Status.SUCCESS;
    } else {
        /*
             *The deployment status for this source failed.
             */
        msgKey = "enterprise.deployment.client.action_failed";
        stageStatus = Status.FAILURE;
    }
    String i18msg = localStrings.getLocalString(msgKey, ds.getMessage());
    newStageStatus.setStageStatus(stageStatus);
    newStageStatus.setStageStatusMessage(i18msg);
}
Also used : DFDeploymentStatus(org.glassfish.deployment.client.DFDeploymentStatus) DeploymentStatus(javax.enterprise.deploy.spi.status.DeploymentStatus) Status(org.glassfish.deployment.client.DFDeploymentStatus.Status)

Example 2 with DeploymentStatus

use of javax.enterprise.deploy.spi.status.DeploymentStatus in project Payara by payara.

the class ProgressObjectSink method handleProgressEvent.

/**
 * receives notification of a progress event from one of our
 * registered interface.
 */
public void handleProgressEvent(ProgressEvent progressEvent) {
    ProgressEvent forwardedEvent;
    DeploymentStatus forwardedDS = progressEvent.getDeploymentStatus();
    // we intercept all events...
    if (!forwardedDS.isRunning()) {
        // this mean we are either completed or failed...
        if (forwardedDS.isFailed()) {
            /*
                 *Once at least one operation fails, we know that the aggregate state will have
                 *to be failed.
                 */
            finalStateType = StateType.FAILED;
        }
        // since this is the completion event
        // we are done with that progress listener;
        Object source = progressEvent.getSource();
        if (source instanceof ProgressObject) {
            ProgressObject po = (ProgressObject) source;
            po.removeProgressListener(this);
            sources.remove(source);
            if (forwardedDS.isCompleted()) {
                TargetModuleID[] ids = po.getResultTargetModuleIDs();
                for (int i = 0; i < ids.length; i++) {
                    targetModuleIDs.add(ids[i]);
                }
            }
        } else {
            throw new RuntimeException(localStrings.getLocalString("enterprise.deployment.client.noprogressobject", "Progress event does not contain a ProgressObject source"));
        }
        /*
             *Update the completionStatus by adding a stage to it and recording the completion
             *of this event as the newest stage.
             */
        updateCompletedStatus(forwardedDS);
        // now we change our event state to running.  We always forward every event from a
        // source to the listeners with "running" status because the sink is not yet completely
        // finished.  We will also send a final aggregate completion event
        // if this is a completion event from our last source (see below).
        DeploymentStatusImpl forwardedStatus = new DeploymentStatusImpl();
        forwardedStatus.setState(StateType.RUNNING);
        forwardedStatus.setMessage(forwardedDS.getMessage());
        forwardedStatus.setCommand(forwardedDS.getCommand());
        forwardedEvent = new ProgressEvent(this, progressEvent.getTargetModuleID(), forwardedStatus);
    } else {
        // This is a "running" event from one of our sources, so we just need to swap the source...
        forwardedEvent = new ProgressEvent(this, progressEvent.getTargetModuleID(), forwardedDS);
    }
    // we need to fire the received event to our listeners
    Collection clone;
    ProgressEvent finalEvent = null;
    synchronized (registeredPL) {
        clone = (Collection) registeredPL.clone();
        deliveredEvents.add(forwardedEvent);
        /*
             *If we are done with all of our sources, let's wrap up by creating a final event that will
             *be broadcast to the listeners along with the forwarded event.  Also create the completed status
             *that meets the requirements of the JESProgressObject interface.
             */
        if (sources.isEmpty()) {
            prepareCompletedStatus();
            DeploymentStatusImpl status = new DeploymentStatusImpl();
            status.setState(finalStateType);
            if (finalStateType.equals(StateType.FAILED)) {
                status.setMessage(localStrings.getLocalString("enterprise.deployment.client.aggregatefailure", "At least one operation failed"));
            } else {
                status.setMessage(localStrings.getLocalString("enterprise.deployment.client.aggregatesuccess", "All operations completed successfully"));
            }
            finalEvent = new ProgressEvent(this, progressEvent.getTargetModuleID(), status);
            deliveredEvents.add(finalEvent);
        }
    }
    for (Iterator itr = clone.iterator(); itr.hasNext(); ) {
        ProgressListener pl = (ProgressListener) itr.next();
        pl.handleProgressEvent(forwardedEvent);
    }
    /*
         *Send the final event if there is one.
         */
    if (finalEvent != null) {
        for (Iterator itr = clone.iterator(); itr.hasNext(); ) {
            ProgressListener pl = (ProgressListener) itr.next();
            pl.handleProgressEvent(finalEvent);
        }
    }
}
Also used : ProgressListener(javax.enterprise.deploy.spi.status.ProgressListener) TargetModuleID(javax.enterprise.deploy.spi.TargetModuleID) Iterator(java.util.Iterator) Collection(java.util.Collection) DFProgressObject(org.glassfish.deployment.client.DFProgressObject) ProgressObject(javax.enterprise.deploy.spi.status.ProgressObject) ProgressEvent(javax.enterprise.deploy.spi.status.ProgressEvent) DFProgressObject(org.glassfish.deployment.client.DFProgressObject) ProgressObject(javax.enterprise.deploy.spi.status.ProgressObject) DFDeploymentStatus(org.glassfish.deployment.client.DFDeploymentStatus) DeploymentStatus(javax.enterprise.deploy.spi.status.DeploymentStatus)

Example 3 with DeploymentStatus

use of javax.enterprise.deploy.spi.status.DeploymentStatus in project Payara by payara.

the class SunDeploymentManager method prepareErrorProgressObject.

/**
 *Prepare a ProgressObject that reflects an error, with a related Throwable cause.
 *@param commandType being processed at the time of the error
 *@param throwable that occurred
 *@return ProgressObject set to FAILED with linked cause reporting full error info
 */
private ProgressObject prepareErrorProgressObject(CommandType commandType, Throwable thr) {
    DeploymentStatus ds = new DeploymentStatusImplWithError(CommandType.DISTRIBUTE, thr);
    SimpleProgressObjectImpl progressObj = new SimpleProgressObjectImpl(ds);
    ProgressEvent event = new ProgressEvent(progressObj, null, /*targetModuleID */
    ds);
    progressObj.fireProgressEvent(event);
    return progressObj;
}
Also used : ProgressEvent(javax.enterprise.deploy.spi.status.ProgressEvent) DeploymentStatus(javax.enterprise.deploy.spi.status.DeploymentStatus)

Aggregations

DeploymentStatus (javax.enterprise.deploy.spi.status.DeploymentStatus)3 ProgressEvent (javax.enterprise.deploy.spi.status.ProgressEvent)2 DFDeploymentStatus (org.glassfish.deployment.client.DFDeploymentStatus)2 Collection (java.util.Collection)1 Iterator (java.util.Iterator)1 TargetModuleID (javax.enterprise.deploy.spi.TargetModuleID)1 ProgressListener (javax.enterprise.deploy.spi.status.ProgressListener)1 ProgressObject (javax.enterprise.deploy.spi.status.ProgressObject)1 Status (org.glassfish.deployment.client.DFDeploymentStatus.Status)1 DFProgressObject (org.glassfish.deployment.client.DFProgressObject)1