You are viewing a plain text version of this content. The canonical link for it is here.
Posted to odf-commits@incubator.apache.org by ms...@apache.org on 2018/05/14 13:13:45 UTC

[odftoolkit] branch trunk updated (c222c0d -> 536201d)

This is an automated email from the ASF dual-hosted git repository.

mst pushed a change to branch trunk
in repository https://gitbox.apache.org/repos/asf/odftoolkit.git.


    from c222c0d  #ODFTOOLKIT-474# Patch by Georg Fuechsle - Simple API: List decorators with different bullet points
     new 655fd67  ODFTOOLKIT-460 validator: do not report missing file entries for document signatures
     new 536201d  ODFTOOLKIT-475 validator: fix checking character content in foreign elements

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../java/org/odftoolkit/odfdom/pkg/OdfPackage.java |   5 +-
 .../odfvalidator/ForeignContentFilter.java         |  63 ++++++++++++++++++++-
 .../odfvalidator/InvalidPackageTest.java           |  18 ++++++
 .../org/odftoolkit/odfvalidator/ValidTest.java     |  20 +++++++
 validator/src/test/resources/good.odt              | Bin 0 -> 10878 bytes
 validator/src/test/resources/sender-initials.odt   | Bin 0 -> 8647 bytes
 6 files changed, 104 insertions(+), 2 deletions(-)
 create mode 100644 validator/src/test/resources/good.odt
 create mode 100644 validator/src/test/resources/sender-initials.odt

-- 
To stop receiving notification emails like this one, please contact
mst@apache.org.

[odftoolkit] 02/02: ODFTOOLKIT-475 validator: fix checking character content in foreign elements

Posted by ms...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mst pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/odftoolkit.git

commit 536201d92c7f65f5be8923762069add053e4aca9
Author: Michael Stahl <Mi...@cib.de>
AuthorDate: Tue May 8 14:03:54 2018 +0200

    ODFTOOLKIT-475 validator: fix checking character content in foreign elements
    
    ... below text:p.
    
    If the ODF element does not allow character content itself,
    then for any child foreign element the character content should be
    ignored.
    
    See ODF 1.2 part 1 section 3.17 Foreign Elements and Attributes.
    
    It's apparently not possible to ask the RelaxNG validator if an element
    allows character content, so add a hard-coded list.
---
 .../odfvalidator/ForeignContentFilter.java         |  63 ++++++++++++++++++++-
 .../org/odftoolkit/odfvalidator/ValidTest.java     |  20 +++++++
 validator/src/test/resources/sender-initials.odt   | Bin 0 -> 8647 bytes
 3 files changed, 82 insertions(+), 1 deletion(-)

