Author: gbailleul
Date: Sat Jun 21 08:20:20 2014
New Revision: 1604323
URL: http://svn.apache.org/r1604323
Log:
PDFBOX-1816: Added offset in error messages
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/AbstractXObjValidator.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjFormValidator.java
pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java?rev=1604323&r1=1604322&r2=1604323&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java
Sat Jun 21 08:20:20 2014
@@ -460,13 +460,13 @@ public class PreflightParser extends Non
if (!streamV.equals("stream"))
{
addValidationError(new
ValidationError(ERROR_SYNTAX_STREAM_DELIMITER,
- "Expected 'stream' keyword but found '" + streamV + "'"));
+ "Expected 'stream' keyword but found '" + streamV + "' at
offset "+pdfSource.getOffset()));
}
int nextChar = pdfSource.read();
if (!((nextChar == 13 && pdfSource.peek() == 10) || nextChar == 10))
{
addValidationError(new
ValidationError(ERROR_SYNTAX_STREAM_DELIMITER,
- "Expected 'EOL' after the stream keyword"));
+ "Expected 'EOL' after the stream keyword at offset
"+pdfSource.getOffset()));
}
// set the offset before stream
pdfSource.seek(pdfSource.getOffset() - 7);
@@ -483,13 +483,13 @@ public class PreflightParser extends Non
if (!nextIsEOL())
{
addValidationError(new
ValidationError(ERROR_SYNTAX_STREAM_DELIMITER,
- "Expected 'EOL' before the endstream keyword"));
+ "Expected 'EOL' before the endstream keyword at offset
"+pdfSource.getOffset()+" but found '"+pdfSource.peek()+"'"));
}
String endstreamV = readString();
if (!endstreamV.equals("endstream"))
{
addValidationError(new
ValidationError(ERROR_SYNTAX_STREAM_DELIMITER,
- "Expected 'endstream' keyword but found '" + endstreamV +
"'"));
+ "Expected 'endstream' keyword at offset
"+pdfSource.getOffset()+" but found '" + endstreamV + "'"));
}
}
@@ -583,7 +583,7 @@ public class PreflightParser extends Non
else
{
addValidationError(new
ValidationError(ERROR_SYNTAX_HEXA_STRING_INVALID,
- "Hexa String must have only Hexadecimal
Characters (found '" + nextChar + "')"));
+ "Hexa String must have only Hexadecimal
Characters (found '" + nextChar + "') at offset "+pdfSource.getOffset()));
break;
}
}
@@ -593,7 +593,7 @@ public class PreflightParser extends Non
if (count % 2 != 0)
{
addValidationError(new
ValidationError(ERROR_SYNTAX_HEXA_STRING_EVEN_NUMBER,
- "Hexa string shall contain even number of non white space
char"));
+ "Hexa string shall contain even number of non white space
char at offset "+pdfSource.getOffset()));
}
// reset the offset to parse the COSString
@@ -602,7 +602,7 @@ public class PreflightParser extends Non
if (result.getString().length() > MAX_STRING_LENGTH)
{
- addValidationError(new
ValidationError(ERROR_SYNTAX_HEXA_STRING_TOO_LONG, "Hexa string is too long"));
+ addValidationError(new
ValidationError(ERROR_SYNTAX_HEXA_STRING_TOO_LONG, "Hexa string is too long at
offset "+pdfSource.getOffset()));
}
return result;
}
@@ -624,7 +624,7 @@ public class PreflightParser extends Non
if (real > MAX_POSITIVE_FLOAT || real < MAX_NEGATIVE_FLOAT)
{
addValidationError(new
ValidationError(ERROR_SYNTAX_NUMERIC_RANGE,
- "Float is too long or too small: " + real));
+ "Float is too long or too small: " + real+" at
offset "+pdfSource.getOffset()));
}
}
else
@@ -633,7 +633,7 @@ public class PreflightParser extends Non
if (numAsLong > Integer.MAX_VALUE || numAsLong <
Integer.MIN_VALUE)
{
addValidationError(new
ValidationError(ERROR_SYNTAX_NUMERIC_RANGE,
- "Numeric is too long or too small: " + numAsLong));
+ "Numeric is too long or too small: " + numAsLong+"
at offset "+pdfSource.getOffset()));
}
}
}
@@ -643,7 +643,7 @@ public class PreflightParser extends Non
COSDictionary dic = (COSDictionary) result;
if (dic.size() > MAX_DICT_ENTRIES)
{
- addValidationError(new
ValidationError(ERROR_SYNTAX_TOO_MANY_ENTRIES, "Too Many Entries In
Dictionary"));
+ addValidationError(new
ValidationError(ERROR_SYNTAX_TOO_MANY_ENTRIES, "Too Many Entries In Dictionary
at offset "+pdfSource.getOffset()));
}
}
return result;
@@ -704,7 +704,7 @@ public class PreflightParser extends Non
else
{
- addValidationError(new
ValidationError(ERROR_SYNTAX_OBJ_DELIMITER, "Single space expected"));
+ addValidationError(new
ValidationError(ERROR_SYNTAX_OBJ_DELIMITER, "Single space expected
[offset="+offset+"; key="+offsetOrObjstmObNr.toString()+"; line="+line+";
object="+pdfObject.toString()+"]"));
// reset pdfSource cursor to read object information
pdfSource.seek(offset);
@@ -818,7 +818,7 @@ public class PreflightParser extends Non
if (!nextIsEOL())
{
addValidationError(new
ValidationError(PreflightConstants.ERROR_SYNTAX_OBJ_DELIMITER,
- "EOL expected before the 'endobj' keyword"));
+ "EOL expected before the 'endobj' keyword at
offset "+pdfSource.getOffset()));
}
pdfSource.seek(offset);
}
@@ -826,7 +826,7 @@ public class PreflightParser extends Non
if (!nextIsEOL())
{
addValidationError(new
ValidationError(PreflightConstants.ERROR_SYNTAX_OBJ_DELIMITER,
- "EOL expected after the 'endobj' keyword"));
+ "EOL expected after the 'endobj' keyword at offset
"+pdfSource.getOffset()));
}
releasePdfSourceInputStream();
@@ -879,7 +879,7 @@ public class PreflightParser extends Non
|| !(buf[tmpOffset] == 10 || buf[tmpOffset] == 13 ||
buf[tmpOffset + 1] == 10))
{
addValidationError(new
ValidationError(ERROR_SYNTAX_TRAILER_EOF,
- "File contains data after the last %%EOF
sequence"));
+ "File contains data after the last %%EOF sequence
at offset "+pdfSource.getOffset()));
}
}
}
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java?rev=1604323&r1=1604322&r2=1604323&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java
Sat Jun 21 08:20:20 2014
@@ -263,7 +263,7 @@ public class StreamValidationProcess ext
if (cr == -1)
{
addValidationError(context, new
ValidationError(ERROR_SYNTAX_STREAM_LENGTH_INVALID,
- "Stream length is invalide"));
+ "Stream length is invalid
[cObj="+cObj.toString()+"]"));
org.apache.pdfbox.io.IOUtils.closeQuietly(ra);
return;
}
@@ -287,7 +287,7 @@ public class StreamValidationProcess ext
if (!endStream.contains("endstream"))
{
addValidationError(context, new
ValidationError(ERROR_SYNTAX_STREAM_LENGTH_INVALID,
- "Stream length is invalide"));
+ "Stream length is invalid
[cObj="+cObj.toString()+"; defined length="+length+"; buffer2="+endStream+"]"));
}
}
else if (buffer2[0] == '\r' && buffer2[1] == 'e')
@@ -295,7 +295,7 @@ public class StreamValidationProcess ext
if (!endStream.contains("endstream"))
{
addValidationError(context, new
ValidationError(ERROR_SYNTAX_STREAM_LENGTH_INVALID,
- "Stream length is invalide"));
+ "Stream length is invalid
[cObj="+cObj.toString()+"; defined length="+length+"; buffer2="+endStream+"]"));
}
}
else if (buffer2[0] == '\n' && buffer2[1] == 'e')
@@ -303,20 +303,22 @@ public class StreamValidationProcess ext
if (!endStream.contains("endstream"))
{
addValidationError(context, new
ValidationError(ERROR_SYNTAX_STREAM_LENGTH_INVALID,
- "Stream length is invalide"));
+ "Stream length is invalid
[cObj="+cObj.toString()+"; defined length="+length+"; buffer2="+endStream+"]"));
}
}
else
{
- addValidationError(context, new
ValidationError(ERROR_SYNTAX_STREAM_LENGTH_INVALID,
- "Stream length is invalide"));
+ if (!endStream.startsWith("endStream")) {
+ addValidationError(context, new
ValidationError(ERROR_SYNTAX_STREAM_LENGTH_INVALID,
+ "Stream length is invalid
[cObj="+cObj.toString()+"; defined length="+length+"; buffer2="+endStream+"]"));
+ }
}
}
else
{
addValidationError(context, new
ValidationError(ERROR_SYNTAX_STREAM_LENGTH_INVALID,
- "Stream length is invalide"));
+ "Stream length is invalid"));
}
}
}
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/AbstractXObjValidator.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/AbstractXObjValidator.java?rev=1604323&r1=1604322&r2=1604323&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/AbstractXObjValidator.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/AbstractXObjValidator.java
Sat Jun 21 08:20:20 2014
@@ -76,7 +76,7 @@ public abstract class AbstractXObjValida
.equals(COSUtils.getAsString(smask, cosDocument))))
{
context.addValidationError(new
ValidationError(ERROR_GRAPHIC_TRANSPARENCY_SMASK,
- "Soft Mask must be null or None"));
+ "Soft Mask must be null or None
["+xobject.toString()+"]"));
}
}
@@ -84,9 +84,6 @@ public abstract class AbstractXObjValida
* According the ISO 190005:1-2005 specification, a XObject can't have an
OPI entry in its dictionary. If the
* XObject has a OPI entry, the error list is updated with the error code
ERROR_GRAPHIC_UNEXPECTED_KEY (2.3).
*
- * @param errors
- * the list of error to update if the validation fails.
- * @return true if the OPI is missing, false otherwise.
*/
protected void checkOPI()
{
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjFormValidator.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjFormValidator.java?rev=1604323&r1=1604322&r2=1604323&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjFormValidator.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjFormValidator.java
Sat Jun 21 08:20:20 2014
@@ -133,7 +133,7 @@ public class XObjFormValidator extends A
String sVal = groupDictionary.getNameAsString(COSName.S);
if (sVal == null ||
XOBJECT_DICTIONARY_VALUE_S_TRANSPARENCY.equals(sVal))
{
- context.addValidationError(new
ValidationError(ERROR_GRAPHIC_TRANSPARENCY_GROUP, "Group has a transparency S
entry or the S entry is null."));
+ context.addValidationError(new
ValidationError(ERROR_GRAPHIC_TRANSPARENCY_GROUP, "Group has a transparency S
entry or the S entry is null ["+xobject.toString()+"]"));
return;
}
}
Modified:
pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java?rev=1604323&r1=1604322&r2=1604323&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
(original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
Sat Jun 21 08:20:20 2014
@@ -384,13 +384,13 @@ public class DomXmpParser
{
// not an array
throw new XmpParsingException(ErrorType.Format, "Invalid array
definition, expecting " + type.card()
- + " and found nothing");
+ + " and found nothing [prefix="+prefix+"; name="+name+"]");
}
if (!bagOrSeq.getLocalName().equals(type.card().name()))
{
// not the good array type
throw new XmpParsingException(ErrorType.Format, "Invalid array
type, expecting " + type.card()
- + " and found " + bagOrSeq.getLocalName());
+ + " and found " + bagOrSeq.getLocalName() + "
[prefix="+prefix+"; name="+name+"]");
}
ArrayProperty array = tm.createArrayProperty(namespace, prefix, name,
type.card());
container.addProperty(array);
@@ -735,7 +735,7 @@ public class DomXmpParser
}
else if (node instanceof Text)
{
- if (((Text)node).getTextContent().trim().length() == 0)
+ if (node.getTextContent().trim().length() == 0)
{
root.removeChild(node);
}