You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by cr...@apache.org on 2008/09/11 05:45:52 UTC
svn commit: r694101 [3/3] - in /forrest/trunk: etc/cocoon_upgrade/ lib/core/
lib/endorsed/ main/java/org/apache/forrest/locationmap/lm/
main/java/org/apache/forrest/util/ main/targets/ main/var/
main/webapp/WEB-INF/ main/webapp/WEB-INF/properties/ main...
Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/DispatcherHelper.java
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/DispatcherHelper.java?rev=694101&r1=694100&r2=694101&view=diff
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/DispatcherHelper.java (original)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/DispatcherHelper.java Wed Sep 10 20:45:49 2008
@@ -27,10 +27,10 @@
import javax.xml.transform.TransformerFactory;
import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.xml.XMLUtils;
import org.apache.cocoon.xml.dom.DOMBuilder;
import org.apache.excalibur.source.SourceNotFoundException;
+import org.apache.excalibur.source.SourceResolver;
import org.apache.forrest.dispatcher.lenya.xml.NamespaceHelper;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
@@ -53,7 +53,7 @@
private NamespaceHelper namespaceHelper;
- private ServiceManager manager;
+ private SourceResolver resolver;
/**
* Create a DOM representation of this dispatcher.
@@ -72,7 +72,7 @@
*/
public Document getDocument(String uri) throws Exception {
Document doc = org.apache.forrest.dispatcher.util.SourceUtil.readDOM(
- uri, this.manager);
+ uri, this.resolver);
if (doc != null) {
this.namespaceHelper = new NamespaceHelper(
DISPATCHER_NAMESPACE_URI, DISPATCHER_PREFIX, doc);
@@ -184,9 +184,9 @@
}
- public DispatcherHelper(ServiceManager manager)
+ public DispatcherHelper(SourceResolver resolver)
throws ParserConfigurationException {
- this.manager = manager;
+ this.resolver = resolver;
this.namespaceHelper = new NamespaceHelper(DISPATCHER_NAMESPACE_URI,
DISPATCHER_PREFIX, "foo");
}
Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/acting/RecursiveDirectoryTraversalAction.java
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/acting/RecursiveDirectoryTraversalAction.java?rev=694101&r1=694100&r2=694101&view=diff
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/acting/RecursiveDirectoryTraversalAction.java (original)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/acting/RecursiveDirectoryTraversalAction.java Wed Sep 10 20:45:49 2008
@@ -30,37 +30,35 @@
import org.apache.cocoon.environment.Redirector;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
+import org.apache.forrest.dispatcher.DispatcherException;
/**
- * Selects the first of a set of Sources that exists in the context.
+ * Calculates which location to return for a given directory.
+ * Here we are traversing the tree till we reach its root.
* <p>
- * For example, we could define a SourceExistsSelector with:
- *
- * <pre>
- *
- * <map:selector name="exists"
- * logger="sitemap.selector.source-exists"
- * src="org.apache.cocoon.selection.SourceExistsSelector" />
- *
- * </pre>
- *
- * And use it to build a PDF from XSL:FO or a higher-level XML format with:
- *
- * <pre>
+ * We are looking first in the request string and then using a
+ * fallback algorithm to find alternative fallbacks.
+ * <p>
+ * e.g. the request is "sample/index". First choice is to find:
+ * {$projectDir}sample/index{$projectExtension}<br>
+ * If the file does not exist we will try with the fallback file
+ * {$projectDir}sample/{$projectFallback}{$projectExtension}<br>
+ * The last file we will try in our example is
+ * {$projectDir}{$projectFallback}{$projectExtension}.<br>
+ * With this we have reached the root directory and we cannot find the
+ * requested file the action will return null.
+ * <p>
+ * <map:act type="RecursiveDirectoryTraversalAction"><br>
+ * <map:parameter value="{../1}{1}" name="request"/><br>
+ * <map:parameter value="{properties:dispatcher.theme}" name="projectFallback"/><br>
+ * <map:parameter value="{properties:dispatcher.theme-ext}"
+ * name="projectExtension"/><br>
+ * <map:parameter value="{properties:resources}structurer/url/"
+ * name="projectDir"/><br>
+ * <!-- url project-based theme-based = directory-based / parent-directory based (recursively) --><br>
+ * <map:location src="{uri}" /><br>
+ * </map:act>
*
- * <map:match pattern="**.pdf">
- * <map:select type="exists">
- * <map:when test="context/xdocs/{1}.fo">
- * <map:generate src="content/xdocs/{1}.fo" />
- * </map:when>
- * <map:otherwise>
- * <map:generate src="content/xdocs/{1}.xml" />
- * <map:transform src="stylesheets/document2fo.xsl" />
- * </map:otherwise>
- * </map:select>
- * <map:serialize type="fo2pdf" />
- *
- * </pre>
*/
public class RecursiveDirectoryTraversalAction extends ServiceableAction
implements ThreadSafe, Serviceable {
@@ -121,17 +119,13 @@
} else {
return null;
}
- } catch (MalformedURLException e) {
- getLogger().warn(
- "Selector URL '" + uri + "' is not a valid Source URL");
- return null;
- } catch (IOException e) {
+ } catch (DispatcherException e) {
getLogger().warn(
"Error reading from source '" + uri + "': "
+ e.getMessage());
return null;
} finally {
- resolver.release(src);
+ release(src);
}
}
@@ -159,14 +153,13 @@
* is overriding this view. This override can be used for directories
* (default.fv) and/or files (*.fv). That means that the root view is the
* default view as long no other view can be found in the requested child.
- * @throws IOException
- * @throws MalformedURLException
+ * @throws DispatcherException
*
*/
- private void computeResponseURI(String uri, Source src)
- throws MalformedURLException, IOException {
- src = resolver.resolveURI(uri);
- if (src.exists()) {
+ private void computeResponseURI(String uri, Source src) throws DispatcherException{
+ try {
+ src = resolver.resolveURI(uri);
+ if (src.exists()) {
this.map.put("uri", uri);
} else {
if (this.getRest().lastIndexOf("/") > -1) {
@@ -185,8 +178,23 @@
}
}
}
+ } catch (MalformedURLException e) {
+ throw new DispatcherException(e);
+ } catch (IOException e) {
+ throw new DispatcherException(e);
+ }finally{
+ release(src);
+ }
+
+ }
+ /**
+ * @see org.apache.excalibur.source.SourceFactory#release(org.apache.excalibur.source.Source)
+ */
+ public void release(Source source) {
+ if(source!=null){
+ resolver.release(source);
+ }
}
-
public void prepare(Parameters parameters, String src) {
this.setRequest(parameters.getParameter("request", src));
this.setProjectFallback(parameters.getParameter("projectFallback",
Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/acting/ResourceTypeAction.java
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/acting/ResourceTypeAction.java?rev=694101&r1=694100&r2=694101&view=diff
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/acting/ResourceTypeAction.java (original)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/acting/ResourceTypeAction.java Wed Sep 10 20:45:49 2008
@@ -17,22 +17,23 @@
package org.apache.forrest.dispatcher.acting;
/**
* Looks up a meta data file to determine which resource type should be returned.
- */
-/**
- * component declaration (lm and sitemap)
+ * Will parse the document and looks for the {$resourceTypeElement}.
+ * If found the action returns {$resourceTypeBase}{$resourceTypeElement}.
+ * <p>
+ * component declaration (lm and sitemap):<br>
* <action name="resourceTypeAction"
* src="org.apache.forrest.dispatcher.acting.ResourceTypeAction"/>
- *
- *pipline usage lm
-* <act type="resourceTypeAction">
-* <parameter value="{1}" name="request"/>
-* <parameter value="{project:content.xdocs}" name="projectDir"/>
-* <parameter value="lm://dispatcher.structurer.resourceType." name="resourceTypeBase"/>
-* <parameter value=".xml.meta" name="metaExtension"/>
-* <parameter value="resourceType" name="resourceTypeElement"/>
-* <parameter value="http://apache.org/cocoon/lenya/page-envelope/1.0" name="resourceTypeElementNS"/>
-* <!-- Meta data based -->
-* <location src="{uri}" />
+ *<p>
+ *pipline usage lm<br>
+* <act type="resourceTypeAction"><br>
+* <parameter value="{1}" name="request"/><br>
+* <parameter value="{project:content.xdocs}" name="projectDir"/><br>
+* <parameter value="lm://dispatcher.structurer.resourceType." name="resourceTypeBase"/><br>
+* <parameter value=".xml.meta" name="metaExtension"/><br>
+* <parameter value="resourceType" name="resourceTypeElement"/><br>
+* <parameter value="http://apache.org/cocoon/lenya/page-envelope/1.0" name="resourceTypeElementNS"/><br>
+* <!-- Meta data based --><br>
+* <location src="{uri}" /><br>
* </act>
*/
import java.io.IOException;
@@ -49,6 +50,7 @@
import org.apache.cocoon.environment.Redirector;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
+import org.apache.forrest.dispatcher.DispatcherException;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
@@ -106,31 +108,23 @@
} else {
return null;
}
- } catch (MalformedURLException e) {
- getLogger().warn(
- "Selector URL '" + uri + "' is not a valid Source URL");
- return null;
- } catch (IOException e) {
- getLogger().warn(
- "Error reading from source '" + uri + "': "
- + e.getMessage());
- return null;
- } catch (Exception e) {
+ } catch (Exception e) {
getLogger().warn(
"Error reading from source '" + uri + "': "
+ e.getMessage());
return null;
}finally {
- resolver.release(src);
+ release(src);
}
}
private void computeResponseURI(String uri, Source src)
- throws Exception {
- src = resolver.resolveURI(uri);
- if (src.exists()) {
+ throws DispatcherException {
+ try {
+ src = resolver.resolveURI(uri);
+ if (src.exists()) {
Document rawData = org.apache.forrest.dispatcher.util.SourceUtil.readDOM(
- uri, this.manager);
+ uri, resolver);
NodeList type = rawData.getElementsByTagNameNS(getResourceTypeElementNS(),getResourceTypeElement());
String typeString = type.item(0).getFirstChild().getNodeValue();
Source typeSource = resolver.resolveURI(resourceTypeBase+typeString);
@@ -138,8 +132,21 @@
this.map.put("uri", typeSource.getURI());
}
}
+ } catch (Exception e) {
+ throw new DispatcherException(e);
+ }finally{
+ release(src);
+ }
+
}
-
+ /**
+ * @see org.apache.excalibur.source.SourceFactory#release(org.apache.excalibur.source.Source)
+ */
+ public void release(Source source) {
+ if(source!=null){
+ resolver.release(source);
+ }
+ }
public void prepare(Parameters parameters, String src) {
this.setRequest(parameters.getParameter("request", src));
this.setMetaExtension(parameters.getParameter("metaExtension",
Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java?rev=694101&r1=694100&r2=694101&view=diff
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java (original)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java Wed Sep 10 20:45:49 2008
@@ -23,6 +23,7 @@
import java.util.Iterator;
import java.util.Map;
+import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.URIResolver;
@@ -44,6 +45,7 @@
import org.apache.cocoon.xml.dom.DOMUtil;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceNotFoundException;
import org.apache.excalibur.source.SourceValidity;
import org.apache.excalibur.source.impl.validity.AggregatedValidity;
import org.apache.excalibur.xml.xpath.XPathProcessor;
@@ -51,6 +53,7 @@
import org.apache.forrest.dispatcher.ContractBeanDOMImpl;
import org.apache.forrest.dispatcher.DispatcherException;
import org.apache.forrest.dispatcher.DispatcherHelper;
+import org.apache.forrest.dispatcher.lenya.xml.DocumentHelper;
import org.apache.forrest.dispatcher.lenya.xml.NamespaceHelper;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
@@ -190,7 +193,7 @@
private HashMap parameterHelper;
- private SourceResolver m_resolver;
+ private org.apache.excalibur.source.SourceResolver m_resolver;
private String requestId;
@@ -243,12 +246,16 @@
// You can either request URL?dispatcher.caching=off
// or add this property to forrest.properties.xml
// to force a SourceValidity.INVALID
- if (null != validityFile & !(validityOverride.equals(CACHING_OFF))) {
+ if (null != validityFile && !(validityOverride.equals(CACHING_OFF))) {
this.validity = new AggregatedValidity();
+ Source resolveSource=null;
try {
- this.validity.add(m_resolver.resolveURI(validityFile).getValidity());
+ resolveSource= m_resolver.resolveURI(validityFile);
+ this.validity.add(resolveSource.getValidity());
} catch (Exception e) {
getLogger().error(e.getMessage());
+ }finally{
+ release(resolveSource);
}
} else
this.validity = null;
@@ -256,6 +263,15 @@
}
/**
+ * @see org.apache.excalibur.source.SourceFactory#release(org.apache.excalibur.source.Source)
+ */
+ public void release(Source source) {
+ if(source!=null){
+ m_resolver.release(source);
+ }
+ }
+
+ /**
* @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
*/
public void service(ServiceManager manager) throws ServiceException {
@@ -332,7 +348,7 @@
parameterHelper.put(HOOKS_TRANSFORMER_PARAMETER, hooksXSL);
if (null == m_resolver)
try {
- m_resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
+ m_resolver = (org.apache.excalibur.source.SourceResolver) manager.lookup(SourceResolver.ROLE);
} catch (ServiceException e) {
throw new ProcessingException(e);
}
@@ -352,7 +368,7 @@
throws SAXException {
// Process start element event
// Are we inside of properties? If so we need to record the elements.
- if (this.insideProperties & this.includeNodes) {
+ if (this.insideProperties && this.includeNodes) {
try {
this.builder.startElement(uri, name, raw, attr);
} catch (SAXException e) {
@@ -373,19 +389,19 @@
}
if (STRUCTURER_ELEMENT.equals(name))
structurerProcessingStart(attr);
- else if (DISPATCHER_HOOK_ELEMENT.equals(name) & this.includeNodes)
+ else if (DISPATCHER_HOOK_ELEMENT.equals(name) && this.includeNodes)
hookProcessingStart(name, raw, attr);
- else if (ContractBean.CONTRACT_ELEMENT.equals(name) & this.includeNodes)
+ else if (ContractBean.CONTRACT_ELEMENT.equals(name) && this.includeNodes)
contractProcessingStart(attr);
- else if (ContractBean.PROPERTY_ELEMENT.equals(name) & this.includeNodes) {
+ else if (ContractBean.PROPERTY_ELEMENT.equals(name) && this.includeNodes) {
this.insideProperties = true;
propertyProcessingStart(uri, name, raw, attr);
}
} else {
- if (!this.insideProperties & this.includeNodes & this.insideStructurer
- & this.allowMarkup)
+ if (!this.insideProperties && this.includeNodes && this.insideStructurer
+ && this.allowMarkup)
super.startElement(uri, name, raw, attr);
- if (!this.insideProperties & this.includeNodes & !this.insideStructurer)
+ if (!this.insideProperties && this.includeNodes && !this.insideStructurer)
super.startElement(uri, name, raw, attr);
}
}
@@ -474,18 +490,18 @@
} else if (DispatcherHelper.DISPATCHER_NAMESPACE_URI.equals(uri)) {
if (STRUCTURER_ELEMENT.equals(name))
structurerProcessingEnd(raw);
- else if (ContractBean.CONTRACT_ELEMENT.equals(name) & this.includeNodes)
+ else if (ContractBean.CONTRACT_ELEMENT.equals(name) && this.includeNodes)
contractProcessingEnd();
- else if (DISPATCHER_HOOK_ELEMENT.equals(name) & this.includeNodes)
+ else if (DISPATCHER_HOOK_ELEMENT.equals(name) && this.includeNodes)
if (path.lastIndexOf("/") > -1)
path = path.substring(0, path.lastIndexOf("/"));
else
path = null;
} else {
- if (!this.insideProperties & this.includeNodes & this.insideStructurer
- & this.allowMarkup)
+ if (!this.insideProperties && this.includeNodes && this.insideStructurer
+ && this.allowMarkup)
super.endElement(uri, name, raw);
- if (!this.insideProperties & this.includeNodes & !this.insideStructurer)
+ if (!this.insideProperties && this.includeNodes && !this.insideStructurer)
super.endElement(uri, name, raw);
}
}
@@ -506,10 +522,10 @@
currentFormat = value;
}
if (localName.equals(STRUCTURER_HOOK_XPATH_ATTRIBUTE)) {
- if ("/".equals(String.valueOf(value.charAt(0))) & value.length() != 1) {
+ if ("/".equals(String.valueOf(value.charAt(0))) && value.length() != 1) {
path = "result" + value;
} else if ("/".equals(String.valueOf(value.charAt(0)))
- & value.length() == 1) {
+ && value.length() == 1) {
path = "result";
} else {
path = "result/" + value;
@@ -520,7 +536,7 @@
localRecycle();
try {
if (null == this.dispatcherHelper)
- this.dispatcherHelper = new DispatcherHelper(manager);
+ this.dispatcherHelper = new DispatcherHelper(m_resolver);
if (null == this.processor)
this.processor = (XPathProcessor) this.manager
.lookup(XPathProcessor.ROLE);
@@ -533,7 +549,7 @@
String propertyURI = "cocoon://" + requestId + ".props";
try {
this.defaultProperties = org.apache.forrest.dispatcher.util.SourceUtil
- .readDOM(propertyURI, this.manager);
+ .readDOM(propertyURI, m_resolver);
} catch (Exception e1) {
String error = "dispatcherError:\n" + "Could not get the properties for "
+ propertyURI + "\n DispatcherStack: " + e1;
@@ -640,7 +656,7 @@
private void contractProcessingStart(Attributes attr) throws SAXException {
try {
if (contract == null)
- contract = new ContractBeanDOMImpl(this.manager, parameterHelper,
+ contract = new ContractBeanDOMImpl(m_resolver, parameterHelper,
defaultProperties, (URIResolver) this);
} catch (Exception e) {
String error = DispatcherException.ERROR_500 + "\n"
@@ -658,19 +674,21 @@
contract.setContractName(value);
String contractUri = ContractBean.CONTRACT_RESOLVE_PREFIX + "."
+ currentFormat + "." + value;
+ Source contractSource = null;
try {
// Adding the contract to the validity object.
// As soon the contract changes we want a rebuild of
// the page and not the cached object.
- if (!validityOverride.equals(CACHING_OFF) & null != this.validity) {
- SourceValidity contractValidityId = m_resolver.resolveURI(contractUri)
+ if (!validityOverride.equals(CACHING_OFF) && null != this.validity) {
+ contractSource = m_resolver.resolveURI(contractUri);
+ SourceValidity contractValidityId = contractSource
.getValidity();
// we cannot allow null in an AggregatedValidity
if (null != contractValidityId)
this.validity.add(contractValidityId);
}
Document doc = org.apache.forrest.dispatcher.util.SourceUtil.readDOM(
- contractUri, this.manager);
+ contractUri, m_resolver);
contract.setContractImpl(doc, contractUri);
// contract.setContractImpl(contractUri);
} catch (Exception e) {
@@ -683,6 +701,8 @@
+ contractUri + "\".\n\n" + "dispatcherErrorStack:\n" + e;
getLogger().error(error);
throw new SAXException(error);
+ }finally{
+ release(contractSource);
}
if (getLogger().isDebugEnabled()) {
getLogger().debug(
@@ -692,19 +712,21 @@
} else if (ContractBean.CONTRACT_NUGGET_ATTRIBUTE.equals(localName)) {
// contract is a nugget-contract
contract.setNugget(true);
+ Source contractRawSource =null;
try {
// Adding the raw data to the validity object.
// As soon the raw data changes we want a rebuild of
// the page and not the cached object.
- if (!validityOverride.equals(CACHING_OFF) & null != this.validity) {
- SourceValidity contractValidityRaw = m_resolver.resolveURI(value)
+ if (!validityOverride.equals(CACHING_OFF) && null != this.validity) {
+ contractRawSource = m_resolver.resolveURI(value);
+ SourceValidity contractValidityRaw = contractRawSource
.getValidity();
// we cannot allow null in an AggregatedValidity
if (null != contractValidityRaw)
this.validity.add(contractValidityRaw);
}
Document doc = org.apache.forrest.dispatcher.util.SourceUtil.readDOM(
- value, this.manager);
+ value, m_resolver);
contract.setContractRawData(doc);
// contract.setNuggetUri(value);
} catch (Exception e) {
@@ -714,6 +736,8 @@
+ value + "\".\n\n" + "dispatcherErrorStack:\n " + e;
getLogger().error(error);
throw new SAXException(error);
+ } finally{
+ release(contractRawSource);
}
if (getLogger().isDebugEnabled()) {
getLogger().debug(
@@ -907,23 +931,23 @@
}
public void characters(char c[], int start, int len) throws SAXException {
- if (this.insideProperties & this.includeNodes)
+ if (this.insideProperties && this.includeNodes)
this.builder.characters(c, start, len);
- else if (!this.insideProperties & this.includeNodes & !this.insideStructurer)
+ else if (!this.insideProperties && this.includeNodes && !this.insideStructurer)
super.contentHandler.characters(c, start, len);
}
public void startCDATA() throws SAXException {
- if (this.insideProperties & this.includeNodes)
+ if (this.insideProperties && this.includeNodes)
this.builder.startCDATA();
- else if (!this.insideProperties & this.includeNodes & !this.insideStructurer)
+ else if (!this.insideProperties && this.includeNodes && !this.insideStructurer)
super.lexicalHandler.startCDATA();
}
public void endCDATA() throws SAXException {
- if (this.insideProperties & this.includeNodes)
+ if (this.insideProperties && this.includeNodes)
this.builder.endCDATA();
- else if (!this.insideProperties & this.includeNodes & !this.insideStructurer)
+ else if (!this.insideProperties && this.includeNodes && !this.insideStructurer)
super.lexicalHandler.endCDATA();
}
@@ -931,7 +955,7 @@
public void startPrefixMapping(String prefix, String uri) throws SAXException {
super.startPrefixMapping(prefix, uri);
- if (this.insideProperties & this.includeNodes) {
+ if (this.insideProperties && this.includeNodes) {
this.builder.startPrefixMapping(prefix, uri);
} else {
storePrefixMapping(prefix, uri);
@@ -1039,7 +1063,7 @@
return null;
} finally {
- m_resolver.release(xslSource);
+ release(xslSource);
}
}
@@ -1057,5 +1081,5 @@
newObject.setSystemId(source.getURI());
return newObject;
}
-
+
}
Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/util/SourceUtil.java
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/util/SourceUtil.java?rev=694101&r1=694100&r2=694101&view=diff
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/util/SourceUtil.java (original)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/util/SourceUtil.java Wed Sep 10 20:45:49 2008
@@ -21,10 +21,9 @@
import javax.xml.parsers.ParserConfigurationException;
import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.environment.SourceResolver;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceNotFoundException;
+import org.apache.excalibur.source.SourceResolver;
import org.apache.forrest.dispatcher.lenya.xml.DocumentHelper;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
@@ -41,27 +40,20 @@
* @throws SAXException if an error occurs.
* @throws IOException if an error occurs.
*/
- public static Document readDOM(String sourceUri, ServiceManager manager)
+ public static Document readDOM(String sourceUri, SourceResolver resolver)
throws ServiceException, SourceNotFoundException, ParserConfigurationException,
SAXException, IOException {
- SourceResolver resolver = null;
Source source = null;
Document document = null;
try {
-
- resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
source = resolver.resolveURI(sourceUri);
-
if (source.exists()) {
document = DocumentHelper.readDocument(source.getInputStream());
}
} finally {
- if (resolver != null) {
if (source != null) {
resolver.release(source);
}
- manager.release(resolver);
- }
}
return document;
}
Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.output.solr/src/java/org/apache/forrest/solr/client/SolrUpdateGenerator.java
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.output.solr/src/java/org/apache/forrest/solr/client/SolrUpdateGenerator.java?rev=694101&r1=694100&r2=694101&view=diff
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.output.solr/src/java/org/apache/forrest/solr/client/SolrUpdateGenerator.java (original)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.output.solr/src/java/org/apache/forrest/solr/client/SolrUpdateGenerator.java Wed Sep 10 20:45:49 2008
@@ -51,7 +51,6 @@
public void generate() throws IOException, SAXException, ProcessingException {
Source inputSource = null;
try {
- resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
inputSource = resolver.resolveURI(this.source);
if (inputSource.exists()) {
post = new PostFile(destination, inputSource.getInputStream());
@@ -68,6 +67,9 @@
if (null!=post){
post.releaseConnection();
}
+ if (inputSource!=null){
+ resolver.release(inputSource);
+ }
}
}