diff --git a/validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentFilter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentFilter.java
index 58fb76a..6f61d04 100644
--- a/validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentFilter.java
+++ b/validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentFilter.java
@@ -34,6 +34,9 @@ class ForeignContentFilter extends XMLFilterImpl {
 
     private static final String OFFICE_NAMESPACE_URI = OdfDocumentNamespace.OFFICE.getUri();
     private static final String TEXT_NAMESPACE_URI = OdfDocumentNamespace.TEXT.getUri();
+    private static final String DRAW_NAMESPACE_URI = OdfDocumentNamespace.DRAW.getUri();
+    private static final String DR3D_NAMESPACE_URI = OdfDocumentNamespace.DR3D.getUri();
+    private static final String PRESENTATION_NAMESPACE_URI = OdfDocumentNamespace.PRESENTATION.getUri();
 
     private static final String H = "h";
     private static final String P = "p";
@@ -163,7 +166,65 @@ class ForeignContentFilter extends XMLFilterImpl {
             }
 
             boolean bParagraphAncestor = hasParagraphAncestorElement();
-            bParagraphAncestor |= ((aLocalName.equals(P) || aLocalName.equals(H)) && aUri.equals(TEXT_NAMESPACE_URI));
+            if ((aLocalName.equals(P) || aLocalName.equals(H)) && aUri.equals(TEXT_NAMESPACE_URI))
+                bParagraphAncestor = true;
+            else if ((aUri.equals(TEXT_NAMESPACE_URI) && (
+                       aLocalName.equals("s")
+                    || aLocalName.equals("tab")
+                    || aLocalName.equals("line-break")
+                    || aLocalName.equals("soft-page-break")
+                    || aLocalName.equals("bookmark")
+                    || aLocalName.equals("bookmark-start")
+                    || aLocalName.equals("bookmark-end")
+                    || aLocalName.equals("reference-mark")
+                    || aLocalName.equals("reference-mark-start")
+                    || aLocalName.equals("reference-mark-end")
+                    || aLocalName.equals("note")
+                    || aLocalName.equals("change")
+                    || aLocalName.equals("change-start")
+                    || aLocalName.equals("change-end")
+                    || aLocalName.equals("toc-mark")
+                    || aLocalName.equals("toc-mark-start")
+                    || aLocalName.equals("toc-mark-end")
+                    || aLocalName.equals("alphabetical-index-mark")
+                    || aLocalName.equals("alphabetical-index-mark-start")
+                    || aLocalName.equals("alphabetical-index-mark-end")
+                    || aLocalName.equals("user-index-mark")
+                    || aLocalName.equals("user-index-mark-start")
+                    || aLocalName.equals("user-index-mark-end")))
+                || (aUri.equals(OFFICE_NAMESPACE_URI) && (
+                       aLocalName.equals("annotation")
+                    || aLocalName.equals("annotation-end")))
+                || (aUri.equals(DRAW_NAMESPACE_URI) && (
+                       aLocalName.equals("a")
+                    || aLocalName.equals("rect")
+                    || aLocalName.equals("line")
+                    || aLocalName.equals("polyline")
+                    || aLocalName.equals("polygon")
+                    || aLocalName.equals("regular-polygon")
+                    || aLocalName.equals("path")
+                    || aLocalName.equals("circle")
+                    || aLocalName.equals("g")
+                    || aLocalName.equals("page-thumbnail")
+                    || aLocalName.equals("frame")
+                    || aLocalName.equals("measure")
+                    || aLocalName.equals("caption")
+                    || aLocalName.equals("connector")
+                    || aLocalName.equals("control")
+                    || aLocalName.equals("custom-shape")))
+                || (aUri.equals(DR3D_NAMESPACE_URI) && (
+                       aLocalName.equals("scene")))
+                || (aUri.equals(PRESENTATION_NAMESPACE_URI) && (
+                       aLocalName.equals("header")
+                    || aLocalName.equals("footer")
+                    || aLocalName.equals("date-time"))))
+            {
+                // elements that do not contain character data - by ODF 1.2
+                // part 1 3.17, the character data in foreign elements
+                // below these should be ignored by default
+                bParagraphAncestor = false;
+            }
+
             m_aParagraphAncestorElements.add(bParagraphAncestor);
 
             super.startElement(aUri, aLocalName, aQName, aAtts);
diff --git a/validator/src/test/java/org/odftoolkit/odfvalidator/ValidTest.java b/validator/src/test/java/org/odftoolkit/odfvalidator/ValidTest.java
index 8d63d1e..c6e4633 100644
--- a/validator/src/test/java/org/odftoolkit/odfvalidator/ValidTest.java
+++ b/validator/src/test/java/org/odftoolkit/odfvalidator/ValidTest.java
@@ -142,4 +142,24 @@ public class ValidTest extends OdfValidatorTestBase {
         Assert.assertTrue(output.contains("styles.xml[34,79]:"));
     }
 
+    @Test
+    public void validateForeignElementCharacterContentExtendedInNonCharacterElement() {
+        String output = "";
+        try {
+            String name = "sender-initials.odt";
+            output = doValidation(name, OdfVersion.V1_2, OdfValidatorMode.EXTENDED_CONFORMANCE, true);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            Assert.fail(t.toString());
+        }
+        if(output.contains("Exception")){
+            System.out.println("OUTPUT:" + output);
+            Assert.fail("An exception occurred during validation!");
+        }
+        System.out.println("OUTPUT:" + output);
+        Assert.assertFalse(output.contains("unexpected character literal"));
+        Assert.assertFalse(output.contains("Error:"));
+    }
+
+
 }
