Пример #1
0
 public void destroy() {
   TemplateMediator templateMediator =
       synapseEnv.getSynapseConfiguration().getSequenceTemplate(targetTemplate);
   if (templateMediator == null || templateMediator.isDynamic()) {
     synapseEnv.removeUnavailableArtifactRef(targetTemplate);
   }
 }
Пример #2
0
  public void init(SynapseEnvironment se) {
    synapseEnv = se;

    TemplateMediator templateMediator =
        se.getSynapseConfiguration().getSequenceTemplate(targetTemplate);
    if (templateMediator == null || templateMediator.isDynamic()) {
      // undefined or dynamic templates are treated as unavailable
      // in the environment.
      // At the time of their initialization, these will be marked as available.
      se.addUnavailableArtifactRef(targetTemplate);
    }
  }
Пример #3
0
  public boolean mediate(MessageContext synCtx, ContinuationState continuationState) {
    SynapseLog synLog = getLog(synCtx);

    if (synLog.isTraceOrDebugEnabled()) {
      synLog.traceOrDebug("Invoke mediator : Mediating from ContinuationState");
    }

    boolean result;
    int subBranch = ((ReliantContinuationState) continuationState).getSubBranch();

    if (subBranch == 0) {
      // Default flow
      TemplateMediator templateMediator =
          (TemplateMediator) synCtx.getSequenceTemplate(targetTemplate);

      if (!continuationState.hasChild()) {
        result = templateMediator.mediate(synCtx, continuationState.getPosition() + 1);
        if (result) {
          templateMediator.popFuncContextFrom(synCtx);
        }
      } else {
        FlowContinuableMediator mediator =
            (FlowContinuableMediator) templateMediator.getChild(continuationState.getPosition());
        result = mediator.mediate(synCtx, continuationState.getChildContState());
      }
    } else {
      // Pre fetching invoke mediator flow
      String prefetchInvokeKey = key.evaluateValue(synCtx);
      InvokeMediator prefetchInvoke =
          (InvokeMediator) synCtx.getDefaultConfiguration(prefetchInvokeKey);

      ContinuationState childContinuationState = continuationState.getChildContState();
      result = prefetchInvoke.mediate(synCtx, childContinuationState);

      if (result && !childContinuationState.hasChild()) {
        // Pre fetching invoke mediator flow completed.
        // Remove ContinuationState represent the prefetchInvoke mediator and
        // flip the subbranch to default flow
        continuationState.removeLeafChild();
        ((ReliantContinuationState) continuationState).setSubBranch(0);
        // after prefetch invoke mediator flow, execute default flow
        result = mediate(synCtx, false);
      }
    }
    return result;
  }