You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2018/10/02 19:16:00 UTC

svn commit: r1842647 - /poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java

Author: fanningpj
Date: Tue Oct  2 19:16:00 2018
New Revision: 1842647

URL: http://svn.apache.org/viewvc?rev=1842647&view=rev
Log:
[bug-62796] remove use of Stax Namespace class from PackagePropertiesMarshaller

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java?rev=1842647&r1=1842646&r2=1842647&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java Tue Oct  2 19:16:00 2018
@@ -21,15 +21,12 @@ import java.io.OutputStream;
 import java.util.Optional;
 
 import javax.xml.XMLConstants;
-import javax.xml.stream.XMLEventFactory;
-import javax.xml.stream.events.Namespace;
 
 import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart;
 import org.apache.poi.openxml4j.opc.internal.PartMarshaller;
 import org.apache.poi.ooxml.util.DocumentHelper;
-import org.apache.poi.util.StaxHelper;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
@@ -37,105 +34,109 @@ import org.w3c.dom.Element;
  * Package properties marshaller.
  */
 public class PackagePropertiesMarshaller implements PartMarshaller {
-    private final static Namespace namespaceDC, namespaceCoreProperties, namespaceDcTerms, namespaceXSI;
-	static {
-	    final XMLEventFactory f = StaxHelper.newXMLEventFactory();
-	    namespaceDC = f.createNamespace("dc", PackagePropertiesPart.NAMESPACE_DC_URI);
-	    namespaceCoreProperties = f.createNamespace("cp", PackagePropertiesPart.NAMESPACE_CP_URI);
-	    namespaceDcTerms = f.createNamespace("dcterms", PackagePropertiesPart.NAMESPACE_DCTERMS_URI);
-	    namespaceXSI = f.createNamespace("xsi", XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI);
-	}
+    private final static NamespaceImpl namespaceDC =
+            new NamespaceImpl("dc", PackagePropertiesPart.NAMESPACE_DC_URI);
+    private final static NamespaceImpl namespaceCoreProperties =
+            new NamespaceImpl("cp", PackagePropertiesPart.NAMESPACE_CP_URI);;
+    private final static NamespaceImpl namespaceDcTerms =
+            new NamespaceImpl("dcterms", PackagePropertiesPart.NAMESPACE_DCTERMS_URI);
+    private final static NamespaceImpl namespaceXSI =
+            new NamespaceImpl("xsi", XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI);;
+            
+    protected static final String KEYWORD_CATEGORY = "category";
 
-	protected static final String KEYWORD_CATEGORY = "category";
+    protected static final String KEYWORD_CONTENT_STATUS = "contentStatus";
 
-	protected static final String KEYWORD_CONTENT_STATUS = "contentStatus";
+    protected static final String KEYWORD_CONTENT_TYPE = "contentType";
 
-	protected static final String KEYWORD_CONTENT_TYPE = "contentType";
+    protected static final String KEYWORD_CREATED = "created";
 
-	protected static final String KEYWORD_CREATED = "created";
+    protected static final String KEYWORD_CREATOR = "creator";
 
-	protected static final String KEYWORD_CREATOR = "creator";
+    protected static final String KEYWORD_DESCRIPTION = "description";
 
-	protected static final String KEYWORD_DESCRIPTION = "description";
+    protected static final String KEYWORD_IDENTIFIER = "identifier";
 
-	protected static final String KEYWORD_IDENTIFIER = "identifier";
+    protected static final String KEYWORD_KEYWORDS = "keywords";
 
-	protected static final String KEYWORD_KEYWORDS = "keywords";
+    protected static final String KEYWORD_LANGUAGE = "language";
 
-	protected static final String KEYWORD_LANGUAGE = "language";
+    protected static final String KEYWORD_LAST_MODIFIED_BY = "lastModifiedBy";
 
-	protected static final String KEYWORD_LAST_MODIFIED_BY = "lastModifiedBy";
+    protected static final String KEYWORD_LAST_PRINTED = "lastPrinted";
 
-	protected static final String KEYWORD_LAST_PRINTED = "lastPrinted";
+    protected static final String KEYWORD_MODIFIED = "modified";
 
-	protected static final String KEYWORD_MODIFIED = "modified";
+    protected static final String KEYWORD_REVISION = "revision";
 
-	protected static final String KEYWORD_REVISION = "revision";
+    protected static final String KEYWORD_SUBJECT = "subject";
 
-	protected static final String KEYWORD_SUBJECT = "subject";
+    protected static final String KEYWORD_TITLE = "title";
 
-	protected static final String KEYWORD_TITLE = "title";
+    protected static final String KEYWORD_VERSION = "version";
 
-	protected static final String KEYWORD_VERSION = "version";
+    PackagePropertiesPart propsPart;
 
-	PackagePropertiesPart propsPart;
+    // The document
+    Document xmlDoc;
 
-	// The document
-	Document xmlDoc;
-
-	/**
-	 * Marshall package core properties to an XML document. Always return
-	 * <code>true</code>.
-	 */
-	@Override
-	public boolean marshall(PackagePart part, OutputStream out)
-			throws OpenXML4JException {
-		if (!(part instanceof PackagePropertiesPart))
-			throw new IllegalArgumentException(
-					"'part' must be a PackagePropertiesPart instance.");
-		propsPart = (PackagePropertiesPart) part;
+    /**
+     * Marshall package core properties to an XML document. Always return
+     * <code>true</code>.
+     */
+    @Override
+    public boolean marshall(PackagePart part, OutputStream out)
+            throws OpenXML4JException {
+        if (!(part instanceof PackagePropertiesPart))
+            throw new IllegalArgumentException(
+                    "'part' must be a PackagePropertiesPart instance.");
+        propsPart = (PackagePropertiesPart) part;
 
-		// Configure the document
-		xmlDoc = DocumentHelper.createDocument();
+        // Configure the document
+        xmlDoc = DocumentHelper.createDocument();
         Element rootElem = xmlDoc.createElementNS(namespaceCoreProperties.getNamespaceURI(),
                 getQName("coreProperties", namespaceCoreProperties));
-        DocumentHelper.addNamespaceDeclaration(rootElem, namespaceCoreProperties);
-        DocumentHelper.addNamespaceDeclaration(rootElem, namespaceDC);
-        DocumentHelper.addNamespaceDeclaration(rootElem, namespaceDcTerms);
-        DocumentHelper.addNamespaceDeclaration(rootElem, namespaceXSI);
+        DocumentHelper.addNamespaceDeclaration(rootElem,
+                namespaceCoreProperties.getPrefix(), namespaceCoreProperties.getNamespaceURI());
+        DocumentHelper.addNamespaceDeclaration(rootElem,
+                namespaceDC.getPrefix(), namespaceDC.getNamespaceURI());
+        DocumentHelper.addNamespaceDeclaration(rootElem,
+                namespaceDcTerms.getPrefix(), namespaceDcTerms.getNamespaceURI());
+        DocumentHelper.addNamespaceDeclaration(rootElem,
+                namespaceXSI.getPrefix(), namespaceXSI.getNamespaceURI());
         xmlDoc.appendChild(rootElem);
 
-		addCategory();
-		addContentStatus();
-		addContentType();
-		addCreated();
-		addCreator();
-		addDescription();
-		addIdentifier();
-		addKeywords();
-		addLanguage();
-		addLastModifiedBy();
-		addLastPrinted();
-		addModified();
-		addRevision();
-		addSubject();
-		addTitle();
-		addVersion();
-		return true;
-	}
+        addCategory();
+        addContentStatus();
+        addContentType();
+        addCreated();
+        addCreator();
+        addDescription();
+        addIdentifier();
+        addKeywords();
+        addLanguage();
+        addLastModifiedBy();
+        addLastPrinted();
+        addModified();
+        addRevision();
+        addSubject();
+        addTitle();
+        addVersion();
+        return true;
+    }
 
     /**
      * Sets the given element's text content, creating it if necessary.
      */
-    private Element setElementTextContent(String localName, Namespace namespace, Optional<String> property) {
+    private Element setElementTextContent(String localName, NamespaceImpl namespace, Optional<String> property) {
         return setElementTextContent(localName, namespace, property, property.orElse(null));
     }
-    
-    private String getQName(String localName, Namespace namespace) {
+
+    private String getQName(String localName, NamespaceImpl namespace) {
         return namespace.getPrefix().isEmpty() ? localName : namespace.getPrefix() + ':' + localName;
     }
 
-    private Element setElementTextContent(String localName, Namespace namespace, Optional<?> property, String propertyValue) {
+    private Element setElementTextContent(String localName, NamespaceImpl namespace, Optional<?> property, String propertyValue) {
         if (!property.isPresent())
             return null;
 
@@ -150,7 +151,7 @@ public class PackagePropertiesMarshaller
         return elem;
     }
 
-    private Element setElementTextContent(String localName, Namespace namespace, Optional<?> property, String propertyValue, String xsiType) {
+    private Element setElementTextContent(String localName, NamespaceImpl namespace, Optional<?> property, String propertyValue, String xsiType) {
         Element element = setElementTextContent(localName, namespace, property, propertyValue);
         if (element != null) {
             element.setAttributeNS(namespaceXSI.getNamespaceURI(), getQName("type", namespaceXSI), xsiType);
@@ -160,114 +161,129 @@ public class PackagePropertiesMarshaller
 
 
     /**
-	 * Add category property element if needed.
-	 */
-	private void addCategory() {
+     * Add category property element if needed.
+     */
+    private void addCategory() {
         setElementTextContent(KEYWORD_CATEGORY, namespaceCoreProperties, propsPart.getCategoryProperty());
-	}
+    }
 
-	/**
-	 * Add content status property element if needed.
-	 */
-	private void addContentStatus() {
+    /**
+     * Add content status property element if needed.
+     */
+    private void addContentStatus() {
         setElementTextContent(KEYWORD_CONTENT_STATUS, namespaceCoreProperties, propsPart.getContentStatusProperty());
-	}
+    }
 
-	/**
-	 * Add content type property element if needed.
-	 */
-	private void addContentType() {
+    /**
+     * Add content type property element if needed.
+     */
+    private void addContentType() {
         setElementTextContent(KEYWORD_CONTENT_TYPE, namespaceCoreProperties, propsPart.getContentTypeProperty());
-	}
+    }
 
-	/**
-	 * Add created property element if needed.
-	 */
-	private void addCreated() {
+    /**
+     * Add created property element if needed.
+     */
+    private void addCreated() {
         setElementTextContent(KEYWORD_CREATED, namespaceDcTerms, propsPart.getCreatedProperty(),
                 propsPart.getCreatedPropertyString(), "dcterms:W3CDTF");
-	}
+    }
 
-	/**
-	 * Add creator property element if needed.
-	 */
-	private void addCreator() {
+    /**
+     * Add creator property element if needed.
+     */
+    private void addCreator() {
         setElementTextContent(KEYWORD_CREATOR, namespaceDC, propsPart.getCreatorProperty());
-	}
+    }
 
-	/**
-	 * Add description property element if needed.
-	 */
-	private void addDescription() {
+    /**
+     * Add description property element if needed.
+     */
+    private void addDescription() {
         setElementTextContent(KEYWORD_DESCRIPTION, namespaceDC, propsPart.getDescriptionProperty());
-	}
+    }
 
-	/**
-	 * Add identifier property element if needed.
-	 */
-	private void addIdentifier() {
+    /**
+     * Add identifier property element if needed.
+     */
+    private void addIdentifier() {
         setElementTextContent(KEYWORD_IDENTIFIER, namespaceDC, propsPart.getIdentifierProperty());
-	}
+    }
 
     /**
-	 * Add keywords property element if needed.
-	 */
-	private void addKeywords() {
+     * Add keywords property element if needed.
+     */
+    private void addKeywords() {
         setElementTextContent(KEYWORD_KEYWORDS, namespaceCoreProperties, propsPart.getKeywordsProperty());
-	}
+    }
 
-	/**
-	 * Add language property element if needed.
-	 */
-	private void addLanguage() {
+    /**
+     * Add language property element if needed.
+     */
+    private void addLanguage() {
         setElementTextContent(KEYWORD_LANGUAGE, namespaceDC, propsPart.getLanguageProperty());
-	}
+    }
 
-	/**
-	 * Add 'last modified by' property if needed.
-	 */
-	private void addLastModifiedBy() {
+    /**
+     * Add 'last modified by' property if needed.
+     */
+    private void addLastModifiedBy() {
         setElementTextContent(KEYWORD_LAST_MODIFIED_BY, namespaceCoreProperties, propsPart.getLastModifiedByProperty());
-	}
+    }
 
-	/**
-	 * Add 'last printed' property if needed.
-	 *
-	 */
-	private void addLastPrinted() {
+    /**
+     * Add 'last printed' property if needed.
+     */
+    private void addLastPrinted() {
         setElementTextContent(KEYWORD_LAST_PRINTED, namespaceCoreProperties, propsPart.getLastPrintedProperty(), propsPart.getLastPrintedPropertyString());
-	}
+    }
 
-	/**
-	 * Add modified property element if needed.
-	 */
-	private void addModified() {
+    /**
+     * Add modified property element if needed.
+     */
+    private void addModified() {
         setElementTextContent(KEYWORD_MODIFIED, namespaceDcTerms, propsPart.getModifiedProperty(),
                 propsPart.getModifiedPropertyString(), "dcterms:W3CDTF");
     }
 
-	/**
-	 * Add revision property if needed.
-	 */
-	private void addRevision() {
+    /**
+     * Add revision property if needed.
+     */
+    private void addRevision() {
         setElementTextContent(KEYWORD_REVISION, namespaceCoreProperties, propsPart.getRevisionProperty());
-	}
+    }
 
-	/**
-	 * Add subject property if needed.
-	 */
-	private void addSubject() {
+    /**
+     * Add subject property if needed.
+     */
+    private void addSubject() {
         setElementTextContent(KEYWORD_SUBJECT, namespaceDC, propsPart.getSubjectProperty());
-	}
+    }
 
-	/**
-	 * Add title property if needed.
-	 */
-	private void addTitle() {
+    /**
+     * Add title property if needed.
+     */
+    private void addTitle() {
         setElementTextContent(KEYWORD_TITLE, namespaceDC, propsPart.getTitleProperty());
-	}
+    }
 
-	private void addVersion() {
+    private void addVersion() {
         setElementTextContent(KEYWORD_VERSION, namespaceCoreProperties, propsPart.getVersionProperty());
-	}
-}
+    }
+
+    private static class NamespaceImpl {
+        private final String prefix;
+        private final String namespaceURI;
+
+        NamespaceImpl(String prefix, String namespaceURI) {
+            this.prefix = prefix;
+            this.namespaceURI = namespaceURI;
+        }
+
+        public String getPrefix() { return prefix; }
+
+        public String getNamespaceURI() {
+            return namespaceURI;
+        }
+    }
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org