diff --git a/validator/src/test/resources/sender-initials.odt b/validator/src/test/resources/sender-initials.odt
new file mode 100644
index 0000000..61097ac
Binary files /dev/null and b/validator/src/test/resources/sender-initials.odt differ

-- 
To stop receiving notification emails like this one, please contact
mst@apache.org.

[odftoolkit] 01/02: ODFTOOLKIT-460 validator: do not report missing file entries for document signatures

Posted by ms...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mst pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/odftoolkit.git

commit 655fd67275f116ee42f3856e9428766073e59187
Author: Michael Stahl <ms...@redhat.com>
AuthorDate: Tue Jul 18 17:52:30 2017 +0200

    ODFTOOLKIT-460 validator: do not report missing file entries for document signatures
    
    ODF 1.2, part3, 3.2 Manifest:
    
    The “META-INF/manifest.xml” file need not contain <manifest:file-entry>
    elements 4.3 whose manifest:full-path attribute 4.8.4 references files
    whose relative path start with "META-INF/".
---
 .../java/org/odftoolkit/odfdom/pkg/OdfPackage.java    |   5 ++++-
 .../odftoolkit/odfvalidator/InvalidPackageTest.java   |  18 ++++++++++++++++++
 validator/src/test/resources/good.odt                 | Bin 0 -> 10878 bytes
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackage.java b/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackage.java
index 82d8dc9..29a998f 100644
--- a/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackage.java
+++ b/odfdom/src/main/java/org/odftoolkit/odfdom/pkg/OdfPackage.java
@@ -502,7 +502,10 @@ public class OdfPackage implements Closeable {
 			String internalPath;
 			while (iter.hasNext()) {
 				internalPath = (String) iter.next();
-				if (!internalPath.endsWith(SLASH)) { // not for directories!
+				if (!internalPath.endsWith(SLASH) && // not for directories!
+					// The “META-INF/manifest.xml” file need not contain <manifest:file-entry> elements 4.3 whose manifest:full-path attribute 4.8.4 references files whose relative path start with "META-INF/".
+					!internalPath.startsWith("META-INF/"))
+				{
 					logValidationError(OdfPackageConstraint.MANIFEST_DOES_NOT_LIST_FILE, documentURL, internalPath);
 				}
 			}
diff --git a/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java b/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java
index b9e1b66..de75465 100644
--- a/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java
+++ b/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java
@@ -127,4 +127,22 @@ public class InvalidPackageTest extends OdfValidatorTestBase {
         Assert.assertTrue(output.contains("Fatal: ZIP entry 'mimetype': only DEFLATED entries can have EXT descriptor"));
         java.util.logging.Logger.getLogger(getClass().getName()).log(Level.INFO, "Test result:\n{0}", output);
     }
+
+    @Test
+    public void validateDocumentSignature() {
+        String output = "";
+        try {
+            // the manifest.xml is valid, but "META-INF/documentsignatures.xml"
+            // was erroneously reported as missing
+            String name = "good.odt";
+            output = doValidation(name, OdfVersion.V1_2, OdfValidatorMode.EXTENDED_CONFORMANCE);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            Assert.fail(t.toString());
+        }
+        Assert.assertFalse("Output of validateDocumentSignature(): " + output, output.contains("Error: The file 'META-INF/documentsignatures.xml' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package 'good.odt'"));
+        Assert.assertTrue("Output of validateDocumentSignature(): " + output, output.contains("Error: element \"document-signatures\" is missing \"version\" attribute"));
+        Assert.assertTrue("Output of validateDocumentSignature(): " + output, output.contains("good.odt:  Info: 1 errors, no warnings"));
+    }
+
 }
diff --git a/validator/src/test/resources/good.odt b/validator/src/test/resources/good.odt
new file mode 100644
index 0000000..8c6019d
Binary files /dev/null and b/validator/src/test/resources/good.odt differ

-- 
To stop receiving notification emails like this one, please contact
mst@apache.org.