List of usage examples for org.apache.commons.jxpath JXPathContext getVariables
public Variables getVariables()
From source file:com.discursive.jccook.collections.predicate.XPathPredicate.java
private void populateVariables(JXPathContext context) { Set keys = variables.keySet(); Iterator keyIter = keys.iterator(); while (keyIter.hasNext()) { String key = (String) keyIter.next(); context.getVariables().declareVariable(key, variables.get(key)); }//ww w. j a va 2s . c o m }
From source file:com.discursive.jccook.xml.jxpath.PlanetSearch.java
public void planetSearch() throws IOException, SAXException { List planets = new ArrayList(); InputStream input = getClass().getResourceAsStream("./planets.xml"); URL rules = getClass().getResource("./planet-digester-rules.xml"); Digester digester = DigesterLoader.createDigester(rules); digester.push(planets);/*from w w w . j a v a 2s.co m*/ digester.parse(input); System.out.println("Number of planets: " + planets.size()); System.out.println("Planet Name where radius > 5000"); JXPathContext context = JXPathContext.newContext(planets); Iterator iterator = context.iterate(".[@radius > 5000]/name"); while (iterator.hasNext()) { Object o = (Object) iterator.next(); System.out.println("Object: " + o); } System.out.println("Planet Name where a moon is named Deimos"); iterator = context.iterate("./moons[. = 'Deimos']/../name"); while (iterator.hasNext()) { String name = (String) iterator.next(); System.out.println("Planet Namet: " + name); } System.out.println("Planet where Helium percentage greater than 2"); iterator = context.iterate("./atmosphere/components/He[.>2]/../../.."); while (iterator.hasNext()) { Planet p = (Planet) iterator.next(); System.out.println("Planet: " + p.getName()); } System.out.println("All of the Moon Names"); iterator = context.iterate("./moons"); while (iterator.hasNext()) { String moon = (String) iterator.next(); context.getVariables().declareVariable("moonName", moon); String planet = (String) context.getValue("./moons[. = $moonName]/../name"); System.out.println("Moon: " + moon + ", \t\t\tPlanet: " + planet); } }
From source file:jp.co.opentone.bsol.framework.test.AbstractTestCase.java
/** * ???Excel????.//from w ww. ja v a 2 s . co m * <p> * ???? * <ul> * <li>Excel?</li> * <li>Excel????</li> * <li>Excel?</li> * <li>?????</li> * </ul> * </p> * @param sheetCount Excel? * @param sheetName Excel???? * @param sheetRow Excel????? * @param expected * @param actual Excel * @throws Exception ?? */ @SuppressWarnings("unchecked") protected void assertExcel(int sheetCount, String sheetName, int sheetRow, List<Object> expected, byte[] actual) throws Exception { // JXPathContext? DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new ByteArrayInputStream(actual)); JXPathContext context = JXPathContext.newContext(document); // ???? context.registerNamespace("NS", "urn:schemas-microsoft-com:office:spreadsheet"); // ?TEST assertEquals(sheetCount, ((Double) context.getValue("count(/NS:Workbook/NS:Worksheet)")).intValue()); // ?TEST?? assertEquals(sheetName, context.getValue("/NS:Workbook/NS:Worksheet/@ss:Name")); // ?TEST assertEquals(sheetRow + 1, Integer .parseInt((String) context.getValue("/NS:Workbook/NS:Worksheet/NS:Table/@ss:ExpandedRowCount"))); // Row?? int rows = ((Double) context.getValue("count(/NS:Workbook/NS:Worksheet/NS:Table/NS:Row)")).intValue(); assertEquals(sheetRow + 1, rows); // ???? for (int i = 1; i <= rows; i++) { // XPath?? context.getVariables().declareVariable("index", i); // Pointer?????JXPathContext? Pointer pointer = context.getPointer("/NS:Workbook/NS:Worksheet/NS:Table/NS:Row[$index]"); JXPathContext contextRow = context.getRelativeContext(pointer); contextRow.registerNamespace("NS", "urn:schemas-microsoft-com:office:spreadsheet"); List<Object> expectedRow = (List<Object>) expected.get(i - 1); // Column?? int columns = ((Double) contextRow.getValue("count(NS:Cell)")).intValue(); // ???? for (int j = 1; j <= columns; j++) { // Pointer?????JXPathContext? contextRow.getVariables().declareVariable("index", j); Pointer pointerColumn = contextRow.getPointer("NS:Cell[$index]"); JXPathContext contextColumn = contextRow.getRelativeContext(pointerColumn); // String actualColumn = (String) contextColumn.getValue("NS:Data"); // actualColumn?String?????String?? String expectedColumn; Object o = expectedRow.get(j - 1); if (o == null) { expectedColumn = ""; } else if (o instanceof Date) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); expectedColumn = dateFormat.format(o); } else { expectedColumn = o.toString(); } // ?TEST? assertEquals(expectedColumn, actualColumn); } } }
From source file:org.apache.cocoon.generation.JXTemplateGenerator.java
private void execute(final XMLConsumer consumer, MyJexlContext jexlContext, JXPathContext jxpathContext, StartElement macroCall, Event startEvent, Event endEvent) throws SAXException { Event ev = startEvent;//w ww .java2 s . c o m LocationFacade loc = new LocationFacade(ev.location); consumer.setDocumentLocator(loc); while (ev != endEvent) { loc.setDocumentLocation(ev.location); if (ev instanceof Characters) { TextEvent text = (TextEvent) ev; Iterator iter = text.substitutions.iterator(); while (iter.hasNext()) { Object subst = iter.next(); char[] chars; if (subst instanceof char[]) { chars = (char[]) subst; } else { JXTExpression expr = (JXTExpression) subst; try { Object val = getNode(expr, jexlContext, jxpathContext); if (val instanceof Node) { executeDOM(consumer, jexlContext, jxpathContext, (Node) val); continue; } else if (val instanceof NodeList) { NodeList nodeList = (NodeList) val; int len = nodeList.getLength(); for (int i = 0; i < len; i++) { Node n = nodeList.item(i); executeDOM(consumer, jexlContext, jxpathContext, n); } continue; } else if (val instanceof Node[]) { Node[] nodeList = (Node[]) val; int len = nodeList.length; for (int i = 0; i < len; i++) { Node n = nodeList[i]; executeDOM(consumer, jexlContext, jxpathContext, n); } continue; } else if (val instanceof XMLizable) { ((XMLizable) val).toSAX(new IncludeXMLConsumer(consumer)); continue; } chars = val != null ? val.toString().toCharArray() : ArrayUtils.EMPTY_CHAR_ARRAY; } catch (Exception e) { throw new JXTException(e.getMessage(), ev.location, e); } } consumer.characters(chars, 0, chars.length); } } else if (ev instanceof EndElement) { EndElement endElement = (EndElement) ev; StartElement startElement = endElement.startElement; StartDefine def = (StartDefine) definitions.get(startElement.qname); if (def == null) { consumer.endElement(startElement.namespaceURI, startElement.localName, startElement.raw); namespaces.leaveScope(consumer); } } else if (ev instanceof EndPrefixMapping) { EndPrefixMapping endPrefixMapping = (EndPrefixMapping) ev; namespaces.removeDeclaration(endPrefixMapping.prefix); } else if (ev instanceof IgnorableWhitespace) { TextEvent text = (TextEvent) ev; characters(jexlContext, jxpathContext, text, new CharHandler() { public void characters(char[] ch, int offset, int len) throws SAXException { consumer.ignorableWhitespace(ch, offset, len); } }); } else if (ev instanceof SkippedEntity) { SkippedEntity skippedEntity = (SkippedEntity) ev; consumer.skippedEntity(skippedEntity.name); } else if (ev instanceof StartIf) { StartIf startIf = (StartIf) ev; Object val; try { val = getValue(startIf.test, jexlContext, jxpathContext, Boolean.TRUE); } catch (Exception e) { throw new JXTException(e.getMessage(), ev.location, e); } boolean result = false; if (val instanceof Boolean) { result = ((Boolean) val).booleanValue(); } else { result = (val != null); } if (!result) { ev = startIf.endInstruction.next; continue; } } else if (ev instanceof StartForEach) { StartForEach startForEach = (StartForEach) ev; final Object items = startForEach.items; Iterator iter = null; int begin, end, step; String var, varStatus; try { if (items != null) { JXTExpression expr = (JXTExpression) items; if (expr.compiledExpression instanceof CompiledExpression) { CompiledExpression compiledExpression = (CompiledExpression) expr.compiledExpression; Object val = compiledExpression.getPointer(jxpathContext, expr.raw).getNode(); // FIXME: workaround for JXPath bug iter = val instanceof NativeArray ? new JSIntrospector.NativeArrayIterator((NativeArray) val) : compiledExpression.iteratePointers(jxpathContext); } else if (expr.compiledExpression instanceof Expression) { Expression e = (Expression) expr.compiledExpression; Object result = e.evaluate(jexlContext); if (result != null) { iter = Introspector.getUberspect().getIterator(result, new Info(ev.location.getURI(), ev.location.getLineNumber(), ev.location.getColumnNumber())); } if (iter == null) { iter = EMPTY_ITER; } } else { // literal value iter = new Iterator() { Object val = items; public boolean hasNext() { return val != null; } public Object next() { Object res = val; val = null; return res; } public void remove() { // EMPTY } }; } } else { iter = NULL_ITER; } begin = startForEach.begin == null ? 0 : getIntValue(startForEach.begin, jexlContext, jxpathContext); end = startForEach.end == null ? Integer.MAX_VALUE : getIntValue(startForEach.end, jexlContext, jxpathContext); step = startForEach.step == null ? 1 : getIntValue(startForEach.step, jexlContext, jxpathContext); var = getStringValue(startForEach.var, jexlContext, jxpathContext); varStatus = getStringValue(startForEach.varStatus, jexlContext, jxpathContext); } catch (Exception exc) { throw new JXTException(exc.getMessage(), ev.location, exc); } MyJexlContext localJexlContext = new MyJexlContext(jexlContext); MyVariables localJXPathVariables = new MyVariables((MyVariables) jxpathContext.getVariables()); int i = 0; // Move to the begin row while (i < begin && iter.hasNext()) { iter.next(); i++; } LoopTagStatus status = null; if (varStatus != null) { status = new LoopTagStatus(); status.begin = begin; status.end = end; status.step = step; status.first = true; localJexlContext.put(varStatus, status); localJXPathVariables.declareVariable(varStatus, status); } int skipCounter, count = 1; JXPathContext localJXPathContext = null; while (i <= end && iter.hasNext()) { Object value = iter.next(); if (value instanceof Pointer) { Pointer ptr = (Pointer) value; localJXPathContext = jxpathContext.getRelativeContext(ptr); localJXPathContext.setNamespaceContextPointer(new NamespacesTablePointer(namespaces)); try { value = ptr.getNode(); } catch (Exception exc) { throw new JXTException(exc.getMessage(), ev.location, null); } } else { localJXPathContext = jxpathContextFactory.newContext(jxpathContext, value); localJXPathContext.setNamespaceContextPointer(new NamespacesTablePointer(namespaces)); } localJXPathContext.setVariables(localJXPathVariables); if (var != null) { localJexlContext.put(var, value); } if (status != null) { status.index = i; status.count = count; status.first = i == begin; status.current = value; status.last = (i == end || !iter.hasNext()); } execute(consumer, localJexlContext, localJXPathContext, macroCall, startForEach.next, startForEach.endInstruction); // Skip rows skipCounter = step; while (--skipCounter > 0 && iter.hasNext()) { iter.next(); } // Increase index i += step; count++; } ev = startForEach.endInstruction.next; continue; } else if (ev instanceof StartChoose) { StartChoose startChoose = (StartChoose) ev; StartWhen startWhen = startChoose.firstChoice; while (startWhen != null) { Object val; try { val = getValue(startWhen.test, jexlContext, jxpathContext, Boolean.TRUE); } catch (Exception e) { throw new JXTException(e.getMessage(), ev.location, e); } boolean result; if (val instanceof Boolean) { result = ((Boolean) val).booleanValue(); } else { result = (val != null); } if (result) { execute(consumer, jexlContext, jxpathContext, macroCall, startWhen.next, startWhen.endInstruction); break; } startWhen = startWhen.nextChoice; } if (startWhen == null && startChoose.otherwise != null) { execute(consumer, jexlContext, jxpathContext, macroCall, startChoose.otherwise.next, startChoose.otherwise.endInstruction); } ev = startChoose.endInstruction.next; continue; } else if (ev instanceof StartSet) { StartSet startSet = (StartSet) ev; Object value = null; String var = null; try { if (startSet.var != null) { var = getStringValue(startSet.var, jexlContext, jxpathContext); } if (startSet.value != null) { value = getNode(startSet.value, jexlContext, jxpathContext); } } catch (Exception exc) { throw new JXTException(exc.getMessage(), ev.location, exc); } if (value == null) { NodeList nodeList = toDOMNodeList("set", startSet, jexlContext, macroCall); // JXPath doesn't handle NodeList, so convert it to an array int len = nodeList.getLength(); Node[] nodeArr = new Node[len]; for (int i = 0; i < len; i++) { nodeArr[i] = nodeList.item(i); } value = nodeArr; } if (var != null) { jxpathContext.getVariables().declareVariable(var, value); jexlContext.put(var, value); } ev = startSet.endInstruction.next; continue; } else if (ev instanceof StartElement) { StartElement startElement = (StartElement) ev; StartDefine def = (StartDefine) definitions.get(startElement.qname); if (def != null) { Map attributeMap = new HashMap(); Iterator i = startElement.attributeEvents.iterator(); while (i.hasNext()) { String attributeName; Object attributeValue; AttributeEvent attrEvent = (AttributeEvent) i.next(); attributeName = attrEvent.localName; if (attrEvent instanceof CopyAttribute) { CopyAttribute copy = (CopyAttribute) attrEvent; attributeValue = copy.value; } else if (attrEvent instanceof SubstituteAttribute) { SubstituteAttribute substEvent = (SubstituteAttribute) attrEvent; if (substEvent.substitutions.size() == 1 && substEvent.substitutions.get(0) instanceof JXTExpression) { JXTExpression expr = (JXTExpression) substEvent.substitutions.get(0); Object val; try { val = getNode(expr, jexlContext, jxpathContext); } catch (Exception e) { throw new JXTException(e.getMessage(), ev.location, e); } attributeValue = val != null ? val : ""; } else { StringBuffer buf = new StringBuffer(); Iterator iterSubst = substEvent.substitutions.iterator(); while (iterSubst.hasNext()) { Subst subst = (Subst) iterSubst.next(); if (subst instanceof Literal) { Literal lit = (Literal) subst; buf.append(lit.value); } else if (subst instanceof JXTExpression) { JXTExpression expr = (JXTExpression) subst; Object val; try { val = getValue(expr, jexlContext, jxpathContext); } catch (Exception e) { throw new JXTException(e.getMessage(), ev.location, e); } buf.append(val != null ? val.toString() : ""); } } attributeValue = buf.toString(); } } else { throw new Error("this shouldn't have happened"); } attributeMap.put(attributeName, attributeValue); } MyVariables parent = (MyVariables) jxpathContext.getVariables(); MyVariables vars = new MyVariables(parent); MyJexlContext localJexlContext = new MyJexlContext(jexlContext); HashMap macro = new HashMap(); macro.put("body", startElement); macro.put("arguments", attributeMap); localJexlContext.put("macro", macro); vars.declareVariable("macro", macro); Iterator iter = def.parameters.entrySet().iterator(); while (iter.hasNext()) { Map.Entry e = (Map.Entry) iter.next(); String key = (String) e.getKey(); StartParameter startParam = (StartParameter) e.getValue(); Object default_ = startParam.default_; Object val = attributeMap.get(key); if (val == null) { val = default_; } localJexlContext.put(key, val); vars.declareVariable(key, val); } JXPathContext localJXPathContext = jxpathContextFactory.newContext(null, jxpathContext.getContextBean()); localJXPathContext.setNamespaceContextPointer(new NamespacesTablePointer(namespaces)); localJXPathContext.setVariables(vars); call(ev.location, startElement, consumer, localJexlContext, localJXPathContext, def.body, def.endInstruction); ev = startElement.endElement.next; continue; } Iterator i = startElement.attributeEvents.iterator(); AttributesImpl attrs = new AttributesImpl(); while (i.hasNext()) { AttributeEvent attrEvent = (AttributeEvent) i.next(); if (attrEvent instanceof CopyAttribute) { CopyAttribute copy = (CopyAttribute) attrEvent; attrs.addAttribute(copy.namespaceURI, copy.localName, copy.raw, copy.type, copy.value); } else if (attrEvent instanceof SubstituteAttribute) { StringBuffer buf = new StringBuffer(); SubstituteAttribute substEvent = (SubstituteAttribute) attrEvent; Iterator iterSubst = substEvent.substitutions.iterator(); while (iterSubst.hasNext()) { Subst subst = (Subst) iterSubst.next(); if (subst instanceof Literal) { Literal lit = (Literal) subst; buf.append(lit.value); } else if (subst instanceof JXTExpression) { JXTExpression expr = (JXTExpression) subst; Object val; try { val = getValue(expr, jexlContext, jxpathContext); } catch (Exception e) { throw new JXTException(e.getMessage(), ev.location, e); } buf.append(val != null ? val.toString() : ""); } } attrs.addAttribute(attrEvent.namespaceURI, attrEvent.localName, attrEvent.raw, attrEvent.type, buf.toString()); } } namespaces.enterScope(consumer); consumer.startElement(startElement.namespaceURI, startElement.localName, startElement.raw, attrs); } else if (ev instanceof StartFormatNumber) { StartFormatNumber startFormatNumber = (StartFormatNumber) ev; try { String result = startFormatNumber.format(jexlContext, jxpathContext); if (result != null) { char[] chars = result.toCharArray(); consumer.characters(chars, 0, chars.length); } } catch (Exception e) { throw new JXTException(e.getMessage(), ev.location, e); } } else if (ev instanceof StartFormatDate) { StartFormatDate startFormatDate = (StartFormatDate) ev; try { String result = startFormatDate.format(jexlContext, jxpathContext); if (result != null) { char[] chars = result.toCharArray(); consumer.characters(chars, 0, chars.length); } } catch (Exception e) { throw new JXTException(e.getMessage(), ev.location, e); } } else if (ev instanceof StartPrefixMapping) { StartPrefixMapping startPrefixMapping = (StartPrefixMapping) ev; namespaces.addDeclaration(startPrefixMapping.prefix, startPrefixMapping.uri); } else if (ev instanceof StartComment) { StartComment startJXComment = (StartComment) ev; // Parse the body of the comment NodeList nodeList = toDOMNodeList("comment", startJXComment, jexlContext, macroCall); // JXPath doesn't handle NodeList, so convert it to an array int len = nodeList.getLength(); final StringBuffer buf = new StringBuffer(); Properties omit = XMLUtils.createPropertiesForXML(true); for (int i = 0; i < len; i++) { try { String str = XMLUtils.serializeNode(nodeList.item(i), omit); buf.append(StringUtils.substringAfter(str, ">")); // cut the XML header } catch (Exception e) { throw new JXTException(e.getMessage(), startJXComment.location, e); } } char[] chars = new char[buf.length()]; buf.getChars(0, chars.length, chars, 0); consumer.comment(chars, 0, chars.length); ev = startJXComment.endInstruction.next; continue; } else if (ev instanceof EndCDATA) { consumer.endCDATA(); } else if (ev instanceof EndDTD) { consumer.endDTD(); } else if (ev instanceof EndEntity) { consumer.endEntity(((EndEntity) ev).name); } else if (ev instanceof StartCDATA) { consumer.startCDATA(); } else if (ev instanceof StartDTD) { StartDTD startDTD = (StartDTD) ev; consumer.startDTD(startDTD.name, startDTD.publicId, startDTD.systemId); } else if (ev instanceof StartEntity) { consumer.startEntity(((StartEntity) ev).name); } else if (ev instanceof StartOut) { StartOut startOut = (StartOut) ev; Object val; try { val = getNode(startOut.compiledExpression, jexlContext, jxpathContext, startOut.lenient); if (val instanceof Node) { executeDOM(consumer, jexlContext, jxpathContext, (Node) val); } else if (val instanceof NodeList) { NodeList nodeList = (NodeList) val; int len = nodeList.getLength(); for (int i = 0; i < len; i++) { Node n = nodeList.item(i); executeDOM(consumer, jexlContext, jxpathContext, n); } } else if (val instanceof Node[]) { Node[] nodeList = (Node[]) val; int len = nodeList.length; for (int i = 0; i < len; i++) { Node n = nodeList[i]; executeDOM(consumer, jexlContext, jxpathContext, n); } } else if (val instanceof XMLizable) { ((XMLizable) val).toSAX(new IncludeXMLConsumer(consumer)); } else { char[] ch = val == null ? ArrayUtils.EMPTY_CHAR_ARRAY : val.toString().toCharArray(); consumer.characters(ch, 0, ch.length); } } catch (Exception e) { throw new JXTException(e.getMessage(), ev.location, e); } } else if (ev instanceof StartTemplate) { // EMPTY } else if (ev instanceof StartEval) { StartEval startEval = (StartEval) ev; JXTExpression expr = startEval.value; try { Object val = getNode(expr, jexlContext, jxpathContext); if (!(val instanceof StartElement)) { throw new Exception("macro invocation required instead of: " + val); } StartElement call = (StartElement) val; execute(consumer, jexlContext, jxpathContext, call, call.next, call.endElement); } catch (Exception exc) { throw new JXTException(exc.getMessage(), ev.location, exc); } ev = startEval.endInstruction.next; continue; } else if (ev instanceof StartEvalBody) { StartEvalBody startEval = (StartEvalBody) ev; try { execute(consumer, jexlContext, jxpathContext, null, macroCall.next, macroCall.endElement); } catch (Exception exc) { throw new JXTException(exc.getMessage(), ev.location, exc); } ev = startEval.endInstruction.next; continue; } else if (ev instanceof StartDefine) { StartDefine startDefine = (StartDefine) ev; definitions.put(startDefine.qname, startDefine); ev = startDefine.endInstruction.next; continue; } else if (ev instanceof StartImport) { StartImport startImport = (StartImport) ev; String uri; AttributeEvent e = startImport.uri; if (e instanceof CopyAttribute) { CopyAttribute copy = (CopyAttribute) e; uri = copy.value; } else { StringBuffer buf = new StringBuffer(); SubstituteAttribute substAttr = (SubstituteAttribute) e; Iterator i = substAttr.substitutions.iterator(); while (i.hasNext()) { Subst subst = (Subst) i.next(); if (subst instanceof Literal) { Literal lit = (Literal) subst; buf.append(lit.value); } else if (subst instanceof JXTExpression) { JXTExpression expr = (JXTExpression) subst; Object val; try { val = getValue(expr, jexlContext, jxpathContext); } catch (Exception exc) { throw new JXTException(exc.getMessage(), ev.location, exc); } buf.append(val != null ? val.toString() : ""); } } uri = buf.toString(); } Source input = null; StartDocument doc; try { input = resolver.resolveURI(uri); SourceValidity validity = null; synchronized (cache) { doc = (StartDocument) cache.get(input.getURI()); if (doc != null) { boolean recompile = false; if (doc.compileTime == null) { recompile = true; } else { int valid = doc.compileTime.isValid(); if (valid == SourceValidity.UNKNOWN) { validity = input.getValidity(); valid = doc.compileTime.isValid(validity); } if (valid != SourceValidity.VALID) { recompile = true; } } if (recompile) { doc = null; // recompile } } } if (doc == null) { Parser parser = new Parser(); // call getValidity before using the stream is faster if the source is a SitemapSource if (validity == null) { validity = input.getValidity(); } SourceUtil.parse(this.manager, input, parser); doc = parser.getStartEvent(); doc.compileTime = validity; synchronized (cache) { cache.put(input.getURI(), doc); } } } catch (Exception exc) { throw new JXTException(exc.getMessage(), ev.location, exc); } finally { resolver.release(input); } JXPathContext selectJXPath = jxpathContext; MyJexlContext selectJexl = jexlContext; if (startImport.select != null) { try { Object obj = getValue(startImport.select, jexlContext, jxpathContext); selectJXPath = jxpathContextFactory.newContext(null, obj); selectJXPath.setNamespaceContextPointer(new NamespacesTablePointer(namespaces)); selectJXPath.setVariables(variables); selectJexl = new MyJexlContext(jexlContext); fillContext(obj, selectJexl); } catch (Exception exc) { throw new JXTException(exc.getMessage(), ev.location, exc); } } try { execute(consumer, selectJexl, selectJXPath, macroCall, doc.next, doc.endDocument); } catch (Exception exc) { throw new JXTException( "Exception occurred in imported template " + uri + ": " + exc.getMessage(), ev.location, exc); } ev = startImport.endInstruction.next; continue; } else if (ev instanceof StartDocument) { if (((StartDocument) ev).endDocument != null) { // if this isn't a document fragment consumer.startDocument(); } } else if (ev instanceof EndDocument) { consumer.endDocument(); } else if (ev instanceof ProcessingInstruction) { ProcessingInstruction pi = (ProcessingInstruction) ev; consumer.processingInstruction(pi.target, pi.data); } ev = ev.next; } }
From source file:org.apache.cocoon.taglib.VarTagSupport.java
protected final Object getVariable(String name) { JXPathContext context = getVariableContext(); if (name.charAt(0) == '$') { return context.getValue(name); }/*from ww w. ja v a2 s . c o m*/ return context.getVariables().getVariable(name); //getRequest().getAttribute(name); }
From source file:org.apache.cocoon.taglib.VarTagSupport.java
/** * Register the name and object specified. * * @param name the name of the attribute to set * @param value the object to associate with the name *///from ww w . j a v a2 s . c o m protected final void setVariable(String name, Object value) { JXPathContext context = getVariableContext(); if (name.charAt(0) == '$') context.setValue(name, value); else context.getVariables().declareVariable(name, value); //getRequest().setAttribute(name, value); }
From source file:org.apache.cocoon.taglib.VarTagSupport.java
protected final void removeVariable(String name) { JXPathContext context = getVariableContext(); if (name.charAt(0) == '$') context.setValue(name, null);/*from ww w.ja v a 2s. c o m*/ else context.getVariables().declareVariable(name, null); //getRequest().removeAttribute(name); }
From source file:org.apache.cocoon.woody.transformation.WoodyPipelineConfig.java
/** * Creates and initializes a WoodyPipelineConfig object based on the passed * arguments of the setup() of the specific Pipeline-component. * /* w ww. j ava2 s. c o m*/ * @param objectModel the objectmodel as passed in the setup() * @param parameters the parameters as passed in the setup() * @return an instance of WoodyPipelineConfig initialized according to the * settings in the sitemap. */ public static WoodyPipelineConfig createConfig(Map objectModel, Parameters parameters) { // create and set the jxpathContext... Object flowContext = FlowHelper.getContextObject(objectModel); WebContinuation wk = FlowHelper.getWebContinuation(objectModel); JXPathContext jxpc = JXPathContext.newContext(flowContext); Variables vars = jxpc.getVariables(); vars.declareVariable("continuation", wk); Request request = ObjectModelHelper.getRequest(objectModel); vars.declareVariable("request", request); Session session = request.getSession(false); vars.declareVariable("session", session); vars.declareVariable("parameters", parameters); Locale localeParameter = null; String localeStr = parameters.getParameter("locale", null); if (localeStr != null) { localeParameter = I18nUtils.parseLocale(localeStr); } String attributeName = parameters.getParameter("attribute-name", null); String actionExpression = parameters.getParameter("form-action", null); String formMethod = parameters.getParameter("form-method", "POST"); //TODO (20031223 mpo)think about adding form-encoding for the Generator. // Note generator will also need some text to go on the submit-button? // Alternative to adding more here is to apply xinclude ? return new WoodyPipelineConfig(jxpc, request, localeParameter, attributeName, actionExpression, formMethod); }
From source file:org.chiba.xml.xforms.ui.state.UIElementStateUtil.java
public static ModelItem getModelItem(BindingElement owner) { JXPathContext context = owner.getModel().getDefaultInstance().getInstanceContext(); context.getVariables().declareVariable("contextmodel", owner.getModelId()); if (owner.isBound()) { return owner.getModel().getInstance(owner.getInstanceId()).getModelItem(owner.getLocationPath()); }//from ww w .j a v a2s.c o m context.getVariables().undeclareVariable("contextmodel"); return null; }
From source file:org.chiba.xml.xforms.xpath.XFormsExtensionFunctions.java
/** * The avg() Function [7.7.1]./* ww w . j a v a2 s .c om*/ * <p/> * Function avg returns the arithmetic average of the result of * converting the string-values of each node in the argument node-set * to a number. The sum is computed with sum(), and divided with div * by the value computed with count(). * * @param context the expression context. * @param nodeset the node-set. * @return the computed node-set average. */ public static double avg(ExpressionContext context, List nodeset) { if ((nodeset == null) || (nodeset.size() == 0)) { return Double.NaN; } JXPathContext rootContext = context.getJXPathContext(); rootContext.getVariables().declareVariable("nodeset", nodeset); Double value = (Double) rootContext.getValue("sum($nodeset) div count($nodeset)", Double.class); return value.doubleValue(); }