Author: lgawron
Date: Fri Feb 25 08:16:53 2005
New Revision: 155340
URL: http://svn.apache.org/viewcvs?view=rev&rev=155340
Log:
introduced:
<jx:call macro="${macroName}">
<jx:withParam name="param1" value="${val}">
<body>here</body>
</jx:call>
Added:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/MacroContext.java
(with props)
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/JXTemplateGenerator.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/TransformerAdapter.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartCall.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartChoose.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartComment.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartDefine.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartEval.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartEvalBody.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartForEach.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartFormatDate.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartFormatNumber.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartIf.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartImport.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartOut.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartParameterInstance.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartSet.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartTemplate.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Parser.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/Characters.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndCDATA.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndDTD.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndDocument.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndElement.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndEntity.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndPrefixMapping.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/Event.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/IgnorableWhitespace.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/ProcessingInstruction.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/SkippedEntity.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartCDATA.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartDTD.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartDocument.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartElement.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartEntity.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartInstruction.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartPrefixMapping.java
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/jxMacro-output.xml
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/jxMacro.xml
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/JXTemplateGenerator.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/JXTemplateGenerator.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/JXTemplateGenerator.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/JXTemplateGenerator.java
Fri Feb 25 08:16:53 2005
@@ -37,7 +37,6 @@
import org.apache.cocoon.template.jxtg.script.ScriptManager;
import org.apache.cocoon.template.jxtg.script.event.Event;
import org.apache.cocoon.template.jxtg.script.event.StartDocument;
-import org.apache.cocoon.template.jxtg.script.event.StartElement;
import org.apache.cocoon.xml.XMLConsumer;
import org.apache.excalibur.source.SourceValidity;
import org.xml.sax.SAXException;
@@ -114,11 +113,10 @@
*/
public void generate() throws IOException, SAXException,
ProcessingException {
- performGeneration(this.xmlConsumer, null, this.startDocument, null);
+ performGeneration(this.xmlConsumer, this.startDocument, null);
}
- public void performGeneration(final XMLConsumer consumer,
- StartElement macroCall, Event startEvent,
Event endEvent)
+ public void performGeneration(final XMLConsumer consumer, Event
startEvent, Event endEvent)
throws SAXException {
((Map)expressionContext.get("cocoon")).put("consumer", consumer);
Invoker.execute(this.xmlConsumer, this.expressionContext,
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/TransformerAdapter.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/TransformerAdapter.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/TransformerAdapter.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/TransformerAdapter.java
Fri Feb 25 08:16:53 2005
@@ -53,7 +53,7 @@
public void endDocument() throws SAXException {
super.endDocument();
- gen.performGeneration(gen.getConsumer(), null, getStartEvent(),
null);
+ gen.performGeneration(gen.getConsumer(), getStartEvent(), null);
}
void setConsumer(XMLConsumer consumer) {
Added:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/MacroContext.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/MacroContext.java?view=auto&rev=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/MacroContext.java
(added)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/MacroContext.java
Fri Feb 25 08:16:53 2005
@@ -0,0 +1,33 @@
+/*
+ * Created on 2005-02-25
+ */
+package org.apache.cocoon.template.jxtg.instruction;
+
+import org.apache.cocoon.template.jxtg.script.event.Event;
+
+/**
+ * @author lgawron
+ */
+public class MacroContext {
+ private final String macroQName;
+ private final Event bodyStart;
+ private final Event bodyEnd;
+
+ public MacroContext(String macroQName, Event bodyStart, Event bodyEnd) {
+ this.macroQName = macroQName;
+ this.bodyStart = bodyStart;
+ this.bodyEnd = bodyEnd;
+ }
+
+ public Event getBodyEnd() {
+ return bodyEnd;
+ }
+
+ public Event getBodyStart() {
+ return bodyStart;
+ }
+
+ public String getMacroQName() {
+ return macroQName;
+ }
+}
Propchange:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/MacroContext.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/MacroContext.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartCall.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartCall.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartCall.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartCall.java
Fri Feb 25 08:16:53 2005
@@ -21,30 +21,39 @@
import java.util.Stack;
import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.template.jxtg.environment.ErrorHolder;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.expression.JXTExpression;
import org.apache.cocoon.template.jxtg.script.Invoker;
import org.apache.cocoon.template.jxtg.script.event.AttributeEvent;
+import org.apache.cocoon.template.jxtg.script.event.Characters;
import org.apache.cocoon.template.jxtg.script.event.Event;
+import org.apache.cocoon.template.jxtg.script.event.IgnorableWhitespace;
import org.apache.cocoon.template.jxtg.script.event.StartElement;
import org.apache.cocoon.template.jxtg.script.event.StartInstruction;
+import org.apache.cocoon.template.jxtg.script.event.TextEvent;
import org.apache.cocoon.xml.XMLConsumer;
+import org.apache.commons.lang.StringUtils;
import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
public class StartCall extends StartInstruction {
-// private JXTExpression macroName;
+ private Object macro;
+ private JXTExpression targetNamespace;
private Map parameters;
- private StartElement body;
- private StartDefine definition;
+ private Event body;
- public StartCall(StartDefine definition, StartElement body)
+ public StartCall(StartDefine definition, StartElement startElement)
throws SAXException {
- super(body.getLocation());
+ super(startElement);
this.parameters = new HashMap();
- setBody(body);
+ setBody(startElement);
+ setNext(startElement.getNext());
setDefinition(definition);
- Iterator i = this.body.getAttributeEvents().iterator();
+ Iterator i = startElement.getAttributeEvents().iterator();
while (i.hasNext()) {
AttributeEvent attrEvent = (AttributeEvent) i.next();
addParameterInstance(attrEvent);
@@ -54,20 +63,25 @@
public StartCall(StartElement raw, Attributes attrs, Stack stack)
throws SAXException {
super(raw);
-// Locator locator = getLocation();
-// String name = attrs.getValue("macro");
-// if (name == null) {
-// throw new SAXParseException("if: \"test\" is required", locator,
-// null);
-// }
-// this.macroName = JXTExpression.compileExpr(name, "call: \"macro\": ",
-// locator);
this.parameters = new HashMap();
+ Locator locator = getLocation();
+
+ String name = attrs.getValue("macro");
+ if (name == null) {
+ throw new SAXParseException("if: \"test\" is required", locator,
+ null);
+ }
+ this.macro = JXTExpression.compileExpr(name, "call: \"macro\": ",
+ locator);
+
+ String namespace = StringUtils.defaultString(attrs
+ .getValue("targetNamespace"));
+ this.targetNamespace = JXTExpression.compileExpr(namespace,
+ "call: \"targetNamespace\": ", locator);
}
public void setDefinition(StartDefine definition) {
- this.definition = definition;
- setEndInstruction(definition.getEndInstruction());
+ this.macro = definition;
}
public void addParameterInstance(AttributeEvent attributeEvent)
@@ -79,7 +93,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
Map attributeMap = new HashMap();
Iterator i = parameters.keySet().iterator();
@@ -97,7 +111,9 @@
macro.put("arguments", attributeMap);
localExpressionContext.put("macro", macro);
- Iterator iter = this.definition.getParameters().entrySet().iterator();
+ StartDefine definition = resolveMacroDefinition(expressionContext,
+ executionContext);
+ Iterator iter = definition.getParameters().entrySet().iterator();
while (iter.hasNext()) {
Map.Entry e = (Map.Entry) iter.next();
String key = (String) e.getKey();
@@ -109,18 +125,120 @@
}
localExpressionContext.put(key, val);
}
- Invoker.call(getLocation(), this.body, consumer,
- localExpressionContext, executionContext, definition.getBody(),
- definition.getEndInstruction());
- // ev = startElement.getEndElement().getNext();
- return getNext();
+
+ Event macroBodyStart = getNext();
+ Event macroBodyEnd = null;
+
+ if (getEndInstruction() != null)
+ macroBodyEnd = getEndInstruction();
+ else
+ macroBodyEnd = getStartElement().getEndElement();
+
+ MacroContext newMacroContext = new MacroContext(definition.getQname(),
+ macroBodyStart, macroBodyEnd);
+ try {
+ Invoker.execute(consumer, localExpressionContext, executionContext,
+ newMacroContext, definition.getBody(), definition
+ .getEndInstruction());
+ } catch (SAXParseException exc) {
+ throw new SAXParseException(newMacroContext.getMacroQName() + ": "
+ + exc.getMessage(), location, exc);
+ }
+
+ if (getEndInstruction() != null)
+ return getEndInstruction().getNext();
+ else
+ return getStartElement().getEndElement().getNext();
+ }
+
+ /**
+ * @param executionContext
+ * @return
+ * @throws SAXParseException
+ */
+ private StartDefine resolveMacroDefinition(
+ ExpressionContext expressionContext,
+ ExecutionContext executionContext) throws SAXParseException {
+ if (this.macro instanceof StartDefine)
+ return (StartDefine) macro;
+
+ Object macroName;
+ Object namespace;
+ JXTExpression macroNameExpression = (JXTExpression) macro;
+ try {
+ macroName = macroNameExpression.getValue(expressionContext);
+ namespace = targetNamespace.getValue(expressionContext);
+ if (namespace == null)
+ namespace = "";
+ } catch (Exception e) {
+ throw new SAXParseException(e.getMessage(), getLocation(), e);
+ } catch (Error err) {
+ throw new SAXParseException(err.getMessage(), getLocation(),
+ new ErrorHolder(err));
+ }
+ StartDefine definition = (StartDefine) executionContext
+ .getDefinitions()
+ .get("{" + namespace.toString() + "}" + macroName.toString());
+ if (definition == null)
+ throw new SAXParseException("no macro definition: " + macroName,
+ getLocation());
+ return definition;
}
/**
* @param startElement
*/
- public void setBody(StartElement startElement) {
- this.body = startElement;
- setNext(startElement.getEndElement().getNext());
+ public void setBody(Event body) {
+ this.body = body;
+
+ }
+
+ public void endNotify() throws SAXException {
+ // FIXME: copy/pasted from StartDefine (almost)
+ Event e = next;
+ boolean params = true;
+ while (e != this.getEndInstruction()) {
+ if (e instanceof StartParameterInstance) {
+ StartParameterInstance startParamInstance =
(StartParameterInstance) e;
+ if (!params) {
+ throw new SAXParseException(
+ "<parameter value> not allowed here: \""
+ + startParamInstance.name + "\"",
+ startParamInstance.getLocation(), null);
+ }
+ Object prev = this.parameters.put(startParamInstance.name,
+ startParamInstance);
+ if (prev != null) {
+ throw new SAXParseException("duplicate parameter value: \""
+ + startParamInstance.name + "\"", location, null);
+ }
+ e = startParamInstance.getEndInstruction();
+ } else if (e instanceof IgnorableWhitespace) {
+ // EMPTY
+ } else if (e instanceof Characters) {
+ // check for whitespace
+ char[] ch = ((TextEvent) e).getRaw();
+ int len = ch.length;
+ for (int i = 0; i < len; i++) {
+ if (!Character.isWhitespace(ch[i])) {
+ if (params) {
+ params = false;
+ this.body = e;
+ }
+ break;
+ }
+ }
+ } else {
+ if (params) {
+ params = false;
+ this.body = e;
+ }
+ }
+ e = e.getNext();
+ }
+ if (this.body == null) {
+ this.body = this.getEndInstruction();
+ }
+ setNext(this.body);
}
}
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartChoose.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartChoose.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartChoose.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartChoose.java
Fri Feb 25 08:16:53 2005
@@ -39,7 +39,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
StartWhen startWhen = this.firstChoice;
while (startWhen != null) {
@@ -57,7 +57,7 @@
}
if (result) {
Invoker.execute(consumer, expressionContext, executionContext,
- macroCall, startWhen.getNext(),
+ macroContext, startWhen.getNext(),
startWhen.getEndInstruction());
break;
}
@@ -65,7 +65,7 @@
}
if (startWhen == null && this.otherwise != null) {
Invoker.execute(consumer, expressionContext, executionContext,
- macroCall, this.otherwise.getNext(),
+ macroContext, this.otherwise.getNext(),
this.otherwise.getEndInstruction());
}
return getEndInstruction().getNext();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartComment.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartComment.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartComment.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartComment.java
Fri Feb 25 08:16:53 2005
@@ -41,13 +41,13 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
// Parse the body of the comment
NodeList nodeList =
Invoker.toDOMNodeList("comment", this,
expressionContext, executionContext,
- macroCall);
+ macroContext);
// JXPath doesn't handle NodeList, so convert it to an array
int len = nodeList.getLength();
final StringBuffer buf = new StringBuffer();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartDefine.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartDefine.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartDefine.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartDefine.java
Fri Feb 25 08:16:53 2005
@@ -63,7 +63,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
executionContext.getDefinitions().put(this.qname, this);
return getEndInstruction().getNext();
@@ -127,7 +127,7 @@
return body;
}
- private String getQname() {
+ public String getQname() {
return qname;
}
}
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartEval.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartEval.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartEval.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartEval.java
Fri Feb 25 08:16:53 2005
@@ -44,7 +44,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
try {
Object val = this.value.getNode(expressionContext);
@@ -52,8 +52,11 @@
throw new Exception("macro invocation required instead of: " +
val);
}
StartElement call = (StartElement) val;
+
+ //FIXME: eval does not allow to call macro providing macro body
+ MacroContext newMacroContext = new MacroContext( call.getQname(),
null, null );
Invoker.execute(consumer, expressionContext, executionContext,
- call, call.getNext(), call.getEndElement());
+ newMacroContext, call.getNext(),
call.getEndElement());
} catch (Exception exc) {
throw new SAXParseException(exc.getMessage(), getLocation(), exc);
} catch (Error err) {
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartEvalBody.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartEvalBody.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartEvalBody.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartEvalBody.java
Fri Feb 25 08:16:53 2005
@@ -36,11 +36,11 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
try {
Invoker.execute(consumer, expressionContext, executionContext,
- null, macroCall.getNext(),
macroCall.getEndElement());
+ null, macroContext.getBodyStart(),
macroContext.getBodyEnd());
} catch (Exception exc) {
throw new SAXParseException(exc.getMessage(), getLocation(), exc);
} catch (Error err) {
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartForEach.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartForEach.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartForEach.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartForEach.java
Fri Feb 25 08:16:53 2005
@@ -74,7 +74,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
Iterator iter = null;
int begin, end, step;
@@ -131,7 +131,7 @@
status.setLast((i == end || !iter.hasNext()));
}
Invoker.execute(consumer, localExpressionContext, executionContext,
- macroCall, getNext(), getEndInstruction());
+ macroContext, getNext(), getEndInstruction());
// Skip rows
skipCounter = step;
while (--skipCounter > 0 && iter.hasNext()) {
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartFormatDate.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartFormatDate.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartFormatDate.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartFormatDate.java
Fri Feb 25 08:16:53 2005
@@ -69,7 +69,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
try {
String result = format(expressionContext);
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartFormatNumber.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartFormatNumber.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartFormatNumber.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartFormatNumber.java
Fri Feb 25 08:16:53 2005
@@ -97,7 +97,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
try {
String result = format(expressionContext);
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartIf.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartIf.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartIf.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartIf.java
Fri Feb 25 08:16:53 2005
@@ -51,7 +51,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
Object val;
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartImport.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartImport.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartImport.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartImport.java
Fri Feb 25 08:16:53 2005
@@ -78,7 +78,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
String uri;
AttributeEvent e = this.uri;
@@ -132,7 +132,7 @@
}
try {
Invoker.execute(consumer, expressionContext, executionContext,
- macroCall, doc.getNext(), doc.getEndDocument());
+ macroContext, doc.getNext(), doc.getEndDocument());
} catch (Exception exc) {
throw new SAXParseException(
"Exception occurred in imported
template " + uri
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartOut.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartOut.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartOut.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartOut.java
Fri Feb 25 08:16:53 2005
@@ -53,7 +53,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
Object val;
try {
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartParameterInstance.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartParameterInstance.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartParameterInstance.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartParameterInstance.java
Fri Feb 25 08:16:53 2005
@@ -59,7 +59,7 @@
}
public StartParameterInstance(AttributeEvent event) {
- super( (Locator) null );
+ super((Locator) null);
this.name = event.getLocalName();
this.value = event;
}
@@ -70,33 +70,38 @@
public Object getValue(ExpressionContext expressionContext)
throws SAXException {
- if (this.value instanceof CopyAttribute) {
+ if (this.value instanceof JXTExpression)
+ return getExpressionValue((JXTExpression) this.value,
+ expressionContext);
+ else if (this.value instanceof CopyAttribute) {
CopyAttribute copy = (CopyAttribute) this.value;
return copy.getValue();
} else if (this.value instanceof SubstituteAttribute) {
SubstituteAttribute substEvent = (SubstituteAttribute) this.value;
if (substEvent.getSubstitutions().size() == 1
- && substEvent.getSubstitutions().get(0) instanceof
JXTExpression) {
- JXTExpression expr = (JXTExpression) substEvent
- .getSubstitutions().get(0);
- Object val;
- try {
- val = expr.getNode(expressionContext);
- } catch (Exception e) {
- throw new SAXParseException(e.getMessage(), getLocation(),
- e);
- } catch (Error err) {
- throw new SAXParseException(err.getMessage(),
- getLocation(), new ErrorHolder(err));
- }
- return val != null ? val : "";
- } else {
+ && substEvent.getSubstitutions().get(0) instanceof
JXTExpression)
+ return getExpressionValue((JXTExpression) substEvent
+ .getSubstitutions().get(0), expressionContext);
+ else
return substEvent.getSubstitutions().toString(getLocation(),
expressionContext);
- }
+
} else {
throw new Error("this shouldn't have happened");
}
+ }
+ private Object getExpressionValue(JXTExpression expr,
+ ExpressionContext expressionContext) throws SAXException {
+ Object val;
+ try {
+ val = expr.getNode(expressionContext);
+ } catch (Exception e) {
+ throw new SAXParseException(e.getMessage(), getLocation(), e);
+ } catch (Error err) {
+ throw new SAXParseException(err.getMessage(), getLocation(),
+ new ErrorHolder(err));
+ }
+ return val != null ? val : "";
}
}
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartSet.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartSet.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartSet.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartSet.java
Fri Feb 25 08:16:53 2005
@@ -59,7 +59,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
Object value = null;
@@ -78,7 +78,7 @@
NodeList nodeList =
Invoker.toDOMNodeList("set", this,
expressionContext, executionContext,
- macroCall);
+ macroContext);
// JXPath doesn't handle NodeList, so convert it to an array
int len = nodeList.getLength();
Node[] nodeArr = new Node[len];
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartTemplate.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartTemplate.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartTemplate.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/instruction/StartTemplate.java
Fri Feb 25 08:16:53 2005
@@ -33,7 +33,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext, ExecutionContext
executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
// EMPTY
return getNext();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java
Fri Feb 25 08:16:53 2005
@@ -19,6 +19,7 @@
import org.apache.cocoon.template.jxtg.JXTemplateGenerator;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
import org.apache.cocoon.template.jxtg.environment.LocatorFacade;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.template.jxtg.instruction.StartCall;
import org.apache.cocoon.template.jxtg.instruction.StartDefine;
import org.apache.cocoon.template.jxtg.script.event.Event;
@@ -33,9 +34,7 @@
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.Attributes;
-import org.xml.sax.Locator;
import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.AttributesImpl;
public class Invoker {
@@ -43,7 +42,7 @@
public static void execute(final XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
Event ev = startEvent;
@@ -59,16 +58,16 @@
.getDefinitions().get(startElement.getQname());
if (def == null) {
ev = ev.execute(consumer, expressionContext,
- executionContext, macroCall, startEvent, endEvent);
+ executionContext, macroContext, startEvent,
endEvent);
continue;
}
StartCall call = new StartCall( def, startElement );
ev = call.execute(consumer, expressionContext,
- executionContext, macroCall, startEvent, endEvent);
+ executionContext, macroContext, startEvent, endEvent);
} else
ev = ev.execute(consumer, expressionContext, executionContext,
- macroCall, startEvent, endEvent);
+ macroContext, startEvent, endEvent);
}
}
@@ -110,28 +109,15 @@
streamer.stream(node);
}
- public static void call(Locator location, StartElement macroCall,
- final XMLConsumer consumer, ExpressionContext expressionContext,
- ExecutionContext executionContext, Event startEvent, Event
endEvent)
- throws SAXException {
- try {
- execute(consumer, expressionContext, executionContext, macroCall,
- startEvent, endEvent);
- } catch (SAXParseException exc) {
- throw new SAXParseException(macroCall.getLocalName() + ": "
- + exc.getMessage(), location, exc);
- }
- }
-
public static NodeList toDOMNodeList(String elementName,
StartInstruction si, ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall)
+ ExecutionContext executionContext, MacroContext macroContext)
throws SAXException {
DOMBuilder builder = new DOMBuilder();
builder.startDocument();
builder.startElement(JXTemplateGenerator.NS, elementName, elementName,
EMPTY_ATTRS);
- execute(builder, expressionContext, executionContext, macroCall, si
+ execute(builder, expressionContext, executionContext, macroContext, si
.getNext(), si.getEndInstruction());
builder.endElement(JXTemplateGenerator.NS, elementName, elementName);
builder.endDocument();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Parser.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Parser.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Parser.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Parser.java
Fri Feb 25 08:16:53 2005
@@ -68,6 +68,8 @@
.getName());
registerInstruction("formatDate", StartFormatDate.class.getName());
registerInstruction("comment", StartComment.class.getName());
+ registerInstruction("call", StartCall.class.getName());
+ registerInstruction("withParam",
StartParameterInstance.class.getName());
} catch (Exception e) {
// we'll do something more professional with that when the
configuration moves
// to the sitemap
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/Characters.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/Characters.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/Characters.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/Characters.java
Fri Feb 25 08:16:53 2005
@@ -23,6 +23,7 @@
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
import org.apache.cocoon.template.jxtg.expression.Literal;
import org.apache.cocoon.template.jxtg.expression.Subst;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.template.jxtg.script.Invoker;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
@@ -37,7 +38,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
Iterator iter = getSubstitutions().iterator();
while (iter.hasNext()) {
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndCDATA.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndCDATA.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndCDATA.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndCDATA.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -28,7 +29,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
consumer.endCDATA();
return getNext();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndDTD.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndDTD.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndDTD.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndDTD.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -29,7 +30,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
consumer.endDTD();
return getNext();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndDocument.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndDocument.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndDocument.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndDocument.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -28,7 +29,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
consumer.endDocument();
return getNext();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndElement.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndElement.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndElement.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndElement.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -35,7 +36,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
consumer.endElement(startElement.getNamespaceURI(), startElement
.getLocalName(), startElement.getRaw());
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndEntity.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndEntity.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndEntity.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndEntity.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -36,7 +37,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
consumer.endEntity( getName() );
return getNext();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndPrefixMapping.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndPrefixMapping.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndPrefixMapping.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/EndPrefixMapping.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -35,7 +36,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
consumer.endPrefixMapping(getPrefix());
return getNext();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/Event.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/Event.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/Event.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/Event.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -61,7 +62,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext,
ExecutionContext executionContext,
- StartElement macroCall, Event startEvent, Event
endEvent)
+ MacroContext macroContext, Event startEvent, Event
endEvent)
throws SAXException {
return getNext();
}
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/IgnorableWhitespace.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/IgnorableWhitespace.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/IgnorableWhitespace.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/IgnorableWhitespace.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -29,7 +30,7 @@
public Event execute(final XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
characters(expressionContext, executionContext, this,
new CharHandler() {
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/ProcessingInstruction.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/ProcessingInstruction.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/ProcessingInstruction.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/ProcessingInstruction.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -42,7 +43,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
consumer.processingInstruction(getTarget(), getData());
return getNext();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/SkippedEntity.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/SkippedEntity.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/SkippedEntity.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/SkippedEntity.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -35,7 +36,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
consumer.skippedEntity(getName());
return getNext();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartCDATA.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartCDATA.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartCDATA.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartCDATA.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -28,7 +29,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
consumer.startCDATA();
return getNext();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartDTD.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartDTD.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartDTD.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartDTD.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -48,7 +49,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
consumer.startDTD(getName(), getPublicId(), getSystemId());
return getNext();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartDocument.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartDocument.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartDocument.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartDocument.java
Fri Feb 25 08:16:53 2005
@@ -20,6 +20,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.apache.excalibur.source.SourceValidity;
import org.xml.sax.Locator;
@@ -81,7 +82,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
if (getEndDocument() != null)
consumer.startDocument();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartElement.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartElement.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartElement.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartElement.java
Fri Feb 25 08:16:53 2005
@@ -22,6 +22,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
import org.apache.cocoon.template.jxtg.expression.Substitutions;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
@@ -96,7 +97,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
Iterator i = getAttributeEvents().iterator();
AttributesImpl attrs = new AttributesImpl();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartEntity.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartEntity.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartEntity.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartEntity.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -35,7 +36,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
consumer.startEntity(getName());
return getNext();
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartInstruction.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartInstruction.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartInstruction.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartInstruction.java
Fri Feb 25 08:16:53 2005
@@ -29,7 +29,7 @@
this.startElement = startElement;
}
- private final StartElement startElement;
+ protected final StartElement startElement;
private EndInstruction endInstruction;
public EndInstruction getEndInstruction() {
@@ -42,5 +42,9 @@
public void endNotify() throws SAXException {
return;
+ }
+
+ public StartElement getStartElement() {
+ return startElement;
}
}
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartPrefixMapping.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartPrefixMapping.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartPrefixMapping.java
(original)
+++
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartPrefixMapping.java
Fri Feb 25 08:16:53 2005
@@ -17,6 +17,7 @@
import org.apache.cocoon.components.expression.ExpressionContext;
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
+import org.apache.cocoon.template.jxtg.instruction.MacroContext;
import org.apache.cocoon.xml.XMLConsumer;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -41,7 +42,7 @@
public Event execute(XMLConsumer consumer,
ExpressionContext expressionContext,
- ExecutionContext executionContext, StartElement macroCall,
+ ExecutionContext executionContext, MacroContext macroContext,
Event startEvent, Event endEvent) throws SAXException {
consumer.startPrefixMapping(getPrefix(), getUri());
return getNext();
Modified:
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java
(original)
+++
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java
Fri Feb 25 08:16:53 2005
@@ -23,6 +23,8 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.SitemapComponentTestCase;
import org.apache.cocoon.components.flow.FlowHelper;
+import org.apache.cocoon.xml.XMLUtils;
+import org.w3c.dom.Document;
public class JXTemplateGeneratorTestCase extends SitemapComponentTestCase {
private Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);
@@ -106,15 +108,19 @@
String inputURI = docBase + "jxMacro.xml";
String outputURI = docBase + "jxMacro-output.xml";
- assertEqual(load(outputURI), generate(JX, inputURI, EMPTY_PARAMS));
+ Document expected = load(outputURI);
+ getLogger().error( XMLUtils.serializeNode( expected ) );
+ Document actual = generate(JX, inputURI, EMPTY_PARAMS);
+ getLogger().error( XMLUtils.serializeNode( actual ) );
+ assertEqual( expected, actual );
}
- public void testJXDynamicMacro() throws Exception {
- String inputURI = docBase + "jxDynamicMacro.xml";
- String outputURI = docBase + "jxDynamicMacro-output.xml";
-
- assertEqual(load(outputURI), generate(JX, inputURI, EMPTY_PARAMS));
- }
+// public void testJXDynamicMacro() throws Exception {
+// String inputURI = docBase + "jxDynamicMacro.xml";
+// String outputURI = docBase + "jxDynamicMacro-output.xml";
+//
+// assertEqual(load(outputURI), generate(JX, inputURI, EMPTY_PARAMS));
+// }
public void testJXSet() throws Exception {
String inputURI = docBase + "jxSet.xml";
Modified:
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/jxMacro-output.xml
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/jxMacro-output.xml?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/jxMacro-output.xml
(original)
+++
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/jxMacro-output.xml
Fri Feb 25 08:16:53 2005
@@ -1,9 +1,13 @@
<?xml version="1.0"?>
-
<root>
- <m>
- <macroTest a="foo">
- <content b="3"/>
- </macroTest>
- </m>
+ <m>
+ <macroTest a="foo">
+ <content b="3"/>
+ </macroTest>
+ </m>
+ <n>
+ <macroTest a="bar">
+ <content b="5"/>
+ </macroTest>
+ </n>
</root>
Modified:
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/jxMacro.xml
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/jxMacro.xml?view=diff&r1=155339&r2=155340
==============================================================================
---
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/jxMacro.xml
(original)
+++
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/jxMacro.xml
Fri Feb 25 08:16:53 2005
@@ -1,15 +1,21 @@
<?xml version="1.0"?>
-
<root xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
- <jx:macro name="d">
- <jx:parameter name="p"/>
- <macroTest a="${p}">
- <jx:evalBody/>
- </macroTest>
- </jx:macro>
- <m>
- <d p="foo">
- <content b="${1+2}"/>
- </d>
- </m>
+ <jx:macro name="d">
+ <jx:parameter name="p"/>
+ <macroTest a="${p}">
+ <jx:evalBody/>
+ </macroTest>
+ </jx:macro>
+ <m>
+ <d p="foo">
+ <content b="${1+2}"/>
+ </d>
+ </m>
+ <n>
+ <jx:set var="macroName" value="d"/>
+ <jx:call macro="${macroName}">
+ <jx:withParam name="p" value="bar"/>
+ <content b="${2+3}"/>
+ </jx:call>
+ </n>
</root>