You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2011/05/26 15:30:25 UTC
svn commit: r1127900 -
/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/IncludeRule.java
Author: simonetripodi
Date: Thu May 26 13:30:25 2011
New Revision: 1127900
URL: http://svn.apache.org/viewvc?rev=1127900&view=rev
Log:
include rule simplified, checking if a URL has been already visited is simpler
Modified:
commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/IncludeRule.java
Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/IncludeRule.java
URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/IncludeRule.java?rev=1127900&r1=1127899&r2=1127900&view=diff
==============================================================================
--- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/IncludeRule.java (original)
+++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/xmlrules/IncludeRule.java Thu May 26 13:30:25 2011
@@ -17,6 +17,7 @@
*/
package org.apache.commons.digester3.xmlrules;
+import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.digester3.Rule;
@@ -55,10 +56,10 @@ final class IncludeRule
throws Exception
{
// The path attribute gives the URI to another digester rules xml file
- final String fileName = attributes.getValue( "path" );
+ String fileName = attributes.getValue( "path" );
if ( fileName != null && fileName.length() > 0 )
{
- FromXmlRulesModule fromXmlRulesModule = null;
+ final URL xmlRulesResource;
if ( fileName.startsWith( CLASSPATH_URL_PREFIX ) )
{
@@ -67,64 +68,44 @@ final class IncludeRule
{
path = path.substring( 1 );
}
- final URL classPathResource = this.targetRulesBinder.getContextClassLoader().getResource( path );
- if ( classPathResource == null )
+ xmlRulesResource = this.targetRulesBinder.getContextClassLoader().getResource( path );
+ if ( xmlRulesResource == null )
{
targetRulesBinder.addError( "Resource '%s' not found, please make sure it is in the classpath",
path );
- }
- else
- {
- fromXmlRulesModule = new FromXmlRulesModule()
- {
-
- @Override
- protected void loadRules()
- {
- loadXMLRules( classPathResource );
- }
-
- };
+ return;
}
}
else
{
try
{
- fromXmlRulesModule = new FromXmlRulesModule()
- {
-
- @Override
- protected void loadRules()
- {
- loadXMLRules( fileName );
- }
-
- };
+ xmlRulesResource = new URL( fileName );
}
- catch ( Exception e )
+ catch ( MalformedURLException e )
{
targetRulesBinder.addError( "An error occurred while inculing file from '%s': %s", fileName,
e.getMessage() );
+ return;
}
}
- if ( fromXmlRulesModule != null )
+ if ( memoryRulesBinder.getIncludedFiles().add( xmlRulesResource.toString() ) )
{
- boolean circularFileInclusionDetected = false;
- for ( String systemId : fromXmlRulesModule.getSystemIds() )
+ install( new FromXmlRulesModule()
{
- if ( !memoryRulesBinder.getIncludedFiles().add( systemId ) )
+
+ @Override
+ protected void loadRules()
{
- targetRulesBinder.addError( "Circular file inclusion detected for XML rules: %s", systemId );
- circularFileInclusionDetected = true;
+ loadXMLRules( xmlRulesResource );
}
- }
- if ( !circularFileInclusionDetected )
- {
- install( fromXmlRulesModule );
- }
+ });
+ }
+ else
+ {
+ targetRulesBinder.addError( "Circular file inclusion detected for XML rules: %s", xmlRulesResource );
}
}