⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 correlationsetinstance.java

📁 jbpm-bpel-1.1.Beta3 JBoss jBPM Starters Kit  是一个综合包
💻 JAVA
字号:
/*
 * JBoss, Home of Professional Open Source
 * Copyright 2005, JBoss Inc., and individual contributors as indicated
 * by the @authors tag.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the JBPM BPEL PUBLIC LICENSE AGREEMENT as
 * published by JBoss Inc.; either version 1.0 of the License, or
 * (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 */
package org.jbpm.bpel.integration.exe;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.xml.namespace.QName;

import org.apache.commons.lang.builder.ToStringBuilder;

import org.jbpm.bpel.graph.exe.BpelFaultException;
import org.jbpm.bpel.integration.def.CorrelationSetDefinition;
import org.jbpm.bpel.variable.def.VariableType;
import org.jbpm.bpel.variable.exe.MessageValue;
import org.jbpm.bpel.wsdl.Property;
import org.jbpm.bpel.xml.BpelConstants;

/**
 * @author Alejandro Gu韟ar
 * @version $Revision: 1.4 $ $Date: 2006/09/27 03:53:01 $
 */
public class CorrelationSetInstance {

  long id;
  private CorrelationSetDefinition definition;
  private Map properties;

  private static final long serialVersionUID = 1L;

  public CorrelationSetInstance() {
  }

  public CorrelationSetDefinition getDefinition() {
    return definition;
  }

  public void setDefinition(CorrelationSetDefinition definition) {
    this.definition = definition;
  }

  public boolean isInitialized() {
    return properties != null && properties.size() > 0;
  }

  public void initialize(Map propertyValues) {
    checkNotInitialized();
    properties = new HashMap();
    Iterator propertyIter = definition.getProperties().iterator();
    while (propertyIter.hasNext()) {
      Property property = (Property) propertyIter.next();
      QName name = property.getQName();
      properties.put(name, propertyValues.get(name));
    }
  }

  public void initialize(MessageValue messageValue) {
    // make sure the correlation set is not initialized more than once
    checkNotInitialized();
    properties = new HashMap();
    // extract the property values
    VariableType messageType = messageValue.getType();
    Iterator propertyIter = definition.getProperties().iterator();
    while (propertyIter.hasNext()) {
      Property property = (Property) propertyIter.next();
      QName propertyName = property.getQName();
      Object propertyValue = messageType.getPropertyValue(propertyName,
          messageValue);
      properties.put(propertyName, propertyValue);
    }
  }

  public Object getProperty(QName propertyName) {
    checkInitialized();
    return properties.get(propertyName);
  }

  public Map getProperties() {
    checkInitialized();
    return properties;
  }

  public void validateConstraint(MessageValue messageValue) {
    checkInitialized();
    // compare the property values
    VariableType messageType = messageValue.getType();
    Iterator entryIt = properties.entrySet().iterator();
    while (entryIt.hasNext()) {
      Map.Entry nameValueEntry = (Map.Entry) entryIt.next();
      QName propertyName = (QName) nameValueEntry.getKey();
      Object propertyValue = nameValueEntry.getValue();
      // compare the value in the correlation set with the value in the message
      if (!propertyValue.equals(messageType.getPropertyValue(propertyName,
          messageValue))) {
        // property value mismatch
        throw new BpelFaultException(BpelConstants.FAULT_CORRELATION_VIOLATION);
      }
    }
  }

  private void checkInitialized() {
    if (!isInitialized()) {
      // correlation set not initiated
      throw new BpelFaultException(BpelConstants.FAULT_CORRELATION_VIOLATION);
    }
  }

  private void checkNotInitialized() {
    if (isInitialized()) {
      // correlation set already initiated
      throw new BpelFaultException(BpelConstants.FAULT_CORRELATION_VIOLATION);
    }
  }

  public String toString() {
    return new ToStringBuilder(this).append("name", definition.getName())
        .append("id", id)
        .toString();
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -