You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2006/05/01 23:38:03 UTC

svn commit: r398694 [6/9] - in /incubator/ode/trunk: ./ bpel-bom/ bpel-bom/src/ bpel-bom/src/main/ bpel-bom/src/main/java/ bpel-bom/src/main/java/org/ bpel-bom/src/main/java/org/apache/ bpel-bom/src/main/java/org/apache/ode/ bpel-bom/src/main/java/org/...

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11PartnerState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11PartnerState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11PartnerState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11PartnerState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,52 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import org.apache.ode.sax.fsa.*;
+import org.apache.ode.sax.evt.StartElement;
+
+class Bpel11PartnerState extends BaseBpelState {
+
+  private static final StateFactory _factory = new Factory();
+  
+  private Bpel11PartnerState(StartElement se, ParseContext pc) throws ParseException {
+    super(pc);
+    pc.parseError(ParseError.WARNING,se,
+        "PARSER_WARNING","The <partner> element is ignored and should be omitted.");
+    // TODO: Get real error key.
+  }
+  
+  public void handleChildCompleted(State pn) throws ParseException {
+    switch (pn.getType()) {
+    case BPEL11_PARTNERLINK:
+      break;
+    default:
+      super.handleChildCompleted(pn);
+    }
+  }  
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_PARTNER;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11PartnerState(se,pc);
+    }
+  }
+
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11PartnersState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11PartnersState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11PartnersState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11PartnersState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,60 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import java.util.Collections;
+import java.util.Iterator;
+
+import org.apache.ode.sax.fsa.*;
+import org.apache.ode.sax.evt.StartElement;
+
+class Bpel11PartnersState extends BaseBpelState {
+
+  private static final StateFactory _factory = new Factory();
+   
+  private Bpel11PartnersState(StartElement se, ParseContext pc) throws ParseException {
+    super(pc);
+    pc.parseError(ParseError.WARNING,se,
+        "PARSER_WARNING","The <partners> element is ignored and should be omitted.");
+    // TODO: Internationalize
+  }
+
+  public Iterator getPartners() {
+    return Collections.emptyList().iterator();
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#handleChildCompleted(org.apache.ode.sax.fsa.State)
+   */
+  public void handleChildCompleted(State pn) throws ParseException {
+    if (pn.getType() == BPEL11_PARTNER) {
+      // ignore
+    } else {
+      super.handleChildCompleted(pn);
+    }
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_PARTNERS;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11PartnersState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11PickActivityState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11PickActivityState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11PickActivityState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11PickActivityState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,67 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import org.apache.ode.bom.api.Activity;
+import org.apache.ode.bom.impl.nodes.PickActivityImpl;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.fsa.ParseException;
+import org.apache.ode.sax.fsa.State;
+import org.apache.ode.sax.fsa.StateFactory;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+
+class Bpel11PickActivityState extends Bpel11BaseActivityState {
+
+  private static final StateFactory _factory = new Factory();
+
+  Bpel11PickActivityState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+  }
+  
+  protected Activity createActivity(StartElement se) throws ParseException {
+    PickActivityImpl pai = new PickActivityImpl();
+    XmlAttributes atts = se.getAttributes();
+    if (atts.hasAtt("createInstance")) {
+      pai.setCreateInstance(checkYesNo(atts.getValue("createInstance")));
+    }
+    return pai;
+  }
+  
+  public void handleChildCompleted(State pn) throws ParseException {
+    if (pn.getType() == BPEL11_ONMESSAGE) {
+      ((PickActivityImpl)getActivity()).addOnMessage(
+          ((Bpel11OnMessageState)pn).getOnEventHandler());
+    } else if (pn.getType() == BPEL11_ONALARM) {
+      ((PickActivityImpl)getActivity()).addOnAlarm(
+          ((Bpel11OnAlarmState)pn).getOnAlarmHandler());      
+    } else {
+      super.handleChildCompleted(pn);
+    }
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_PICK;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11PickActivityState(se,pc);
+    }
+  }
+ 
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ProcessState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ProcessState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ProcessState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ProcessState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,143 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import java.util.Iterator;
+
+import org.apache.ode.bom.api.*;
+import org.apache.ode.bom.api.Process;
+import org.apache.ode.bom.impl.nodes.ProcessImpl;
+import org.apache.ode.bpel.parser.BpelProcessState;
+import org.apache.ode.sax.fsa.*;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+import org.apache.ode.sax.evt.attspec.FilterSpec;
+import org.apache.ode.sax.evt.attspec.XmlAttributeSpec;
+
+class Bpel11ProcessState extends BaseBpelState implements BpelProcessState {
+
+  private static final StateFactory _factory = new Factory();
+    
+  // TODO still required?
+  private static final XmlAttributeSpec spec = new FilterSpec(
+        new String[] {"name","targetNamespace"},
+        new String[] {"queryLanguage","expressionLanguage","suppressJoinFailure",
+            "enableInstanceCompensation","abstractProcess"}
+      );
+  
+  private Process _process;
+  
+  Bpel11ProcessState(StartElement se, ParseContext pc) throws ParseException {
+    super(pc);
+    XmlAttributes atts = se.getAttributes();
+    String name = atts.getValue("name");
+    String tns = atts.getValue("targetNamespace");
+    // TODO still required?
+    short suppressJoinFailure;
+    
+    _process = new ProcessImpl();
+    if (se.getLocation() != null) {
+      _process.setSource(se.getLocation().getSystemId());
+    }
+
+    _process.setBpelVersion(Process.BPEL_V110);
+    _process.setNamespaceContext(se.getNamespaceContext());
+    _process.setName(name);
+    _process.setTargetNamespace(tns);
+    _process.setSuppressJoinFailure(getSuppressJoinFailure(atts));
+    if (atts.hasAtt("queryLanguage")) {
+      _process.setQueryLanguage(atts.getValue("queryLanguage"));
+    }
+    if (atts.hasAtt("expressionLanguage")) {
+      _process.setExpressionLanguage(atts.getValue("expressionLanguage"));
+    }
+    /*
+     * NOTE: Xerces automatically fills in the default value of the attribute for us,
+     * in this case "no" for enableInstanceCompensation and abstractProcess.  Thus,
+     * we can't warn if it's present because we don't know if the user or the parser
+     * put it in...
+     */
+    if (atts.hasAtt("enableInstanceCompensation") && checkYesNo(atts.getValue("enableInstanceCompensation"))) {
+      pc.parseError(ParseError.WARNING,se,
+          "PARSER_WARNING","Instance compensation is not well-defined; it will not be used at runtime.");
+    }
+    if (atts.hasAtt("abstractProcess") && checkYesNo(atts.getValue("abstractProcess"))) {
+      pc.parseError(ParseError.FATAL,se,
+          "PARSER_FATAL","PXE does not support the parsing or compilation of abstract processes.");
+      // TODO: Internationalize.
+    }
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#handleChildCompleted(org.apache.ode.sax.fsa.State)
+   */
+  public void handleChildCompleted(State pn) throws ParseException {
+    switch (pn.getType()) {
+    case BPEL11_PARTNERLINKS:
+      for (Iterator it = ((Bpel11PartnerLinksState)pn).getPartnerLinks();it.hasNext();) {
+        _process.addPartnerLink((PartnerLink)it.next());
+      }
+      break;
+    case BPEL11_PARTNERS:
+      throw new IllegalStateException("" + BPEL11_PARTNERS);
+    case BPEL11_VARIABLES:
+      for (Iterator it = ((Bpel11VariablesState)pn).getVariables();it.hasNext();) {
+        _process.addVariable((Variable)it.next());
+      }
+      break;
+    case BPEL11_CORRELATIONSETS:
+      for (Iterator it = ((Bpel11CorrelationSetsState)pn).getCorrelationSets();it.hasNext();) {
+        _process.addCorrelationSet((CorrelationSet)it.next());
+      }
+      break;
+    case BPEL11_FAULTHANDLERS:
+      _process.setFaultHandler(((Bpel11FaultHandlersState)pn).getFaultHandler());
+      break;
+    case BPEL11_COMPENSATIONHANDLER:
+      _process.setCompensationHandler(((Bpel11CompensationHandlerState)pn).getCompensationHandler());
+      break;
+    case BPEL11_EVENTHANDLERS:
+      for (Iterator<OnEvent> it = ((Bpel11EventHandlersState)pn).getOnEventHandlers();it.hasNext();) {
+        _process.addOnEventHandler(it.next());
+      }
+      for (Iterator<OnAlarm> it = ((Bpel11EventHandlersState)pn).getOnAlarmHandlers();it.hasNext();) {
+        _process.addOnAlarmEventHandler(it.next());
+      }      
+      break;
+    default:
+      if (pn instanceof ActivityStateI) {
+        _process.setRootActivity(((ActivityStateI)pn).getActivity()); 
+      } else {
+        super.handleChildCompleted(pn);
+      }
+    }
+  }
+
+  public Process getProcess() {
+    return _process;
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_PROCESS;
+  }
+  
+  public static class Factory implements StateFactory {
+
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11ProcessState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11QName.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11QName.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11QName.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11QName.java Mon May  1 14:37:44 2006
@@ -0,0 +1,18 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.parser.BpelProcessBuilder;
+
+class Bpel11QName extends QName {
+
+  public Bpel11QName(String local) {
+    super(BpelProcessBuilder.BPEL4WS_NS,local);
+  }
+
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11QNames.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11QNames.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11QNames.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11QNames.java Mon May  1 14:37:44 2006
@@ -0,0 +1,68 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import javax.xml.namespace.QName;
+
+public interface Bpel11QNames {
+  
+  public static final QName PROCESS = new Bpel11QName("process");
+  
+  public static final QName SOURCE = new Bpel11QName("source");
+  public static final QName TARGET = new Bpel11QName("target");
+  
+  public static final QName PARTNERLINKS = new Bpel11QName("partnerLinks");
+  public static final QName PARTNERLINK = new Bpel11QName("partnerLink");
+  
+  public static final QName PARTNERS = new Bpel11QName("partners");
+  public static final QName PARTNER = new Bpel11QName("partner");
+  
+  public static final QName VARIABLES = new Bpel11QName("variables");
+  public static final QName VARIABLE = new Bpel11QName("variable");
+  
+  public static final QName CORRELATIONSETS = new Bpel11QName("correlationSets");
+  public static final QName CORRELATIONSET = new Bpel11QName("correlationSet");
+  
+  public static final QName FAULTHANDLERS = new Bpel11QName("faultHandlers");
+  public static final QName CATCH = new Bpel11QName("catch");
+  public static final QName CATCHALL = new Bpel11QName("catchAll");
+  
+  public static final QName COMPENSATIONHANDLER = new Bpel11QName("compensationHandler");
+  
+  public static final QName COMPENSATE = new Bpel11QName("compensate");
+  
+  public static final QName EVENTHANDLERS = new Bpel11QName("eventHandlers");
+  public static final QName ONMESSAGE = new Bpel11QName("onMessage");
+  public static final QName ONALARM = new Bpel11QName("onAlarm");
+  
+  public static final QName CORRELATIONS = new Bpel11QName("correlations");
+  public static final QName CORRELATION = new Bpel11QName("correlation");
+  
+  public static final QName EMPTY = new Bpel11QName("empty");
+  public static final QName INVOKE = new Bpel11QName("invoke");
+  public static final QName RECEIVE = new Bpel11QName("receive");
+  public static final QName REPLY = new Bpel11QName("reply");
+  public static final QName ASSIGN = new Bpel11QName("assign");
+  public static final QName COPY = new Bpel11QName("copy");
+  public static final QName FROM = new Bpel11QName("from");
+  public static final QName TO = new Bpel11QName("to");
+  public static final QName WAIT = new Bpel11QName("wait");
+  public static final QName THROW = new Bpel11QName("throw");
+  public static final QName TERMINATE = new Bpel11QName("terminate");
+  
+  public static final QName FLOW = new Bpel11QName("flow");
+  public static final QName LINKS = new Bpel11QName("links");
+  public static final QName LINK = new Bpel11QName("link");
+  
+  public static final QName SWITCH = new Bpel11QName("switch");
+  public static final QName CASE = new Bpel11QName("case");
+  public static final QName OTHERWISE = new Bpel11QName("otherwise");
+  
+  public static final QName WHILE = new Bpel11QName("while");
+  public static final QName SEQUENCE = new Bpel11QName("sequence");
+  public static final QName PICK = new Bpel11QName("pick");
+  public static final QName SCOPE = new Bpel11QName("scope");
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ReceiveActivityState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ReceiveActivityState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ReceiveActivityState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ReceiveActivityState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,77 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import java.util.Iterator;
+
+import org.apache.ode.bom.api.Activity;
+import org.apache.ode.bom.api.Correlation;
+import org.apache.ode.bom.api.ReceiveActivity;
+import org.apache.ode.bom.impl.nodes.ReceiveActivityImpl;
+import org.apache.ode.sax.fsa.*;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+
+class Bpel11ReceiveActivityState extends Bpel11BaseActivityState {
+
+  private static final StateFactory _factory = new Factory();
+
+  Bpel11ReceiveActivityState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+  }
+  
+  protected Activity createActivity(StartElement se) {
+    ReceiveActivityImpl rai = new ReceiveActivityImpl();
+    XmlAttributes atts = se.getAttributes();
+    if (atts.hasAtt("portType")) {
+      rai.setPortType(se.getNamespaceContext().derefQName(atts.getValue("portType")));
+    }
+    rai.setPartnerLink(atts.getValue("partnerLink"));
+    rai.setOperation(atts.getValue("operation"));
+    rai.setVariable(atts.getValue("variable"));
+    if (atts.hasAtt("createInstance")) {
+      rai.setCreateInstance(checkYesNo(atts.getValue("createInstance")));
+    }
+    return rai;
+  }
+  
+  public void handleChildCompleted(State pn) throws ParseException {
+    if (pn.getType() == BPEL11_CORRELATIONS) {
+      for (Iterator it = ((Bpel11CorrelationsState)pn).getCorrelations();it.hasNext();) {
+        Correlation c = (Correlation)it.next();
+        if (c.getPattern() != Correlation.CORRPATTERN_IN) {
+          getParseContext().parseError(ParseError.WARNING,
+              c,"PARSER_WARNING","Only the \"in\" pattern makes sense for a correlation on an onMessage.");
+          // TODO: Get an error key here.
+        }
+        c.setPattern(Correlation.CORRPATTERN_IN);
+        ((ReceiveActivity)getActivity()).addCorrelation(c);
+      }
+    } else {
+      super.handleChildCompleted(pn);
+    }
+  }
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_RECEIVE;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11ReceiveActivityState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ReplyActivityState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ReplyActivityState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ReplyActivityState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ReplyActivityState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,79 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import java.util.Iterator;
+
+import org.apache.ode.bom.api.Activity;
+import org.apache.ode.bom.api.Correlation;
+import org.apache.ode.bom.api.ReplyActivity;
+import org.apache.ode.bom.impl.nodes.ReplyActivityImpl;
+import org.apache.ode.sax.fsa.*;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+
+class Bpel11ReplyActivityState extends Bpel11BaseActivityState {
+
+  private static final StateFactory _factory = new Factory();
+
+  Bpel11ReplyActivityState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+  }
+  
+  protected Activity createActivity(StartElement se) {
+    ReplyActivityImpl rai = new ReplyActivityImpl();
+    XmlAttributes atts = se.getAttributes();
+    if (atts.hasAtt("portType")) {
+      rai.setPortType(se.getNamespaceContext().derefQName(atts.getValue("portType")));
+    }
+    rai.setPartnerLink(atts.getValue("partnerLink"));
+    rai.setOperation(atts.getValue("operation"));
+    rai.setVariable(atts.getValue("variable"));
+    if (atts.hasAtt("faultName")) {
+      rai.setFaultName(se.getNamespaceContext().derefQName(atts.getValue("faultName")));
+    }
+    return rai;
+  }
+  
+  public void handleChildCompleted(State pn) throws ParseException {
+    if (pn.getType() == BPEL11_CORRELATIONS) {
+      for (Iterator it = ((Bpel11CorrelationsState)pn).getCorrelations();it.hasNext();) {
+        Correlation c = (Correlation)it.next();
+        if (c.getPattern() != Correlation.CORRPATTERN_OUT) {
+          getParseContext().parseError(ParseError.WARNING,c,
+              "PARSER_WARNING",
+              "The \"out\" correlation pattern is the only one that makes sense for <reply>.");
+          // TODO: Internationalize.
+        }
+        // force pattern OUT
+        c.setPattern(Correlation.CORRPATTERN_OUT);
+        ((ReplyActivity)getActivity()).addCorrelation(c);
+      }
+    } else {
+      super.handleChildCompleted(pn);
+    }
+  }
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_REPLY;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11ReplyActivityState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ScopeState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ScopeState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ScopeState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ScopeState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,97 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import java.util.Iterator;
+
+import org.apache.ode.bom.api.*;
+import org.apache.ode.bom.impl.nodes.ScopeActivityImpl;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.fsa.ParseException;
+import org.apache.ode.sax.fsa.State;
+import org.apache.ode.sax.fsa.StateFactory;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+
+class Bpel11ScopeState extends Bpel11BaseActivityState {
+
+  private static final StateFactory _factory = new Factory();
+  
+  Bpel11ScopeState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+  }
+
+  protected Activity createActivity(StartElement se) {
+    ScopeActivityImpl sai = new ScopeActivityImpl();
+    XmlAttributes atts = se.getAttributes();
+    if (atts.hasAtt("variableAccessSerializable")) {
+      sai.setVariableAccessSerialized(
+          checkYesNo(atts.getValue("variableAccessSerializable")));
+    }
+    return sai;
+  }  
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#handleChildCompleted(org.apache.ode.sax.fsa.State)
+   */
+  public void handleChildCompleted(State pn) throws ParseException {
+    ScopeActivityImpl scope = (ScopeActivityImpl)getActivity();
+    switch (pn.getType()) {
+    case BPEL11_VARIABLES:
+      for (Iterator it = ((Bpel11VariablesState)pn).getVariables();it.hasNext();) {
+        scope.addVariable((Variable)it.next());
+      }
+      break;
+    case BPEL11_CORRELATIONSETS:
+      for (Iterator it = ((Bpel11CorrelationSetsState)pn).getCorrelationSets();it.hasNext();) {
+        scope.addCorrelationSet((CorrelationSet)it.next());
+      }
+      break;
+    case BPEL11_FAULTHANDLERS:
+      scope.setFaultHandler(((Bpel11FaultHandlersState)pn).getFaultHandler());
+      break;
+    case BPEL11_COMPENSATIONHANDLER:
+      scope.setCompensationHandler(((Bpel11CompensationHandlerState)pn).getCompensationHandler());
+      break;
+    case BPEL11_EVENTHANDLERS:
+      for (Iterator<OnEvent> it = ((Bpel11EventHandlersState)pn).getOnEventHandlers();it.hasNext();) {
+        scope.addOnEventHandler(it.next());
+      }
+      for (Iterator<OnAlarm> it = ((Bpel11EventHandlersState)pn).getOnAlarmHandlers();it.hasNext();) {
+        scope.addOnAlarmEventHandler(it.next());
+      }      
+      break;
+    default:
+      if (pn instanceof ActivityStateI) {
+        scope.setChildActivity(((ActivityStateI)pn).getActivity()); 
+      } else {
+        super.handleChildCompleted(pn);
+      }
+    }
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_SCOPE;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11ScopeState(se,pc);
+    }
+  }
+
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11SequenceActivityState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11SequenceActivityState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11SequenceActivityState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11SequenceActivityState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,58 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import org.apache.ode.bom.api.Activity;
+import org.apache.ode.bom.impl.nodes.SequenceActivityImpl;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.fsa.ParseException;
+import org.apache.ode.sax.fsa.State;
+import org.apache.ode.sax.fsa.StateFactory;
+import org.apache.ode.sax.evt.StartElement;
+
+class Bpel11SequenceActivityState extends Bpel11BaseActivityState {
+
+  private static final StateFactory _factory = new Factory();
+
+  Bpel11SequenceActivityState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+  }
+  
+  protected Activity createActivity(StartElement se) {
+    return new SequenceActivityImpl();
+  }
+  
+  
+  public void handleChildCompleted(State pn) throws ParseException {
+    if (pn instanceof ActivityStateI) {
+      ((SequenceActivityImpl)getActivity()).addChild(((ActivityStateI)pn).getActivity());
+    } else {
+      super.handleChildCompleted(pn);
+    }
+  }  
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_SEQUENCE;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11SequenceActivityState(se, pc);
+    }
+  }
+
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11SwitchActivityState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11SwitchActivityState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11SwitchActivityState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11SwitchActivityState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,60 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import org.apache.ode.bom.api.Activity;
+import org.apache.ode.bom.impl.nodes.SwitchActivityImpl;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.fsa.ParseException;
+import org.apache.ode.sax.fsa.State;
+import org.apache.ode.sax.fsa.StateFactory;
+import org.apache.ode.sax.evt.StartElement;
+
+class Bpel11SwitchActivityState extends Bpel11BaseActivityState {
+
+  private static final StateFactory _factory = new Factory();
+
+  Bpel11SwitchActivityState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+  }
+  
+  protected Activity createActivity(StartElement se) {
+    return new SwitchActivityImpl();
+  }
+  
+  public void handleChildCompleted(State pn) throws ParseException {
+    if (pn.getType() == BPEL11_CASE) {
+      Bpel11CaseState c = (Bpel11CaseState)pn;
+      ((SwitchActivityImpl)getActivity()).addCase(c.getExpression(),c.getActivity());
+    } else if (pn.getType() == BPEL11_OTHERWISE){
+      ((SwitchActivityImpl)getActivity()).addCase(
+          null,((Bpel11OtherwiseState)pn).getActivity());      
+    } else {
+      super.handleChildCompleted(pn);
+    }
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_SWITCH;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11SwitchActivityState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11TerminateActivityState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11TerminateActivityState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11TerminateActivityState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11TerminateActivityState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,48 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import org.apache.ode.bom.api.Activity;
+import org.apache.ode.bom.impl.nodes.TerminateActivityImpl;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.fsa.ParseException;
+import org.apache.ode.sax.fsa.State;
+import org.apache.ode.sax.fsa.StateFactory;
+import org.apache.ode.sax.evt.StartElement;
+
+class Bpel11TerminateActivityState extends Bpel11BaseActivityState {
+
+  private static final StateFactory _factory = new Factory();
+
+  Bpel11TerminateActivityState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+  }
+  
+  protected Activity createActivity(StartElement se) {
+    return new TerminateActivityImpl();
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_TERMINATE;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11TerminateActivityState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ThrowActivityState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ThrowActivityState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ThrowActivityState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ThrowActivityState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,55 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import org.apache.ode.bom.api.Activity;
+import org.apache.ode.bom.impl.nodes.ThrowActivityimpl;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.fsa.ParseException;
+import org.apache.ode.sax.fsa.State;
+import org.apache.ode.sax.fsa.StateFactory;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+
+class Bpel11ThrowActivityState extends Bpel11BaseActivityState {
+
+  private static final StateFactory _factory = new Factory();
+
+  Bpel11ThrowActivityState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+  }
+  
+  protected Activity createActivity(StartElement se) {
+    ThrowActivityimpl tai = new ThrowActivityimpl();
+    XmlAttributes atts = se.getAttributes();
+    tai.setFaultName(se.getNamespaceContext().derefQName(atts.getValue("faultName")));
+    if (atts.hasAtt("faultVariable")) {
+      tai.setFaultVariable(atts.getValue("faultVariable"));
+    }
+    return tai;
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_THROW;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11ThrowActivityState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ToState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ToState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ToState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11ToState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,94 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import org.apache.ode.bom.api.To;
+import org.apache.ode.bom.impl.nodes.ExpressionImpl;
+import org.apache.ode.bom.impl.nodes.PropertyValImpl;
+import org.apache.ode.bom.impl.nodes.VariableValImpl;
+import org.apache.ode.bom.impl.nodes.PartnerLinkValImpl;
+import org.apache.ode.sax.fsa.*;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+import org.apache.ode.sax.evt.attspec.FilterSpec;
+import org.apache.ode.sax.evt.attspec.XmlAttributeSpec;
+
+class Bpel11ToState extends BaseBpelState {
+
+  private static final StateFactory _factory = new Factory();
+  private To _t;
+  
+  private XmlAttributeSpec VAR = new FilterSpec(
+      new String[] {"variable"},new String[] {"part","query"});
+  private XmlAttributeSpec PLINK = new FilterSpec(
+      new String[] {"partnerLink"},new String[] {});
+  private XmlAttributeSpec VAR_PROP = new FilterSpec(
+      new String[] {"variable","property"},new String[] {});
+
+  
+  Bpel11ToState(StartElement se, ParseContext pc) throws ParseException {
+    super(pc);
+    XmlAttributes atts = se.getAttributes();
+    if (VAR.matches(atts)) {
+      VariableValImpl vvi = new VariableValImpl();
+      vvi.setNamespaceContext(se.getNamespaceContext());
+      vvi.setLineNo(se.getLocation().getLineNumber());
+      vvi.setVariable(atts.getValue("variable"));
+      if(atts.hasAtt("part")){
+        vvi.setPart(atts.getValue("part"));
+      }
+      if(atts.hasAtt("query")){
+        ExpressionImpl expr = new ExpressionImpl();
+        expr.setXPathString(atts.getValue("query"));
+        expr.setLineNo(se.getLocation().getLineNumber());
+        expr.setNamespaceContext(se.getNamespaceContext());
+        vvi.setLocation(expr);
+      }
+      _t = vvi;
+    } else if (VAR_PROP.matches(atts)) {
+      PropertyValImpl pvi = new PropertyValImpl(se.getNamespaceContext());
+      pvi.setLineNo(se.getLocation().getLineNumber());
+      pvi.setVariable(atts.getValue("variable"));
+      pvi.setProperty(se.getNamespaceContext().derefQName(atts.getValue("property")));
+      _t = pvi;
+    } else if (PLINK.matches(atts)) {
+      PartnerLinkValImpl pvi = new PartnerLinkValImpl();
+      pvi.setLineNo(se.getLocation().getLineNumber());
+      pvi.setPartnerLink(atts.getValue("partnerLink"));
+      _t = pvi;
+    } else {
+      pc.parseError(ParseError.ERROR,se,"PARSER_ERROR",
+          "Unsupported attribute combination " + atts.toString());
+      // TODO: Get real error key here.
+    }
+  }
+  
+  
+  public To getTo() {
+    return _t;
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_TO;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11ToState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11VariableState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11VariableState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11VariableState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11VariableState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,79 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import org.apache.ode.bom.api.Variable;
+import org.apache.ode.bom.impl.nodes.VariableImpl;
+import org.apache.ode.sax.fsa.*;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+import org.apache.ode.sax.evt.attspec.FilterSpec;
+import org.apache.ode.sax.evt.attspec.OrSpec;
+import org.apache.ode.sax.evt.attspec.XmlAttributeSpec;
+
+class Bpel11VariableState extends BaseBpelState {
+
+  private static final StateFactory _factory = new Factory();
+  private VariableImpl _v;
+  
+  private static final XmlAttributeSpec MESSAGETYPE = new FilterSpec(
+      new String[] {"name","messageType"},
+      new String[] {});
+  private static final XmlAttributeSpec ELEMENTTYPE = new FilterSpec(
+      new String[] {"name","element"},
+      new String[] {});
+  private static final XmlAttributeSpec TYPE = new FilterSpec(
+      new String[] {"name","type"},
+      new String[] {});
+
+  private static final XmlAttributeSpec VALID = new OrSpec(MESSAGETYPE,
+      new OrSpec(TYPE,ELEMENTTYPE));
+  
+  Bpel11VariableState(StartElement se, ParseContext pc) throws ParseException {
+    super(pc);
+    XmlAttributes atts = se.getAttributes();
+    if (!VALID.matches(atts)){
+      pc.parseError(ParseError.ERROR,se,"PARSER_ERROR",
+          "Invalid attributes " + atts.toString() + " for <variable>");
+    }
+    _v = new VariableImpl();
+    _v.setNamespaceContext(se.getNamespaceContext());
+    _v.setLineNo(se.getLocation().getLineNumber());
+    _v.setName(atts.getValue("name"));
+    if (MESSAGETYPE.matches(atts)) {
+      _v.setMessageType(se.getNamespaceContext().derefQName(atts.getValue("messageType")));
+    } else if (TYPE.matches(atts)) {
+      _v.setSchemaType(se.getNamespaceContext().derefQName(atts.getValue("type")));
+    } else if (ELEMENTTYPE.matches(atts)) {
+      _v.setElementType(se.getNamespaceContext().derefQName(atts.getValue("element")));
+    }
+  }
+  
+  public Variable getVariable() {
+    return _v;
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_VARIABLE;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11VariableState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11VariablesState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11VariablesState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11VariablesState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11VariablesState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,63 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.ode.bom.api.Variable;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.fsa.ParseException;
+import org.apache.ode.sax.fsa.State;
+import org.apache.ode.sax.fsa.StateFactory;
+import org.apache.ode.sax.evt.StartElement;
+
+class Bpel11VariablesState extends BaseBpelState {
+
+  private static final StateFactory _factory = new Factory();
+  private List<Variable> _vars = new ArrayList<Variable>();
+
+  private Bpel11VariablesState(StartElement se, ParseContext pc) throws ParseException {
+    super(pc);
+  }
+
+  public Iterator<Variable> getVariables() {
+    return _vars.iterator();
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#handleChildCompleted(org.apache.ode.sax.fsa.State)
+   */
+  public void handleChildCompleted(State pn) throws ParseException {
+    if (pn.getType() == BPEL11_VARIABLE) {
+      _vars.add(((Bpel11VariableState)pn).getVariable());
+    } else {
+      super.handleChildCompleted(pn);
+    }
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_VARIABLES;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11VariablesState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11WaitActivityState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11WaitActivityState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11WaitActivityState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11WaitActivityState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,73 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import org.apache.ode.bom.api.Activity;
+import org.apache.ode.bom.impl.nodes.ExpressionImpl;
+import org.apache.ode.bom.impl.nodes.WaitActivityImpl;
+import org.apache.ode.sax.fsa.*;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+import org.apache.ode.sax.evt.attspec.FilterSpec;
+import org.apache.ode.sax.evt.attspec.OrSpec;
+import org.apache.ode.sax.evt.attspec.XmlAttributeSpec;
+
+class Bpel11WaitActivityState extends Bpel11BaseActivityState {
+
+  private static final XmlAttributeSpec FOR = new FilterSpec(
+      new String[] {"for"},BPEL11_BASE_ACTIVITY_ATTS); 
+  private static final XmlAttributeSpec UNTIL = new FilterSpec(
+      new String[] {"until"},BPEL11_BASE_ACTIVITY_ATTS);
+  // TODO still required?
+  private static final XmlAttributeSpec ALARMSPEC = new OrSpec(FOR,UNTIL);
+  
+  private static final StateFactory _factory = new Factory();
+  
+  Bpel11WaitActivityState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+  }
+  
+  protected Activity createActivity(StartElement se) throws ParseException {
+    WaitActivityImpl wai = new WaitActivityImpl();
+    XmlAttributes atts = se.getAttributes();
+    ExpressionImpl expr = new ExpressionImpl();
+    expr.setNamespaceContext(se.getNamespaceContext());
+    expr.setLineNo(se.getLocation().getLineNumber());
+    
+    if (FOR.matches(atts)) {
+      expr.setXPathString(atts.getValue("for"));
+      wai.setFor(expr);
+    } else if (UNTIL.matches(atts)) {
+      expr.setXPathString(atts.getValue("until"));
+      wai.setUntil(expr);
+    }  else {
+      getParseContext().parseError(ParseError.ERROR,se,"PARSER_ERROR",
+          "Invalid attribute combination for wait; expected @for=\"<duration>\" or @until=\"<datetime>\""); // TODO: Error key.
+    }
+    return wai;
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_WAIT;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11WaitActivityState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11WhileActivityState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11WhileActivityState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11WhileActivityState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/Bpel11WhileActivityState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,68 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import org.apache.ode.bom.api.Activity;
+import org.apache.ode.bom.impl.nodes.ExpressionImpl;
+import org.apache.ode.bom.impl.nodes.WhileActivityImpl;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.fsa.ParseException;
+import org.apache.ode.sax.fsa.State;
+import org.apache.ode.sax.fsa.StateFactory;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+
+class Bpel11WhileActivityState extends Bpel11BaseActivityState {
+
+  private static final StateFactory _factory = new Factory();
+
+  Bpel11WhileActivityState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+  }
+  
+  protected Activity createActivity(StartElement se) {
+    WhileActivityImpl wai = new WhileActivityImpl();
+    XmlAttributes atts = se.getAttributes();
+    if (atts.hasAtt("condition")) {
+      ExpressionImpl expr = new ExpressionImpl();
+      expr.setNamespaceContext(se.getNamespaceContext());
+      expr.setLineNo(se.getLocation().getLineNumber());
+      expr.setXPathString(atts.getValue("condition"));
+      wai.setCondition(expr);
+    }
+    return wai;
+  }
+  
+  public void handleChildCompleted(State pn) throws ParseException {
+    if (pn instanceof ActivityStateI) {
+      ((WhileActivityImpl)getActivity()).setActivity(((ActivityStateI)pn).getActivity());
+    } else {
+      super.handleChildCompleted(pn);
+    }
+  }  
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL11_WHILE;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new Bpel11WhileActivityState(se,pc);
+    }
+  }
+
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/BpelGraph_1_1.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/BpelGraph_1_1.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/BpelGraph_1_1.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/BpelGraph_1_1.java Mon May  1 14:37:44 2006
@@ -0,0 +1,227 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.parser.BpelProcessBuilder;
+import org.apache.ode.sax.fsa.AbstractGraphProvider;
+import org.apache.ode.sax.fsa.StateFactory;
+
+public class BpelGraph_1_1 extends AbstractGraphProvider implements Bpel11QNames {
+  
+  private static final HashMap<QName,StateFactory> _11ACTIVITIES = new HashMap<QName,StateFactory>();
+  static {
+    _11ACTIVITIES.put(Bpel11QNames.ASSIGN,new Bpel11AssignActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.EMPTY,new Bpel11EmptyActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.INVOKE,new Bpel11InvokeActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.RECEIVE,new Bpel11ReceiveActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.REPLY,new Bpel11ReplyActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.WAIT,new Bpel11WaitActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.THROW,new Bpel11ThrowActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.TERMINATE,new Bpel11TerminateActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.FLOW,new Bpel11FlowActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.SWITCH,new Bpel11SwitchActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.WHILE,new Bpel11WhileActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.SEQUENCE,new Bpel11SequenceActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.PICK,new Bpel11PickActivityState.Factory());
+    _11ACTIVITIES.put(Bpel11QNames.SCOPE,new Bpel11ScopeState.Factory());
+  }
+  
+  private static final HashSet<QName> _11EXTENSIBLE_ELEMENTS = new HashSet<QName>();
+  static {
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.PROCESS);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.PARTNERLINKS);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.PARTNERLINK);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.PARTNERS);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.PARTNER);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.FAULTHANDLERS);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.ONALARM);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.CATCH);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.COMPENSATIONHANDLER);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.EVENTHANDLERS);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.ONMESSAGE);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.VARIABLE);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.CORRELATION);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.CORRELATIONS);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.CORRELATIONSET);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.CORRELATIONSETS);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.SOURCE);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.TARGET);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.PROCESS);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.COPY);
+    /*
+     * <bp11:from> cannot be handled as extensible because it can contain literal
+     * content.  Extensibility in this case in the schema is used for the literal
+     * case.
+     */
+    //_11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.FROM);
+    /*
+     * <bp11:to> should probably be extensible, but the schema only allows attribute
+     * extension
+     */
+    
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.LINK);
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.LINKS);
+    // Add all activities.
+    for(Iterator<QName> it = _11ACTIVITIES.keySet().iterator();it.hasNext();) {
+      _11EXTENSIBLE_ELEMENTS.add(it.next());
+    }
+    _11EXTENSIBLE_ELEMENTS.add(Bpel11QNames.COMPENSATE);
+  }
+  
+  public BpelGraph_1_1() {
+    super();
+    initBpel11();
+  }
+  
+  public static QName get11QName(String s) {
+    return new Bpel11QName(s);
+  }
+  
+  public static StateFactory getRootStateFactory() {
+    return new Bpel11ProcessState.Factory();
+  }
+  
+  /*
+   * Build the graph for BPEL4WS 1.1
+   */
+  private void initBpel11() {
+    
+    add11Activities();
+    
+    addQNameEdge("11ASSIGN","11COPY",Bpel11QNames.COPY);
+    addStateFactory("11COPY",new Bpel11CopyState.Factory());
+    addStateFactory("11FROM",new Bpel11FromState.Factory());
+    addQNameEdge("11COPY","11FROM",Bpel11QNames.FROM);
+    addStateFactory("11TO",new Bpel11ToState.Factory());
+    addQNameEdge("11COPY","11TO",Bpel11QNames.TO);
+    
+    addStateFactory("11COMPENSATE",new Bpel11CompensateActivityState.Factory());
+    
+    addStateFactory("11PARTNERLINKS",new Bpel11PartnerLinksState.Factory());
+    addStateFactory("11PARTNERLINK",new Bpel11PartnerLinkState.Factory());
+    addQNameEdge("11PARTNERLINKS","11PARTNERLINK",Bpel11QNames.PARTNERLINK);
+    
+    addStateFactory("11PARTNERS",new Bpel11PartnersState.Factory());
+    addStateFactory("11PARTNER",new Bpel11PartnerState.Factory());
+    addQNameEdge("11PARTNERS","11PARTNER",Bpel11QNames.PARTNER);
+
+    addStateFactory("11VARIABLES",new Bpel11VariablesState.Factory());
+    addStateFactory("11VARIABLE",new Bpel11VariableState.Factory());
+    addQNameEdge("11VARIABLES","11VARIABLE",Bpel11QNames.VARIABLE);
+    
+    addStateFactory("11CORRELATIONSETS",new Bpel11CorrelationSetsState.Factory());
+    addStateFactory("11CORRELATIONSET",new Bpel11CorrelationSetState.Factory());
+    addQNameEdge("11CORRELATIONSETS","11CORRELATIONSET",Bpel11QNames.CORRELATIONSET);
+
+    addStateFactory("11CORRELATIONS",new Bpel11CorrelationsState.Factory());
+    addStateFactory("11CORRELATION",new Bpel11CorrelationState.Factory());
+    addQNameEdge("11CORRELATIONS","11CORRELATION",Bpel11QNames.CORRELATION);
+        
+    addStateFactory("11FAULTHANDLERS",new Bpel11FaultHandlersState.Factory());
+    addStateFactory("11CATCH",new Bpel11CatchState.Factory());
+    addStateFactory("11CATCHALL",new Bpel11CatchAllState.Factory());
+    addQNameEdge("11FAULTHANDLERS","11CATCH",Bpel11QNames.CATCH);
+    addQNameEdge("11FAULTHANDLERS","11CATCHALL",Bpel11QNames.CATCHALL);
+    
+    addStateFactory("11EVENTHANDLERS",new Bpel11EventHandlersState.Factory());
+    addStateFactory("11ONMESSAGE",new Bpel11OnMessageState.Factory());
+    addQNameEdge("11ONMESSAGE","11CORRELATIONS",Bpel11QNames.CORRELATIONS);
+    addQNameEdge("11EVENTHANDLERS","11ONMESSAGE",Bpel11QNames.ONMESSAGE);
+    addStateFactory("11ONALARM",new Bpel11OnAlarmState.Factory());
+    addQNameEdge("11EVENTHANDLERS","11ONALARM",Bpel11QNames.ONALARM);
+    
+    addStateFactory("11COMPENSATIONHANDLER",new Bpel11CompensationHandlerState.Factory());
+    
+    addStateFactory("11PROCESS",new Bpel11ProcessState.Factory());
+    addQNameEdge("11PROCESS","11PARTNERS",Bpel11QNames.PARTNERS);
+    addQNameEdge("11PROCESS","11PARTNERLINKS",Bpel11QNames.PARTNERLINKS);
+    addQNameEdge("11PROCESS","11VARIABLES",Bpel11QNames.VARIABLES);
+    addQNameEdge("11PROCESS","11CORRELATIONSETS",Bpel11QNames.CORRELATIONSETS);
+    addQNameEdge("11PROCESS","11FAULTHANDLERS",Bpel11QNames.FAULTHANDLERS);
+    addQNameEdge("11PROCESS","11COMPENSATIONHANDLER",Bpel11QNames.COMPENSATIONHANDLER);
+    addQNameEdge("11PROCESS","11EVENTHANDLERS",Bpel11QNames.EVENTHANDLERS);
+    
+    addQNameEdge("11SCOPE","11VARIABLES",Bpel11QNames.VARIABLES);
+    addQNameEdge("11SCOPE","11CORRELATIONSETS",Bpel11QNames.CORRELATIONSETS);
+    addQNameEdge("11SCOPE","11FAULTHANDLERS",Bpel11QNames.FAULTHANDLERS);
+    addQNameEdge("11SCOPE","11COMPENSATIONHANDLER",Bpel11QNames.COMPENSATIONHANDLER);
+    addQNameEdge("11SCOPE","11EVENTHANDLERS",Bpel11QNames.EVENTHANDLERS);
+    
+    add11ActivityTransitionsTo("11PROCESS");
+    add11ActivityTransitionsTo("11COMPENSATIONHANDLER");
+    add11ActivityTransitionsTo("11CATCH");
+    addQNameEdge("11CATCH","11COMPENSATE",Bpel11QNames.COMPENSATE);
+    add11ActivityTransitionsTo("11CATCHALL");
+    addQNameEdge("11CATCHALL","11COMPENSATE",Bpel11QNames.COMPENSATE);
+    addQNameEdge("11SWITCH","11CASE", Bpel11QNames.CASE);
+    addQNameEdge("11SWITCH","11OTHERWISE", Bpel11QNames.OTHERWISE);
+    addStateFactory("11CASE", new Bpel11CaseState.Factory());
+    addStateFactory("11OTHERWISE", new Bpel11OtherwiseState.Factory());
+    add11ActivityTransitionsTo("11CASE");
+    add11ActivityTransitionsTo("11OTHERWISE");
+    add11ActivityTransitionsTo("11SEQUENCE");
+    add11ActivityTransitionsTo("11FLOW");
+    add11ActivityTransitionsTo("11WHILE");
+    add11ActivityTransitionsTo("11SCOPE");
+    add11ActivityTransitionsTo("11ONMESSAGE");
+    add11ActivityTransitionsTo("11ONALARM");
+    
+    addQNameEdge("11PICK","11ONMESSAGE",Bpel11QNames.ONMESSAGE);
+    addQNameEdge("11PICK","11ONALARM",Bpel11QNames.ONALARM);    
+    
+    addQNameEdge("11INVOKE","11CORRELATIONS",Bpel11QNames.CORRELATIONS);
+    addQNameEdge("11INVOKE","11CATCH",Bpel11QNames.CATCH);
+    addQNameEdge("11INVOKE","11CATCHALL",Bpel11QNames.CATCHALL);
+    addQNameEdge("11INVOKE","11COMPENSATIONHANDLER",Bpel11QNames.COMPENSATIONHANDLER);
+    
+    addQNameEdge("11RECEIVE","11CORRELATIONS",Bpel11QNames.CORRELATIONS);
+    addQNameEdge("11REPLY","11CORRELATIONS",Bpel11QNames.CORRELATIONS);
+    
+    addStateFactory("11LINKS",new Bpel11LinksState.Factory());
+    addStateFactory("11LINK",new Bpel11LinkState.Factory());
+    addQNameEdge("11FLOW","11LINKS",Bpel11QNames.LINKS);
+    addQNameEdge("11LINKS","11LINK",Bpel11QNames.LINK);
+    
+    addExtensibilityEdges();
+    
+    //addQNameEdge(START,"11PROCESS",Bpel11QNames.PROCESS);
+  }
+  
+  private void addExtensibilityEdges() {
+    addStateFactory("EXTENSIBILITY_BUCKET", new ExtensibilityBucketState.Factory());
+    for(Iterator<QName> it = _11EXTENSIBLE_ELEMENTS.iterator();it.hasNext();) {
+      QName qn = it.next();
+      String nodename = "11" + qn.getLocalPart().toUpperCase();
+      addOtherEdge(nodename,"EXTENSIBILITY_BUCKET",BpelProcessBuilder.BPEL4WS_NS);
+    }
+  }
+  
+  private void add11Activities() {
+    addStateFactory("11SOURCE",new Bpel11LinkSourceState.Factory());
+    addStateFactory("11TARGET",new Bpel11LinkTargetState.Factory());
+    for (Iterator<QName> it = _11ACTIVITIES.keySet().iterator();it.hasNext();) {
+      QName qn = it.next();
+      String nodename = "11" + qn.getLocalPart().toUpperCase();
+      addStateFactory(nodename, _11ACTIVITIES.get(qn));
+      addQNameEdge(nodename,"11SOURCE",Bpel11QNames.SOURCE);
+      addQNameEdge(nodename,"11TARGET",Bpel11QNames.TARGET);
+    }
+  }
+  
+  private void add11ActivityTransitionsTo(String source) {
+    for (Iterator<QName> it = _11ACTIVITIES.keySet().iterator();it.hasNext();) {
+      QName qn = it.next();
+      String nodename = "11" + qn.getLocalPart().toUpperCase();
+      addQNameEdge(source,nodename,qn);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/ExtensibilityBucketState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/ExtensibilityBucketState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/ExtensibilityBucketState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_1_1/ExtensibilityBucketState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,52 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_1_1;
+
+import org.apache.ode.sax.fsa.*;
+import org.apache.ode.sax.evt.SaxEvent;
+import org.apache.ode.sax.evt.StartElement;
+
+
+/**
+ * <p>
+ * Bucket state to capture schema-level extensibility elements.  Extensibility
+ * attributes must be handled elsewhere.
+ * </p>
+ */
+class ExtensibilityBucketState extends AbstractState {
+  
+  private static final StateFactory _factory = new Factory();
+  
+  ExtensibilityBucketState(StartElement se, ParseContext pc) {
+    super(pc);
+  }
+  
+  
+  static class Factory implements StateFactory {
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new ExtensibilityBucketState(se,pc);
+    }
+  }
+
+  public void handleSaxEvent(SaxEvent se) throws ParseException{
+    /*
+     * For the moment, this is a no-op implementation, but if supporting extensions
+     * is desired, those extensions can be hooked from here.  Ideally, we'd have
+     * some kind of registry implementation that routes SaxEvent streams based on
+     * URI or some other scheme.  However, for the moment, we don't have any use
+     * cases.  WS-BPEL 2.0 extensibility can be implemented according to the spec,
+     * once that's settled.
+     */
+  }
+
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  public int getType() {
+    return EXTENSIBILITY_ELEMENT;
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/ActivityStateI.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/ActivityStateI.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/ActivityStateI.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/ActivityStateI.java Mon May  1 14:37:44 2006
@@ -0,0 +1,17 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_2_0;
+
+import org.apache.ode.bom.api.Activity;
+
+/**
+ * Marker interface.
+ */
+interface ActivityStateI {
+  
+  public Activity getActivity();
+
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BaseBpelState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BaseBpelState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BaseBpelState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BaseBpelState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,115 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_2_0;
+
+import org.apache.ode.bom.api.Correlation;
+import org.apache.ode.bom.api.JoinFailureSuppressor;
+import org.apache.ode.bom.api.Process;
+import org.apache.ode.sax.fsa.AbstractState;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.evt.XmlAttributes;
+import org.apache.ode.sax.evt.attspec.FilterSpec;
+import org.apache.ode.sax.evt.attspec.XmlAttributeSpec;
+
+abstract class BaseBpelState extends AbstractState {
+  
+  static final int BPEL_PROCESS = 2000;
+  static final int BPEL_PARTNERLINKS = 2001;
+  static final int BPEL_PARTNERLINK = 2002;
+  // Obsoleted via Issue 130.
+  static final int BPEL_PARTNERS = 2003;
+  static final int BPEL_PARTNER = 2004;
+  static final int BPEL_VARIABLES = 2005;
+  static final int BPEL_VARIABLE = 2006;
+  static final int BPEL_CORRELATIONSETS = 2007;
+  static final int BPEL_CORRELATIONSET = 2008;
+  static final int BPEL_FAULTHANDLERS = 2009;
+  static final int BPEL_CATCH = 2010;
+  static final int BPEL_CATCHALL = 2011;
+  static final int BPEL_COMPENSATIONHANDLER = 2012;
+  static final int BPEL_EVENTHANDLERS = 2013;
+  static final int BPEL_ONMESSAGE = 2014;
+  static final int BPEL_CORRELATIONS = 2015;
+  static final int BPEL_ONALARM = 2016;
+  static final int BPEL_EMPTY = 2017;
+  static final int BPEL_INVOKE = 2018;
+  static final int BPEL_RECEIVE = 2019;
+  static final int BPEL_REPLY = 2020;
+  static final int BPEL_ASSIGN = 2021;
+  static final int BPEL_COPY = 2022;
+  static final int BPEL_FROM = 2023;
+  static final int BPEL_TO = 2024;
+  static final int BPEL_WAIT = 2025;
+  static final int BPEL_THROW = 2026;
+  static final int BPEL_EXIT = 2027;
+  static final int BPEL_FLOW = 2028;
+  static final int BPEL_SWITCH = 2029;
+  static final int BPEL_WHILE = 2030;
+  static final int BPEL_SEQUENCE = 2031;
+  static final int BPEL_PICK = 2032;
+  static final int BPEL_SCOPE = 2033;
+  static final int BPEL_CASE = 2034;
+  static final int BPEL_COMPENSATE = 2035;
+  static final int BPEL_SOURCE = 2036;
+  static final int BPEL_TARGET = 2037;
+  static final int BPEL_LINKS = 2038;
+  static final int BPEL_LINK = 2039;
+  static final int BPEL_CORRELATION = 2040;
+  static final int BPEL_OTHERWISE = 2041;
+  static final int BPEL_EXPRESSION = 2042;
+  static final int BPEL_RETHROW = 2043;
+  static final int BPEL_FOR = 2044;
+  static final int BPEL_UNTIL = 2045;
+  // Obsoleted via Issue 103.
+  // TODO: Remove.
+  static final int BPEL_QUERY = 2046;
+  static final int BPEL_SERVICE_REF = 2047;
+  static final int BPEL_IMPORT = 2048;
+  static final int BPEL_REPEATEVERY = 2049;
+  static final int BPEL_SOURCES = 2050;
+  static final int BPEL_TARGETS = 2051;
+  static final int BPEL_IF = 2052;
+  static final int BPEL_ELSEIF = 2053;
+  static final int BPEL_ELSE = 2054;
+  static final int BPEL_THEN = 2055;
+  // Added via Issue 135.
+  static final int BPEL_TERMINATIONHANDLER = 2056;
+  static final int BPEL_ONEVENT = 2057;
+  // Added via 103.
+  static final int BPEL_LITERAL = 2058;
+  // Added via 160.
+  static final int BPEL_XMLVALIDATE = 2059;
+  // Added via 112.
+  static final int BPEL_TOPART = 2060;
+  static final int BPEL_FROMPART = 2061;
+  
+  protected static final XmlAttributeSpec BPEL_ACTIVITY_ATTS = new FilterSpec(
+      new String[] {},
+      new String[] {"name","suppressJoinFailure"});
+
+  protected BaseBpelState(ParseContext pc) {
+    super(pc);
+  }
+  
+  
+  protected boolean checkYesNo(String val) {
+    return val != null && val.equals("yes");
+  }
+ 
+  protected short getSuppressJoinFailure(XmlAttributes atts) {
+    if (!atts.hasAtt("suppressJoinFailure")) {
+      return JoinFailureSuppressor.SUPJOINFAILURE_NOTSET;
+    } else {
+      String sjf = atts.getValue("suppressJoinFailure");
+      return checkYesNo(sjf)?Process.SUPJOINFAILURE_YES:Process.SUPJOINFAILURE_NO; 
+    }    
+  }
+  
+  protected short getInitiateYesNo(XmlAttributes atts) {
+    return checkYesNo(atts.getValue("initiate"))?Correlation.INITIATE_YES:Correlation.INITIATE_NO;
+  }
+  
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/Bpel20QName.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/Bpel20QName.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/Bpel20QName.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/Bpel20QName.java Mon May  1 14:37:44 2006
@@ -0,0 +1,19 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_2_0;
+
+import org.apache.ode.bpel.parser.BpelProcessBuilder;
+
+import javax.xml.namespace.QName;
+
+class Bpel20QName extends QName {
+  
+  private static final long serialVersionUID = 1L;
+
+	public Bpel20QName(String local) {
+    super(BpelProcessBuilder.WSBPEL2_0_NS,local);
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/Bpel20QNames.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/Bpel20QNames.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/Bpel20QNames.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/Bpel20QNames.java Mon May  1 14:37:44 2006
@@ -0,0 +1,89 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_2_0;
+
+import javax.xml.namespace.QName;
+
+interface Bpel20QNames {
+  
+  public static final QName PROCESS = new Bpel20QName("process");
+  
+  public static final QName IMPORT = new Bpel20QName("import");
+  public static final QName SERVICE_REF = new Bpel20QName("service-ref");
+  
+  public static final QName SOURCES = new Bpel20QName("sources");
+  public static final QName SOURCE = new Bpel20QName("source");
+  public static final QName TARGETS = new Bpel20QName("targets");
+  public static final QName TARGET = new Bpel20QName("target");
+  
+  public static final QName PARTNERLINKS = new Bpel20QName("partnerLinks");
+  public static final QName PARTNERLINK = new Bpel20QName("partnerLink");
+  
+  public static final QName VARIABLES = new Bpel20QName("variables");
+  public static final QName VARIABLE = new Bpel20QName("variable");
+  
+  public static final QName CORRELATIONSETS = new Bpel20QName("correlationSets");
+  public static final QName CORRELATIONSET = new Bpel20QName("correlationSet");
+  
+  public static final QName FAULTHANDLERS = new Bpel20QName("faultHandlers");
+  public static final QName CATCH = new Bpel20QName("catch");
+  public static final QName CATCHALL = new Bpel20QName("catchAll");
+  
+  public static final QName COMPENSATIONHANDLER = new Bpel20QName("compensationHandler");
+  public static final QName TERMINATIONHANDLER = new Bpel20QName("terminationHandler");
+  
+  public static final QName COMPENSATE = new Bpel20QName("compensate");
+  
+  public static final QName EVENTHANDLERS = new Bpel20QName("eventHandlers");
+  public static final QName ONEVENT = new Bpel20QName("onEvent");
+  public static final QName ONMESSAGE = new Bpel20QName("onMessage");
+  public static final QName ONALARM = new Bpel20QName("onAlarm");
+  
+  public static final QName CORRELATIONS = new Bpel20QName("correlations");
+  public static final QName CORRELATION = new Bpel20QName("correlation");
+  
+  public static final QName EMPTY = new Bpel20QName("empty");
+  public static final QName INVOKE = new Bpel20QName("invoke");
+  public static final QName RECEIVE = new Bpel20QName("receive");
+  public static final QName REPLY = new Bpel20QName("reply");
+  public static final QName ASSIGN = new Bpel20QName("assign");
+  public static final QName COPY = new Bpel20QName("copy");
+  public static final QName FROM = new Bpel20QName("from");
+  public static final QName TO = new Bpel20QName("to");
+  public static final QName WAIT = new Bpel20QName("wait");
+  public static final QName THROW = new Bpel20QName("throw");
+  public static final QName RETHROW = new Bpel20QName("rethrow");
+  public static final QName EXIT = new Bpel20QName("exit");
+  
+  public static final QName FLOW = new Bpel20QName("flow");
+  public static final QName LINKS = new Bpel20QName("links");
+  public static final QName LINK = new Bpel20QName("link");
+  
+  public static final QName SWITCH = new Bpel20QName("switch");
+  public static final QName CASE = new Bpel20QName("case");
+  public static final QName OTHERWISE = new Bpel20QName("otherwise");
+  
+  public static final QName IF = new Bpel20QName("if");
+  public static final QName THEN = new Bpel20QName("then");
+  public static final QName ELSEIF = new Bpel20QName("elseif");
+  public static final QName ELSE = new Bpel20QName("else");
+  
+  public static final QName WHILE = new Bpel20QName("while");
+  public static final QName SEQUENCE = new Bpel20QName("sequence");
+  public static final QName PICK = new Bpel20QName("pick");
+  public static final QName SCOPE = new Bpel20QName("scope");
+  
+  public static final QName TRANSITION_CONDITION = new Bpel20QName("transitionCondition");
+  public static final QName FOR = new Bpel20QName("for");
+  public static final QName UNTIL = new Bpel20QName("until");
+  public static final QName REPEAT_EVERY = new Bpel20QName("repeatEvery");
+  public static final QName JOIN_CONDITION = new Bpel20QName("joinCondition");
+  public static final QName CONDITION = new Bpel20QName("condition");
+  
+  public static final QName QUERY = new Bpel20QName("query");
+  public static final QName EXPRESSION = new Bpel20QName("expression");
+  
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelAssignActivityState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelAssignActivityState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelAssignActivityState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelAssignActivityState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,55 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_2_0;
+
+import org.apache.ode.bom.api.Activity;
+import org.apache.ode.bom.impl.nodes.AssignActivityImpl;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.fsa.ParseException;
+import org.apache.ode.sax.fsa.State;
+import org.apache.ode.sax.fsa.StateFactory;
+import org.apache.ode.sax.evt.StartElement;
+
+class BpelAssignActivityState extends BpelBaseActivityState {
+
+  private static final StateFactory _factory = new Factory();
+
+  BpelAssignActivityState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+  }
+  
+  public void handleChildCompleted(State pn) throws ParseException {
+    if (pn.getType() == BPEL_COPY) {
+      ((AssignActivityImpl)getActivity()).addCopy(((BpelCopyState)pn).getCopy());
+    } else {
+      super.handleChildCompleted(pn);
+    }
+  }
+  
+  protected Activity createActivity(StartElement se) throws ParseException {
+    return new AssignActivityImpl();
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL_ASSIGN;
+  }
+  
+  static class Factory implements StateFactory {
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new BpelAssignActivityState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelBaseActivityState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelBaseActivityState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelBaseActivityState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelBaseActivityState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,67 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_2_0;
+
+import org.apache.ode.bom.api.Activity;
+import org.apache.ode.bom.api.LinkSource;
+import org.apache.ode.bom.api.LinkTarget;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.fsa.ParseException;
+import org.apache.ode.sax.fsa.State;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+
+import java.util.Iterator;
+
+abstract class BpelBaseActivityState extends BaseBpelState implements ActivityStateI {
+
+  private Activity _activity;
+  
+  protected static final String[] BPEL11_BASE_ACTIVITY_ATTS = new String[] {
+    "name","suppressJoinFailure","joinCondition"
+  };  
+  
+  protected BpelBaseActivityState(StartElement se, ParseContext pc) throws ParseException {
+    super(pc);
+    _activity = createActivity(se);
+    XmlAttributes atts = se.getAttributes();
+
+    _activity.setNamespaceContext(se.getNamespaceContext());
+    _activity.setLineNo(se.getLocation().getLineNumber());
+    
+    if (atts.hasAtt("name")) {
+      _activity.setName(atts.getValue("name"));
+    }
+    
+    _activity.setSuppressJoinFailure(getSuppressJoinFailure(atts));
+  }
+  
+  protected abstract Activity createActivity(StartElement se) throws ParseException;
+  
+  public Activity getActivity() {
+    return _activity;
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#handleChildCompleted(org.apache.ode.sax.fsa.State)
+   */
+  public void handleChildCompleted(State pn) throws ParseException {
+    switch (pn.getType()) {
+      case BPEL_TARGETS:
+        _activity.setJoinCondition(((BpelLinkTargetsState)pn).getJoinCondition());
+        for(Iterator<LinkTarget> iter = ((BpelLinkTargetsState)pn).getTargets(); iter.hasNext(); )
+        	_activity.addTarget(iter.next());
+        break;
+      case BPEL_SOURCES:
+        for(Iterator<LinkSource> iter = ((BpelLinkSourcesState)pn).getSources(); iter.hasNext(); )
+        	_activity.addSource(iter.next());
+        break;
+    default:
+      super.handleChildCompleted(pn);
+    }
+  }
+
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelCatchAllState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelCatchAllState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelCatchAllState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelCatchAllState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,60 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_2_0;
+
+import org.apache.ode.bom.api.Catch;
+import org.apache.ode.bom.impl.nodes.CatchImpl;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.fsa.ParseException;
+import org.apache.ode.sax.fsa.State;
+import org.apache.ode.sax.fsa.StateFactory;
+import org.apache.ode.sax.evt.StartElement;
+
+class BpelCatchAllState extends BaseBpelState {
+
+  private static final StateFactory _factory = new Factory();
+  private CatchImpl _c;
+  
+  BpelCatchAllState(StartElement se, ParseContext pc) throws ParseException {
+    super(pc);
+    _c = new CatchImpl();
+    _c.setNamespaceContext(se.getNamespaceContext());
+    _c.setLineNo(se.getLocation().getLineNumber());
+  }
+  
+  public void handleChildCompleted(State pn) throws ParseException {
+    if (pn instanceof ActivityStateI) {
+      _c.setActvity(((ActivityStateI)pn).getActivity());
+    } else {
+      super.handleChildCompleted(pn);
+    }
+  }
+  
+  public Catch getCatch() {
+    return _c;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL_CATCHALL;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new BpelCatchAllState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelCatchState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelCatchState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelCatchState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelCatchState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,65 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_2_0;
+
+import org.apache.ode.bom.api.Catch;
+import org.apache.ode.sax.fsa.*;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+import org.apache.ode.sax.evt.attspec.FilterSpec;
+import org.apache.ode.sax.evt.attspec.OrSpec;
+import org.apache.ode.sax.evt.attspec.XmlAttributeSpec;
+
+class BpelCatchState extends BpelCatchAllState {
+
+  private static final StateFactory _factory = new Factory();
+  
+  private static final XmlAttributeSpec FAULTNAME = new FilterSpec(
+      new String[] {"faultName"}, new String[] {"faultVariable","faultMessageType","faultElement"});
+  private static final XmlAttributeSpec FAULTVARIABLE = new FilterSpec(
+      new String[] {"faultVariable"}, new String[] {"faultMessageType","faultElement"});
+  
+  private static final XmlAttributeSpec VALID = new OrSpec(FAULTNAME,FAULTVARIABLE);
+  
+  BpelCatchState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+    XmlAttributes atts = se.getAttributes();
+    if (!VALID.matches(atts)) {
+      pc.parseError(ParseError.ERROR,se,"PARSER_ERROR",
+          "Invalid attributes for <catch>; expected @faultName and/or @faultVariable with @faultMessageType optional.");
+    }
+    Catch c = getCatch();
+    if (atts.hasAtt("faultName")) 
+      c.setFaultName(se.getNamespaceContext().derefQName(atts.getValue("faultName")));
+    if (atts.hasAtt("faultVariable")) 
+      c.setFaultVariable(atts.getValue("faultVariable"));
+    if(atts.hasAtt("faultMessageType"))
+      c.setFaultVariableMessageType(se.getNamespaceContext().derefQName(atts.getValue("faultMessageType")));
+    if(atts.hasAtt("faultElement"))
+      c.setFaultVariableElementType(se.getNamespaceContext().derefQName(atts.getValue("faultElement")));
+  }
+    
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL_CATCH;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new BpelCatchState(se,pc);
+    }
+  }
+}

Added: incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelCompensateActivityState.java
URL: http://svn.apache.org/viewcvs/incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelCompensateActivityState.java?rev=398694&view=auto
==============================================================================
--- incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelCompensateActivityState.java (added)
+++ incubator/ode/trunk/bpel-parser/src/main/java/org/apache/ode/sax/fsa/bpel_2_0/BpelCompensateActivityState.java Mon May  1 14:37:44 2006
@@ -0,0 +1,54 @@
+/*
+ * File:      $RCSfile$
+ * Copyright: (C) 1999-2005 FiveSight Technologies Inc.
+ *
+ */
+package org.apache.ode.sax.fsa.bpel_2_0;
+
+import org.apache.ode.bom.api.Activity;
+import org.apache.ode.bom.impl.nodes.CompensateActivityImpl;
+import org.apache.ode.sax.fsa.ParseContext;
+import org.apache.ode.sax.fsa.ParseException;
+import org.apache.ode.sax.fsa.State;
+import org.apache.ode.sax.fsa.StateFactory;
+import org.apache.ode.sax.evt.StartElement;
+import org.apache.ode.sax.evt.XmlAttributes;
+
+class BpelCompensateActivityState extends BpelBaseActivityState {
+
+  private static final StateFactory _factory = new Factory();
+
+  BpelCompensateActivityState(StartElement se, ParseContext pc) throws ParseException {
+    super(se,pc);
+  }
+  
+  protected Activity createActivity(StartElement se) throws ParseException {
+    CompensateActivityImpl cai = new CompensateActivityImpl();
+    XmlAttributes atts = se.getAttributes();
+    if (atts.hasAtt("scope")) {
+      cai.setScopeToCompensate(atts.getValue("scope"));
+    }
+    return cai;
+  }
+  
+  /**
+   * @see org.apache.ode.sax.fsa.State#getFactory()
+   */
+  public StateFactory getFactory() {
+    return _factory;
+  }
+
+  /**
+   * @see org.apache.ode.sax.fsa.State#getType()
+   */
+  public int getType() {
+    return BPEL_COMPENSATE;
+  }
+  
+  static class Factory implements StateFactory {
+    
+    public State newInstance(StartElement se, ParseContext pc) throws ParseException {
+      return new BpelCompensateActivityState(se,pc);
+    }
+  }
+}