You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-dev@jakarta.apache.org by ra...@apache.org on 2005/08/07 19:04:25 UTC
svn commit: r230683 - in
/jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc:
dm/SCXMLDialog.java scxml/SCXMLDigester.java scxml/model/SCXML.java
Author: rahul
Date: Sun Aug 7 10:04:21 2005
New Revision: 230683
URL: http://svn.apache.org/viewcvs?rev=230683&view=rev
Log:
Towards Commons Sandbox, a cleaner RDC - SCXML separation.
Modified:
jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/dm/SCXMLDialog.java
jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/scxml/SCXMLDigester.java
jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/scxml/model/SCXML.java
Modified: jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/dm/SCXMLDialog.java
URL: http://svn.apache.org/viewcvs/jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/dm/SCXMLDialog.java?rev=230683&r1=230682&r2=230683&view=diff
==============================================================================
--- jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/dm/SCXMLDialog.java (original)
+++ jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/dm/SCXMLDialog.java Sun Aug 7 10:04:21 2005
@@ -26,6 +26,7 @@
import java.util.Map;
import java.util.Set;
+import javax.servlet.ServletContext;
import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
@@ -33,6 +34,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
import org.apache.taglibs.rdc.core.BaseModel;
import org.apache.taglibs.rdc.core.Constants;
import org.apache.taglibs.rdc.core.GroupModel;
@@ -47,10 +49,12 @@
import org.apache.taglibs.rdc.scxml.env.ELEvaluator;
import org.apache.taglibs.rdc.scxml.env.RootContext;
import org.apache.taglibs.rdc.scxml.env.SimpleDispatcher;
+import org.apache.taglibs.rdc.scxml.env.ServletContextResolver;
import org.apache.taglibs.rdc.scxml.env.Tracer;
import org.apache.taglibs.rdc.scxml.model.ModelException;
import org.apache.taglibs.rdc.scxml.model.SCXML;
import org.apache.taglibs.rdc.scxml.model.State;
+
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXParseException;
@@ -101,10 +105,11 @@
SCXML scxml = null;
Evaluator engine = new ELEvaluator();
Context rootCtx = new RootContext(ctx);
+ ServletContext sc = ((PageContext) ctx).getServletContext();
try {
- scxml = SCXMLDigester.digest(((PageContext) ctx).
- getServletContext(), groupTag.getConfig(),
- new SCXMLErrorHandler(), rootCtx, engine);
+ scxml = SCXMLDigester.digest(sc.getRealPath(groupTag.getConfig()),
+ new SCXMLErrorHandler(), rootCtx, engine,
+ new ServletContextResolver(sc));
} catch (Exception e) {
MessageFormat msgFormat = new MessageFormat(ERR_DIGESTER_FAIL);
String errMsg = msgFormat.format(new Object[] {groupTag.
Modified: jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/scxml/SCXMLDigester.java
URL: http://svn.apache.org/viewcvs/jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/scxml/SCXMLDigester.java?rev=230683&r1=230682&r2=230683&view=diff
==============================================================================
--- jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/scxml/SCXMLDigester.java (original)
+++ jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/scxml/SCXMLDigester.java Sun Aug 7 10:04:21 2005
@@ -24,8 +24,6 @@
import java.util.Map;
import java.util.Set;
-import javax.servlet.ServletContext;
-
import org.apache.commons.digester.Digester;
import org.apache.commons.digester.ExtendedBaseRules;
import org.apache.commons.digester.ObjectCreateRule;
@@ -34,10 +32,6 @@
import org.apache.commons.digester.SetPropertiesRule;
import org.apache.commons.logging.LogFactory;
-import org.xml.sax.Attributes;
-import org.xml.sax.ErrorHandler;
-
-import org.apache.taglibs.rdc.scxml.env.ServletContextResolver;
import org.apache.taglibs.rdc.scxml.env.URLResolver;
import org.apache.taglibs.rdc.scxml.model.Action;
import org.apache.taglibs.rdc.scxml.model.Assign;
@@ -60,6 +54,9 @@
import org.apache.taglibs.rdc.scxml.model.TransitionTarget;
import org.apache.taglibs.rdc.scxml.model.Var;
+import org.xml.sax.Attributes;
+import org.xml.sax.ErrorHandler;
+
/**
* The SCXMLDigester can be used to: <br>
* a) Digest a SCXML file placed in a web application context <br>
@@ -79,33 +76,44 @@
//-- PUBLIC METHODS --//
/**
- * Convenience method for the RDC SCXML DM strategy impl
+ * API for standalone usage where the SCXML document is a URL.
*
- * @param ServletContext
- * The ServletContext within which this RDC group is hosted
- * @param String
- * The absolute file from the base of the application context
- * @param ErrorHandler
+ * @param scxmlURL
+ * a canonical absolute URL to parse (relative URLs within the
+ * top level document are to be resovled against this URL).
+ * @param errHandler
* The SAX ErrorHandler
- *
+ * @param evalCtx
+ * the document-level variable context for guard condition
+ * evaluation
+ * @param evalEngine
+ * the scripting/expression language engine for creating local
+ * state-level variable contexts (if supported by a given
+ * scripting engine)
+ *
* @return SCXML The SCXML object corresponding to the file argument
+ *
+ * @see Context
+ * @see ErrorHandler
+ * @see Evaluator
+ * @see PathResolver
*/
- public static SCXML digest(ServletContext sc, String file,
- ErrorHandler errHandler, Context evalCtx, Evaluator evalEngine) {
+ public static SCXML digest(URL scxmlURL, ErrorHandler errHandler,
+ Context evalCtx, Evaluator evalEngine) {
SCXML scxml = null;
- Digester scxmlDigester = SCXMLDigester.newInstance(null,
- new ServletContextResolver(sc));
+ Digester scxmlDigester = SCXMLDigester
+ .newInstance(null, new URLResolver(scxmlURL));
scxmlDigester.setErrorHandler(errHandler);
try {
- scxml = (SCXML) scxmlDigester.parse(sc.getRealPath(file));
+ scxml = (SCXML) scxmlDigester.parse(scxmlURL.toString());
} catch (Exception e) {
MessageFormat msgFormat = new MessageFormat(ERR_PARSE_FAIL);
- String errMsg = msgFormat.format(new Object[] {sc.
- getRealPath(file), e.getMessage()});
+ String errMsg = msgFormat.format(new Object[] {scxmlURL.toString(),
+ e.getMessage()});
log.error(errMsg, e);
- }
+ }
if (scxml != null) {
updateSCXML(scxml, evalCtx, evalEngine);
@@ -116,11 +124,14 @@
}
/**
- * API for standalone usage.
+ * API for standalone usage where the SCXML document is a URI.
+ * A PathResolver must be provided.
*
- * @param scxmlURL
- * a canonical absolute URL to parse (relative URLs within the
- * top level document are to be resovled against this URL).
+ * @param pathResolver
+ * The PathResolver for this context
+ * @param documentRealPath
+ * The String pointing to the absolute (real) path of the
+ * SCXML config
* @param errHandler
* The SAX ErrorHandler
* @param evalCtx
@@ -130,27 +141,30 @@
* the scripting/expression language engine for creating local
* state-level variable contexts (if supported by a given
* scripting engine)
- * @see Context
- * @see Evaluator
*
* @return SCXML The SCXML object corresponding to the file argument
+ *
+ * @see Context
+ * @see ErrorHandler
+ * @see Evaluator
+ * @see PathResolver
*/
- public static SCXML digest(URL scxmlURL, ErrorHandler errHandler,
- Context evalCtx, Evaluator evalEngine) {
+ public static SCXML digest(String documentRealPath,
+ ErrorHandler errHandler, Context evalCtx, Evaluator evalEngine,
+ PathResolver pr) {
SCXML scxml = null;
- Digester scxmlDigester = SCXMLDigester
- .newInstance(null, new URLResolver(scxmlURL));
+ Digester scxmlDigester = SCXMLDigester.newInstance(null, pr);
scxmlDigester.setErrorHandler(errHandler);
try {
- scxml = (SCXML) scxmlDigester.parse(scxmlURL.toString());
+ scxml = (SCXML) scxmlDigester.parse(documentRealPath);
} catch (Exception e) {
MessageFormat msgFormat = new MessageFormat(ERR_PARSE_FAIL);
- String errMsg = msgFormat.format(new Object[] {scxmlURL.toString(),
- e.getMessage()});
+ String errMsg = msgFormat.format(new Object[] { documentRealPath,
+ e.getMessage()});
log.error(errMsg, e);
- }
+ }
if (scxml != null) {
updateSCXML(scxml, evalCtx, evalEngine);
Modified: jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/scxml/model/SCXML.java
URL: http://svn.apache.org/viewcvs/jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/scxml/model/SCXML.java?rev=230683&r1=230682&r2=230683&view=diff
==============================================================================
--- jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/scxml/model/SCXML.java (original)
+++ jakarta/taglibs/proper/rdc/trunk/src/org/apache/taglibs/rdc/scxml/model/SCXML.java Sun Aug 7 10:04:21 2005
@@ -17,10 +17,10 @@
*/
package org.apache.taglibs.rdc.scxml.model;
-import org.apache.taglibs.rdc.RDCUtils;
import org.apache.taglibs.rdc.scxml.Context;
import org.apache.taglibs.rdc.scxml.NotificationRegistry;
import org.apache.taglibs.rdc.scxml.Observable;
+import org.apache.taglibs.rdc.scxml.SCXMLHelper;
import org.apache.taglibs.rdc.scxml.SCXMLListener;
import java.util.HashMap;
@@ -147,7 +147,7 @@
*/
public void addTarget(TransitionTarget target) {
String id = target.getId();
- if (!RDCUtils.isStringEmpty(id)) {
+ if (!SCXMLHelper.isStringEmpty(id)) {
// Target is not anonymous, so makes sense to map it
targets.put(id, target);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: taglibs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: taglibs-dev-help@jakarta.apache.org