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