You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by tv...@apache.org on 2009/01/06 21:30:43 UTC

svn commit: r732101 - in /turbine/fulcrum/trunk/intake: src/java/org/apache/fulcrum/intake/IntakeServiceImpl.java src/java/org/apache/fulcrum/intake/transform/XmlToAppData.java xdocs/changes.xml

Author: tv
Date: Tue Jan  6 12:30:43 2009
New Revision: 732101

URL: http://svn.apache.org/viewvc?rev=732101&view=rev
Log:
Intake did not correctly parse the message of a rule or required-message from intake.xml. Fixes TRB-68

Modified:
    turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/IntakeServiceImpl.java
    turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/transform/XmlToAppData.java
    turbine/fulcrum/trunk/intake/xdocs/changes.xml

Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/IntakeServiceImpl.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/IntakeServiceImpl.java?rev=732101&r1=732100&r2=732101&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/IntakeServiceImpl.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/IntakeServiceImpl.java Tue Jan  6 12:30:43 2009
@@ -694,12 +694,11 @@
                 try
                 {
                     XmlToAppData xmlApp = new XmlToAppData();
+                    xmlApp.enableLogging(getLogger());
                     appData = xmlApp.parseFile(xmlPath);
                 }
                 catch (Exception e)
                 {
-                    getLogger().error("Could not parse XML file " + xmlPath, e);
-
                     throw new ConfigurationException(
                             "Could not parse XML file " + xmlPath, e);
                 }

Modified: turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/transform/XmlToAppData.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/transform/XmlToAppData.java?rev=732101&r1=732100&r2=732101&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/transform/XmlToAppData.java (original)
+++ turbine/fulcrum/trunk/intake/src/java/org/apache/fulcrum/intake/transform/XmlToAppData.java Tue Jan  6 12:30:43 2009
@@ -27,14 +27,12 @@
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
 import org.apache.fulcrum.intake.xmlmodel.AppData;
 import org.apache.fulcrum.intake.xmlmodel.Rule;
 import org.apache.fulcrum.intake.xmlmodel.XmlField;
 import org.apache.fulcrum.intake.xmlmodel.XmlGroup;
-
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -52,15 +50,17 @@
  * @version $Id$
  */
 public class XmlToAppData extends DefaultHandler
+    implements LogEnabled
 {
     /** Logging */
-    private static Log log = LogFactory.getLog(XmlToAppData.class);
+    private Logger log;
 
     private AppData app;
     private XmlGroup currGroup;
     private XmlField currField;
     private Rule currRule;
     private String currElement;
+    private StringBuffer chars;
 
     private static SAXParserFactory saxFactory;
 
@@ -95,6 +95,9 @@
 
         FileReader fr = new FileReader(xmlFile);
         BufferedReader br = new BufferedReader(fr);
+        
+        chars = new StringBuffer();
+        
         try
         {
             InputSource is = new InputSource(br);
@@ -109,6 +112,17 @@
     }
 
     /**
+     * Provide an Avalon logger
+     * 
+     * @see org.apache.avalon.framework.logger.LogEnabled#enableLogging(org.apache.avalon.framework.logger.Logger)
+     */
+    public void enableLogging(Logger logger)
+    {
+        this.log = logger.getChildLogger("XmlToAppData");
+        
+    }
+
+    /**
      * EntityResolver implementation. Called by the XML parser
      *
      * @return an InputSource for the database.dtd file
@@ -144,23 +158,34 @@
     }
 
     /**
-     * Handles the character data, which we are using to specify the
-     * error message.
+     * Handles closing elements of the xml file.
+     * 
+     * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String, java.lang.String, java.lang.String)
      */
-    public void characters(char[] mesgArray, int start, int length)
+    public void endElement(String uri, String localName, String name) throws SAXException
     {
-        String cdata = new String(mesgArray, start, length).trim();
-        if ("rule".equals(currElement) && cdata.length() > 0)
+        if ("rule".equals(currElement) && chars.length() > 0)
         {
-            currRule.setMessage(cdata);
+            currRule.setMessage(chars.toString());
         }
-        if ("required-message".equals(currElement) && cdata.length() > 0)
+        else if ("required-message".equals(currElement) && chars.length() > 0)
         {
             log.warn("The required-message element is deprecated!  " +
                     "You should update your intake.xml file to use the " +
                     "'required' rule instead.");
-            currField.setIfRequiredMessage(cdata);
+            currField.setIfRequiredMessage(chars.toString());
         }
+        
+        chars = new StringBuffer();
+    }
+
+    /**
+     * Handles the character data, which we are using to specify the
+     * error message.
+     */
+    public void characters(char[] mesgArray, int start, int length)
+    {
+        this.chars.append(mesgArray, start, length);
     }
 
     /**
@@ -196,7 +221,7 @@
      */
     public void fatalError(SAXParseException spe)
     {
-        log.fatal("Parser Exception: " +
+        log.fatalError("Parser Exception: " +
                 "Line " + spe.getLineNumber() +
                 " Row: " + spe.getColumnNumber() +
                 " Msg: " + spe.getMessage());

Modified: turbine/fulcrum/trunk/intake/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/intake/xdocs/changes.xml?rev=732101&r1=732100&r2=732101&view=diff
==============================================================================
--- turbine/fulcrum/trunk/intake/xdocs/changes.xml (original)
+++ turbine/fulcrum/trunk/intake/xdocs/changes.xml Tue Jan  6 12:30:43 2009
@@ -26,6 +26,9 @@
 
   <body>
   	 <release version="1.0.4-dev" date="in Subversion">
+      <action type="fix" dev="tv" issue="TRB-68" due-to="Ronny Voelker">
+        Intake did not correctly parse the message of a rule or required-message from intake.xml
+      </action>
       <action type="update" dev="tv">
         Removed the dependency on ORO by replacing the regular expression handling
         with java.util.regexp. This might have slight implications on the regexp