logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

svn commit: r387225 - /lenya/trunk/src/java/org/apache/lenya/cms/site/useca: msg#00171

Subject: svn commit: r387225 - /lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java
Author: andreas
Date: Mon Mar 20 07:49:22 2006
New Revision: 387225

URL: http://svn.apache.org/viewcvs?rev=387225&view=rev
Log:
Don't rewrite links if resource type doesn't provide any link rewriting XPaths. 
Don't swallow exceptions.

Modified:
    
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java

Modified: 
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java
URL: 
http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java?rev=387225&r1=387224&r2=387225&view=diff
==============================================================================
--- 
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java 
(original)
+++ 
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java 
Mon Mar 20 07:49:22 2006
@@ -104,55 +104,56 @@
                     ResourceType doctype = examinedDocument.getResourceType();
                     String[] xPaths = doctype.getLinkAttributeXPaths();
 
-                    try {
-                        org.w3c.dom.Document xmlDocument = 
SourceUtil.readDOM(examinedDocument.getSourceURI(),
-                                this.manager);
-
-                        for (int xPathIndex = 0; xPathIndex < xPaths.length; 
xPathIndex++) {
-                            NodeList nodes = 
XPathAPI.selectNodeList(xmlDocument,
-                                    xPaths[xPathIndex]);
-                            for (int nodeIndex = 0; nodeIndex < 
nodes.getLength(); nodeIndex++) {
-                                Node node = nodes.item(nodeIndex);
-                                if (node.getNodeType() != Node.ATTRIBUTE_NODE) 
{
-                                    throw new RuntimeException("The XPath [" + 
xPaths[xPathIndex]
-                                            + "] may only match attribute 
nodes!");
-                                }
-                                Attr attribute = (Attr) node;
-                                final String url = attribute.getValue();
+                    if (xPaths.length > 0) {
+                        try {
+                            org.w3c.dom.Document xmlDocument = 
SourceUtil.readDOM(examinedDocument.getSourceURI(),
+                                    this.manager);
+
+                            for (int xPathIndex = 0; xPathIndex < 
xPaths.length; xPathIndex++) {
+                                NodeList nodes = 
XPathAPI.selectNodeList(xmlDocument,
+                                        xPaths[xPathIndex]);
+                                for (int nodeIndex = 0; nodeIndex < 
nodes.getLength(); nodeIndex++) {
+                                    Node node = nodes.item(nodeIndex);
+                                    if (node.getNodeType() != 
Node.ATTRIBUTE_NODE) {
+                                        throw new RuntimeException("The XPath 
["
+                                                + xPaths[xPathIndex]
+                                                + "] may only match attribute 
nodes!");
+                                    }
+                                    Attr attribute = (Attr) node;
+                                    final String url = attribute.getValue();
 
-                                if (url.startsWith(contextPath + "/" + 
publication.getId())) {
-                                    final String webappUrl = 
url.substring(contextPath.length());
+                                    if (url.startsWith(contextPath + "/" + 
publication.getId())) {
+                                        final String webappUrl = 
url.substring(contextPath.length());
 
-                                    if (identityMap.isDocument(webappUrl)) {
-                                        Document targetDocument = 
identityMap.getFromURL(webappUrl);
+                                        if (identityMap.isDocument(webappUrl)) 
{
+                                            Document targetDocument = 
identityMap.getFromURL(webappUrl);
 
-                                        if (matches(targetDocument, 
originalTargetDocument)) {
-                                            String newTargetUrl = 
getNewTargetURL(targetDocument,
-                                                    originalTargetDocument,
-                                                    newTargetDocument);
-                                            attribute.setValue(contextPath + 
newTargetUrl);
-                                            linksRewritten = true;
+                                            if (matches(targetDocument, 
originalTargetDocument)) {
+                                                String newTargetUrl = 
getNewTargetURL(targetDocument,
+                                                        originalTargetDocument,
+                                                        newTargetDocument);
+                                                attribute.setValue(contextPath 
+ newTargetUrl);
+                                                linksRewritten = true;
+                                            }
                                         }
                                     }
                                 }
                             }
-                        }
 
-                        if (linksRewritten) {
-                            examinedDocument.getRepositoryNode().lock();
-                            SourceUtil.writeDOM(xmlDocument,
-                                    examinedDocument.getSourceURI(),
-                                    this.manager);
+                            if (linksRewritten) {
+                                examinedDocument.getRepositoryNode().lock();
+                                SourceUtil.writeDOM(xmlDocument,
+                                        examinedDocument.getSourceURI(),
+                                        this.manager);
+                            }
+                        } catch (Exception e) {
+                            throw new RuntimeException(e);
                         }
-                    } catch (SAXParseException e) {
-                        getLogger().warn("Document [" + examinedDocument
-                                + "] is not XML and will be ignored!");
-                    } catch (Exception e) {
-                        getLogger().error(e.getMessage(), e);
-                    } finally {
                     }
+
                 } else {
-                    getLogger().warn("No such document: " + 
examinedDocument.getSourceURI());
+                    throw new RuntimeException("No such document: [" + 
examinedDocument
+                            + "] - source URI: [" + 
examinedDocument.getSourceURI() + "]");
                 }
             }
         } catch (final Exception e) {


<Prev in Thread] Current Thread [Next in Thread>