]> source.dussan.org Git - poi.git/commitdiff
#64036 - Replace reflection calls in factories for Java 9+ - POIXMLDocument factories
authorAndreas Beeker <kiwiwings@apache.org>
Mon, 27 Jan 2020 00:31:01 +0000 (00:31 +0000)
committerAndreas Beeker <kiwiwings@apache.org>
Mon, 27 Jan 2020 00:31:01 +0000 (00:31 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1873190 13f79535-47bb-0310-9956-ffa450edef68

25 files changed:
src/ooxml/java/org/apache/poi/ooxml/POIXMLFactory.java
src/ooxml/java/org/apache/poi/ooxml/POIXMLRelation.java
src/ooxml/java/org/apache/poi/poifs/crypt/dsig/DSigRelation.java
src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFBaseContents.java
src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFFactory.java
src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFMasterContents.java
src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFMasters.java
src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFPageContents.java
src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFPages.java
src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFRelation.java
src/ooxml/java/org/apache/poi/xdgf/xml/XDGFXMLDocumentPart.java
src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFFactory.java
src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableStyles.java
src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRelation.java
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFactory.java
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java
src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFEndnotes.java
src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFactory.java
src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnotes.java
src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNumbering.java
src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java
src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java
src/ooxml/testcases/org/apache/poi/ooxml/TestPOIXMLDocument.java

index 3c88f1fae2fc6dec70b1bda8b4e207de37989324..9528b0c6ca376c64a63be7d0582033365cace31b 100644 (file)
 ==================================================================== */
 package org.apache.poi.ooxml;
 
-import java.lang.reflect.InvocationTargetException;
+import java.io.IOException;
 
+import org.apache.poi.ooxml.POIXMLRelation.PackagePartConstructor;
+import org.apache.poi.ooxml.POIXMLRelation.ParentPartConstructor;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.PackageRelationship;
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.util.POILogger;
+import org.apache.xmlbeans.XmlException;
 
 /**
  * Defines a factory API that enables sub-classes to create instances of <code>POIXMLDocumentPart</code>
@@ -30,9 +33,6 @@ import org.apache.poi.util.POILogger;
 public abstract class POIXMLFactory {
     private static final POILogger LOGGER = POILogFactory.getLogger(POIXMLFactory.class);
 
-    private static final Class<?>[] PARENT_PART = {POIXMLDocumentPart.class, PackagePart.class};
-    private static final Class<?>[] ORPHAN_PART = {PackagePart.class};
-    
     /**
      * Create a POIXMLDocumentPart from existing package part and relation. This method is called
      * from {@link POIXMLDocument#load(POIXMLFactory)} when parsing a document
@@ -40,7 +40,7 @@ public abstract class POIXMLFactory {
      * @param parent parent part
      * @param part  the PackagePart representing the created instance
      * @return A new instance of a POIXMLDocumentPart.
-     * 
+     *
      * @since by POI 3.14-Beta1
      */
     public POIXMLDocumentPart createDocumentPart(POIXMLDocumentPart parent, PackagePart part) {
@@ -50,48 +50,31 @@ public abstract class POIXMLFactory {
 
         // don't parse the document parts, if its class can't be determined
         // or if it's a package relation of another embedded resource
-        if (descriptor == null || descriptor.getRelationClass() == null || POIXMLDocument.PACK_OBJECT_REL_TYPE.equals(relType)) {
-            LOGGER.log(POILogger.DEBUG, "using default POIXMLDocumentPart for " + rel.getRelationshipType());
-            return new POIXMLDocumentPart(parent, part);
-        }
-
-        Class<? extends POIXMLDocumentPart> cls = descriptor.getRelationClass();
         try {
-            try {
-                return createDocumentPart(cls, PARENT_PART, new Object[]{parent, part});
-            } catch (NoSuchMethodException e) {
-                return createDocumentPart(cls, ORPHAN_PART, new Object[]{part});
+            if (descriptor != null && !POIXMLDocument.PACK_OBJECT_REL_TYPE.equals(relType)) {
+                ParentPartConstructor parentPartConstructor = descriptor.getParentPartConstructor();
+                if (parentPartConstructor != null) {
+                    return parentPartConstructor.init(parent, part);
+                }
+                PackagePartConstructor packagePartConstructor = descriptor.getPackagePartConstructor();
+                if (packagePartConstructor != null) {
+                    return packagePartConstructor.init(part);
+                }
             }
-        } catch (Exception e) {
-            throw new POIXMLException((e.getCause() != null ? e.getCause() : e).getMessage(), e);
+
+            LOGGER.log(POILogger.DEBUG, "using default POIXMLDocumentPart for " + rel.getRelationshipType());
+            return new POIXMLDocumentPart(parent, part);
+        } catch (IOException | XmlException e) {
+            throw new POIXMLException(e.getMessage(), e);
         }
     }
-    
-    /**
-     * Need to delegate instantiation to sub class because of constructor visibility
-     *
-     * @param cls the document class to be instantiated
-     * @param classes the classes of the constructor arguments
-     * @param values the values of the constructor arguments
-     * @return the new document / part
-     * @throws SecurityException thrown if the object can't be instantiated
-     * @throws NoSuchMethodException thrown if there is no constructor found for the given arguments
-     * @throws InstantiationException thrown if the object can't be instantiated
-     * @throws IllegalAccessException thrown if the object can't be instantiated
-     * @throws InvocationTargetException thrown if the object can't be instantiated
-     * 
-     * @since POI 3.14-Beta1
-     */
-    protected abstract POIXMLDocumentPart createDocumentPart
-        (Class<? extends POIXMLDocumentPart> cls, Class<?>[] classes, Object[] values)
-    throws SecurityException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException;
-    
+
     /**
-     * returns the descriptor for the given relationship type 
+     * returns the descriptor for the given relationship type
      *
      * @param relationshipType the relationship type of the descriptor
      * @return the descriptor or null if type is unknown
-     * 
+     *
      * @since POI 3.14-Beta1
      */
     protected abstract POIXMLRelation getDescriptor(String relationshipType);
@@ -104,24 +87,23 @@ public abstract class POIXMLFactory {
      * @return A new instance of a POIXMLDocumentPart.
      */
      public POIXMLDocumentPart newDocumentPart(POIXMLRelation descriptor) {
-         Class<? extends POIXMLDocumentPart> cls = descriptor.getRelationClass();
-         try {
-             return createDocumentPart(cls, null, null);
-         } catch (Exception e) {
-             throw new POIXMLException(e);
+         if (descriptor == null || descriptor.getNoArgConstructor() == null) {
+             throw new POIXMLException("can't initialize POIXMLDocumentPart");
          }
+
+         return descriptor.getNoArgConstructor().init();
      }
 
      /**
       * Retrieves the package relationship of the child part within the parent
-      * 
+      *
       * @param parent the parent to search for the part
       * @param part the part to look for
-      * 
+      *
       * @return the relationship
-      * 
+      *
       * @throws POIXMLException if the relations are erroneous or the part is not related
-      * 
+      *
       * @since POI 3.14-Beta1
       */
      protected PackageRelationship getPackageRelationship(POIXMLDocumentPart parent, PackagePart part) {
@@ -136,7 +118,7 @@ public abstract class POIXMLFactory {
          } catch (InvalidFormatException e) {
              throw new POIXMLException("error while determining package relations", e);
          }
-         
+
          throw new POIXMLException("package part isn't a child of the parent document.");
      }
 }
index c661ce8e203da104c703b5a34dff734e084136cd..e44a8442fdbbaddeeadd1cf9da3cc8c9c5615781 100644 (file)
@@ -26,14 +26,31 @@ import org.apache.poi.openxml4j.opc.PackagePartName;
 import org.apache.poi.openxml4j.opc.PackageRelationship;
 import org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
 import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.util.Internal;
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.util.POILogger;
+import org.apache.xmlbeans.XmlException;
 
 /**
  * Represents a descriptor of a OOXML relation.
  */
 public abstract class POIXMLRelation {
 
+    @Internal
+    public interface NoArgConstructor {
+        POIXMLDocumentPart init();
+    }
+
+    @Internal
+    public interface PackagePartConstructor {
+        POIXMLDocumentPart init(PackagePart part) throws IOException, XmlException;
+    }
+
+    @Internal
+    public interface ParentPartConstructor {
+        POIXMLDocumentPart init(POIXMLDocumentPart parent, PackagePart part) throws IOException, XmlException;
+    }
+
     private static final POILogger log = POILogFactory.getLogger(POIXMLRelation.class);
 
     /**
@@ -52,9 +69,11 @@ public abstract class POIXMLRelation {
     private String _defaultName;
 
     /**
-     * Defines what object is used to construct instances of this relationship
+     * Constructors or factory method to construct instances of this relationship
      */
-    private Class<? extends POIXMLDocumentPart> _cls;
+    private final NoArgConstructor noArgConstructor;
+    private final PackagePartConstructor packagePartConstructor;
+    private final ParentPartConstructor parentPartConstructor;
 
     /**
      * Instantiates a POIXMLRelation.
@@ -62,13 +81,19 @@ public abstract class POIXMLRelation {
      * @param type content type
      * @param rel  relationship
      * @param defaultName default item name
-     * @param cls defines what object is used to construct instances of this relationship
+     * @param noArgConstructor method used to construct instances of this relationship from scratch
+     * @param packagePartConstructor method used to construct instances of this relationship with a package part
      */
-    public POIXMLRelation(String type, String rel, String defaultName, Class<? extends POIXMLDocumentPart> cls) {
+    protected POIXMLRelation(String type, String rel, String defaultName,
+                             NoArgConstructor noArgConstructor,
+                             PackagePartConstructor packagePartConstructor,
+                             ParentPartConstructor parentPartConstructor) {
         _type = type;
         _relation = rel;
         _defaultName = defaultName;
-        _cls = cls;
+        this.noArgConstructor = noArgConstructor;
+        this.packagePartConstructor = packagePartConstructor;
+        this.parentPartConstructor = parentPartConstructor;
     }
 
     /**
@@ -78,8 +103,8 @@ public abstract class POIXMLRelation {
      * @param rel  relationship
      * @param defaultName default item name
      */
-    public POIXMLRelation(String type, String rel, String defaultName) {
-        this(type, rel, defaultName, null);
+    protected POIXMLRelation(String type, String rel, String defaultName) {
+        this(type, rel, defaultName, null, null, null);
     }
     /**
      * Return the content type. Content types define a media type, a subtype, and an
@@ -114,7 +139,7 @@ public abstract class POIXMLRelation {
 
     /**
      * Returns the filename for the nth one of these, e.g. /xl/comments4.xml
-     * 
+     *
      * @param index the suffix for the document type
      * @return the filename including the suffix
      */
@@ -125,11 +150,11 @@ public abstract class POIXMLRelation {
         }
         return _defaultName.replace("#", Integer.toString(index));
     }
-    
+
     /**
      * Returns the index of the filename within the package for the given part.
      *  e.g. 4 for /xl/comments4.xml
-     *  
+     *
      * @param part the part to read the suffix from
      * @return the suffix
      */
@@ -137,14 +162,32 @@ public abstract class POIXMLRelation {
         String regex = _defaultName.replace("#", "(\\d+)");
         return Integer.valueOf(part.getPackagePart().getPartName().getName().replaceAll(regex, "$1"));
     }
-    
+
+    /**
+     * @return the constructor method used to construct instances of this relationship from scratch
+     *
+     *  @since 4.1.2
+     */
+    public NoArgConstructor getNoArgConstructor() {
+        return noArgConstructor;
+    }
+
+    /**
+     * @return the constructor method used to construct instances of this relationship with a package part
+     *
+     *  @since 4.1.2
+     */
+    public PackagePartConstructor getPackagePartConstructor() {
+        return packagePartConstructor;
+    }
+
     /**
-     * Return type of the object used to construct instances of this relationship
+     * @return the constructor method used to construct instances of this relationship with a package part
      *
-     * @return the class of the object used to construct instances of this relation
+     *  @since 4.1.2
      */
-    public Class<? extends POIXMLDocumentPart> getRelationClass(){
-        return _cls;
+    public ParentPartConstructor getParentPartConstructor() {
+        return parentPartConstructor;
     }
 
     /**
index 707233b0749aa69d86f39de6db31c254303a3665..ba1909a62fed283dee23951b92c6fad5bd06dc01 100644 (file)
@@ -20,7 +20,6 @@ package org.apache.poi.poifs.crypt.dsig;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLRelation;
 import org.apache.poi.openxml4j.opc.ContentTypes;
 import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
@@ -32,19 +31,19 @@ public class DSigRelation extends POIXMLRelation {
     private static final Map<String, DSigRelation> _table = new HashMap<>();
 
     public static final DSigRelation ORIGIN_SIGS = new DSigRelation(
-            ContentTypes.DIGITAL_SIGNATURE_ORIGIN_PART,
-            PackageRelationshipTypes.DIGITAL_SIGNATURE_ORIGIN,
-            "/_xmlsignatures/origin.sigs", null
+        ContentTypes.DIGITAL_SIGNATURE_ORIGIN_PART,
+        PackageRelationshipTypes.DIGITAL_SIGNATURE_ORIGIN,
+        "/_xmlsignatures/origin.sigs"
     );
 
     public static final DSigRelation SIG = new DSigRelation(
         ContentTypes.DIGITAL_SIGNATURE_XML_SIGNATURE_PART,
             PackageRelationshipTypes.DIGITAL_SIGNATURE,
-        "/_xmlsignatures/sig#.xml", null
+        "/_xmlsignatures/sig#.xml"
     );
 
-    private DSigRelation(String type, String rel, String defaultName, Class<? extends POIXMLDocumentPart> cls) {
-        super(type, rel, defaultName, cls);
+    private DSigRelation(String type, String rel, String defaultName) {
+        super(type, rel, defaultName);
         _table.put(rel, this);
     }
 
index d1a1c9de0526c5989b4fcc9a1fa1d4608d41c8ee..9559cce58bd86c1848717e4f2235edbb4877c830 100644 (file)
@@ -25,6 +25,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.microsoft.schemas.office.visio.x2012.main.ConnectType;
+import com.microsoft.schemas.office.visio.x2012.main.PageContentsType;
+import com.microsoft.schemas.office.visio.x2012.main.ShapeSheetType;
 import org.apache.poi.ooxml.POIXMLException;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.util.Internal;
@@ -34,10 +37,6 @@ import org.apache.poi.xdgf.usermodel.shape.ShapeVisitor;
 import org.apache.poi.xdgf.usermodel.shape.exceptions.StopVisiting;
 import org.apache.poi.xdgf.xml.XDGFXMLDocumentPart;
 
-import com.microsoft.schemas.office.visio.x2012.main.ConnectType;
-import com.microsoft.schemas.office.visio.x2012.main.PageContentsType;
-import com.microsoft.schemas.office.visio.x2012.main.ShapeSheetType;
-
 /**
  * Container of shapes for a page in a Visio diagram. Shapes are not
  * necessarily literal shapes in the diagram, but is the term that is
@@ -55,10 +54,10 @@ public class XDGFBaseContents extends XDGFXMLDocumentPart {
     /**
      * @since POI 3.14-Beta1
      */
-    public XDGFBaseContents(PackagePart part, XDGFDocument document) {
-        super(part, document);
+    public XDGFBaseContents(PackagePart part) {
+        super(part);
     }
-    
+
     @Internal
     public PageContentsType getXmlObject() {
         return _pageContents;
@@ -133,7 +132,7 @@ public class XDGFBaseContents extends XDGFXMLDocumentPart {
     public List<XDGFShape> getTopLevelShapes() {
         return Collections.unmodifiableList(_toplevelShapes);
     }
-    
+
     public List<XDGFConnection> getConnections() {
         return Collections.unmodifiableList(_connections);
     }
index bf4ed46cf99ea435dc09569d49d9274658d87afe..6cd39cb7858a94e353a49d7dadfcf116a55386c5 100644 (file)
 
 package org.apache.poi.xdgf.usermodel;
 
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
 import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLFactory;
 import org.apache.poi.ooxml.POIXMLRelation;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.xdgf.xml.XDGFXMLDocumentPart;
 
 /**
  * Instantiates sub-classes of POIXMLDocumentPart depending on their relationship type
@@ -42,28 +41,21 @@ public class XDGFFactory extends POIXMLFactory {
         return XDGFRelation.getInstance(relationshipType);
     }
 
-    /**
-     * @since POI 3.14-Beta1
-     */
     @Override
-    protected POIXMLDocumentPart createDocumentPart
-        (Class<? extends POIXMLDocumentPart> cls, Class<?>[] classes, Object[] values)
-    throws SecurityException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
-        Class<?>[] cl;
-        Object[] vals;
-        if (classes == null) {
-            cl = new Class<?>[]{XDGFDocument.class};
-            vals = new Object[]{document};
-        } else {
-            cl = new Class<?>[classes.length+1];
-            System.arraycopy(classes, 0, cl, 0, classes.length);
-            cl[classes.length] = XDGFDocument.class;
-            vals = new Object[values.length+1];
-            System.arraycopy(values, 0, vals, 0, values.length);
-            vals[values.length] = document;
+    public POIXMLDocumentPart createDocumentPart(POIXMLDocumentPart parent, PackagePart part) {
+        POIXMLDocumentPart newPart = super.createDocumentPart(parent, part);
+        if (newPart instanceof XDGFXMLDocumentPart) {
+            ((XDGFXMLDocumentPart)newPart).setDocument(document);
+        }
+        return newPart;
+    }
+
+    @Override
+    public POIXMLDocumentPart newDocumentPart(POIXMLRelation descriptor) {
+        POIXMLDocumentPart newPart = super.newDocumentPart(descriptor);
+        if (newPart instanceof XDGFXMLDocumentPart) {
+            ((XDGFXMLDocumentPart)newPart).setDocument(document);
         }
-        
-        Constructor<? extends POIXMLDocumentPart> constructor = cls.getDeclaredConstructor(cl);
-        return constructor.newInstance(vals);
+        return newPart;
     }
 }
index 49050b3f35ed8092d959df6dfc25580fac93fd0d..efe0512efacde8d41ce3c3e9e2ca70370c11e1a1 100644 (file)
@@ -19,13 +19,12 @@ package org.apache.poi.xdgf.usermodel;
 
 import java.io.IOException;
 
+import com.microsoft.schemas.office.visio.x2012.main.MasterContentsDocument;
 import org.apache.poi.ooxml.POIXMLException;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.xdgf.exceptions.XDGFException;
 import org.apache.xmlbeans.XmlException;
 
-import com.microsoft.schemas.office.visio.x2012.main.MasterContentsDocument;
-
 /**
  * Contains the actual contents of the master/stencil
  */
@@ -36,10 +35,10 @@ public class XDGFMasterContents extends XDGFBaseContents {
     /**
      * @since POI 3.14-Beta1
      */
-    public XDGFMasterContents(PackagePart part, XDGFDocument document) {
-        super(part, document);
+    public XDGFMasterContents(PackagePart part) {
+        super(part);
     }
-    
+
     @Override
     protected void onDocumentRead() {
 
index 1f6aa47afa6bfd7c5a9775fae23cadb23a27882a..da79bc4e1ad1049058b17fd60598415166623f6f 100644 (file)
@@ -23,6 +23,9 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
+import com.microsoft.schemas.office.visio.x2012.main.MasterType;
+import com.microsoft.schemas.office.visio.x2012.main.MastersDocument;
+import com.microsoft.schemas.office.visio.x2012.main.MastersType;
 import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLException;
 import org.apache.poi.openxml4j.opc.PackagePart;
@@ -31,10 +34,6 @@ import org.apache.poi.xdgf.exceptions.XDGFException;
 import org.apache.poi.xdgf.xml.XDGFXMLDocumentPart;
 import org.apache.xmlbeans.XmlException;
 
-import com.microsoft.schemas.office.visio.x2012.main.MasterType;
-import com.microsoft.schemas.office.visio.x2012.main.MastersDocument;
-import com.microsoft.schemas.office.visio.x2012.main.MastersType;
-
 /**
  * A collection of masters (typically stencils) in a Visio document
  */
@@ -48,10 +47,10 @@ public class XDGFMasters extends XDGFXMLDocumentPart {
     /**
      * @since POI 3.14-Beta1
      */
-    public XDGFMasters(PackagePart part, XDGFDocument document) {
-        super(part, document);
+    public XDGFMasters(PackagePart part) {
+        super(part);
     }
-    
+
     @Internal
     protected MastersType getXmlObject() {
         return _mastersObject;
index 0a204b943c55f78f4edf7015729f47b24c6cf727..658c2ca98561ae9b97a01100f031c5f893b86e67 100644 (file)
@@ -21,14 +21,13 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
+import com.microsoft.schemas.office.visio.x2012.main.PageContentsDocument;
 import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLException;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.xdgf.exceptions.XDGFException;
 import org.apache.xmlbeans.XmlException;
 
-import com.microsoft.schemas.office.visio.x2012.main.PageContentsDocument;
-
 public class XDGFPageContents extends XDGFBaseContents {
 
     protected Map<Long, XDGFMaster> _masters = new HashMap<>();
@@ -37,10 +36,10 @@ public class XDGFPageContents extends XDGFBaseContents {
     /**
      * @since POI 3.14-Beta1
      */
-    public XDGFPageContents(PackagePart part, XDGFDocument document) {
-        super(part, document);
+    public XDGFPageContents(PackagePart part) {
+        super(part);
     }
-    
+
     @Override
     protected void onDocumentRead() {
         try {
index d40a17a997893858f72ace265e69c62daaf08b77..dbdf7aaa4ddeac6c35d4ec3e903ec243430f8c5d 100644 (file)
@@ -21,6 +21,9 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import com.microsoft.schemas.office.visio.x2012.main.PageType;
+import com.microsoft.schemas.office.visio.x2012.main.PagesDocument;
+import com.microsoft.schemas.office.visio.x2012.main.PagesType;
 import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLException;
 import org.apache.poi.openxml4j.opc.PackagePart;
@@ -29,10 +32,6 @@ import org.apache.poi.xdgf.exceptions.XDGFException;
 import org.apache.poi.xdgf.xml.XDGFXMLDocumentPart;
 import org.apache.xmlbeans.XmlException;
 
-import com.microsoft.schemas.office.visio.x2012.main.PageType;
-import com.microsoft.schemas.office.visio.x2012.main.PagesDocument;
-import com.microsoft.schemas.office.visio.x2012.main.PagesType;
-
 
 /**
  * Contains a list of Page objects (not page content!)
@@ -47,10 +46,10 @@ public class XDGFPages extends XDGFXMLDocumentPart {
     /**
      * @since POI 3.14-Beta1
      */
-    public XDGFPages(PackagePart part, XDGFDocument document) {
-        super(part, document);
+    public XDGFPages(PackagePart part) {
+        super(part);
     }
-    
+
     @Internal
     PagesType getXmlObject() {
         return _pagesObject;
index e20a4f2675963a5a465624cd3130893dd2e39afb..29b55ef7c261898323fa1989053798f0eb1539b5 100644 (file)
@@ -22,7 +22,6 @@ import java.util.Map;
 
 import org.apache.poi.ooxml.POIXMLRelation;
 import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
-import org.apache.poi.xdgf.xml.XDGFXMLDocumentPart;
 
 public class XDGFRelation extends POIXMLRelation {
 
@@ -32,41 +31,42 @@ public class XDGFRelation extends POIXMLRelation {
     private static final Map<String, XDGFRelation> _table = new HashMap<>();
 
     public static final XDGFRelation DOCUMENT = new XDGFRelation(
-            "application/vnd.ms-visio.drawing.main+xml",
-            PackageRelationshipTypes.VISIO_CORE_DOCUMENT,
-            "/visio/document.xml", null);
+        "application/vnd.ms-visio.drawing.main+xml",
+        PackageRelationshipTypes.VISIO_CORE_DOCUMENT,
+        "/visio/document.xml", null);
 
     public static final XDGFRelation MASTERS = new XDGFRelation(
-            "application/vnd.ms-visio.masters+xml",
-            "http://schemas.microsoft.com/visio/2010/relationships/masters",
-            "/visio/masters/masters.xml", XDGFMasters.class);
+        "application/vnd.ms-visio.masters+xml",
+        "http://schemas.microsoft.com/visio/2010/relationships/masters",
+        "/visio/masters/masters.xml", XDGFMasters::new);
 
     public static final XDGFRelation MASTER = new XDGFRelation(
-            "application/vnd.ms-visio.master+xml",
-            "http://schemas.microsoft.com/visio/2010/relationships/master",
-            "/visio/masters/master#.xml", XDGFMasterContents.class);
+        "application/vnd.ms-visio.master+xml",
+        "http://schemas.microsoft.com/visio/2010/relationships/master",
+        "/visio/masters/master#.xml", XDGFMasterContents::new);
 
     public static final XDGFRelation IMAGES = new XDGFRelation(null,
-            PackageRelationshipTypes.IMAGE_PART, null, null // XSSFPictureData.class
-            );
+        PackageRelationshipTypes.IMAGE_PART, null, null // XSSFPictureData.class
+    );
 
     public static final XDGFRelation PAGES = new XDGFRelation(
-            "application/vnd.ms-visio.pages+xml",
-            "http://schemas.microsoft.com/visio/2010/relationships/pages",
-            "/visio/pages/pages.xml", XDGFPages.class);
+        "application/vnd.ms-visio.pages+xml",
+        "http://schemas.microsoft.com/visio/2010/relationships/pages",
+        "/visio/pages/pages.xml", XDGFPages::new);
 
     public static final XDGFRelation PAGE = new XDGFRelation(
-            "application/vnd.ms-visio.page+xml",
-            "http://schemas.microsoft.com/visio/2010/relationships/page",
-            "/visio/pages/page#.xml", XDGFPageContents.class);
+        "application/vnd.ms-visio.page+xml",
+        "http://schemas.microsoft.com/visio/2010/relationships/page",
+        "/visio/pages/page#.xml", XDGFPageContents::new);
 
     public static final XDGFRelation WINDOW = new XDGFRelation(
-            "application/vnd.ms-visio.windows+xml",
-            "http://schemas.microsoft.com/visio/2010/relationships/windows",
-            "/visio/windows.xml", null);
+        "application/vnd.ms-visio.windows+xml",
+        "http://schemas.microsoft.com/visio/2010/relationships/windows",
+        "/visio/windows.xml", null);
 
-    private XDGFRelation(String type, String rel, String defaultName, Class<? extends XDGFXMLDocumentPart> cls) {
-        super(type, rel, defaultName, cls);
+    private XDGFRelation(String type, String rel, String defaultName,
+                         PackagePartConstructor packagePartConstructor) {
+        super(type, rel, defaultName, null, packagePartConstructor, null);
         _table.put(rel, this);
     }
 
index 394618a688b2e3b85ec89c032f43af260f9bf988..51409a40de0b177440f604b83c9f6d4fb37d273b 100644 (file)
@@ -18,17 +18,25 @@ package org.apache.poi.xdgf.xml;
 
 import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.util.Internal;
 import org.apache.poi.xdgf.usermodel.XDGFDocument;
 
 public class XDGFXMLDocumentPart extends POIXMLDocumentPart {
 
     protected XDGFDocument _document;
-    
+
     /**
      * @since POI 3.14-Beta1
      */
-    public XDGFXMLDocumentPart(PackagePart part, XDGFDocument document) {
+    public XDGFXMLDocumentPart(PackagePart part) {
         super(part);
+    }
+
+    /**
+     * @since POI 4.1.2
+     */
+    @Internal
+    public void setDocument(XDGFDocument document) {
         _document = document;
     }
 }
index 65a730499806ff47ad2681504c44bba6d9059947..e6b27e62eab6028921e93bf3087e37b0fabd262c 100644 (file)
 
 package org.apache.poi.xslf.usermodel;
 
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLFactory;
 import org.apache.poi.ooxml.POIXMLRelation;
 
@@ -30,16 +26,14 @@ import org.apache.poi.ooxml.POIXMLRelation;
  * Instantiates sub-classes of POIXMLDocumentPart depending on their relationship type
  */
 public final class XSLFFactory extends POIXMLFactory  {
-    private XSLFFactory(){
-
-    }
-
     private static final XSLFFactory inst = new XSLFFactory();
 
     public static XSLFFactory getInstance(){
         return inst;
     }
 
+    private XSLFFactory() {}
+
     /**
      * @since POI 3.14-Beta1
      */
@@ -47,15 +41,4 @@ public final class XSLFFactory extends POIXMLFactory  {
     protected POIXMLRelation getDescriptor(String relationshipType) {
         return XSLFRelation.getInstance(relationshipType);
     }
-
-    /**
-     * @since POI 3.14-Beta1
-     */
-    @Override
-    protected POIXMLDocumentPart createDocumentPart
-        (Class<? extends POIXMLDocumentPart> cls, Class<?>[] classes, Object[] values)
-    throws SecurityException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
-        Constructor<? extends POIXMLDocumentPart> constructor = cls.getDeclaredConstructor(classes);
-        return constructor.newInstance(values);
-    }
 }
index ca2d9d7ba2bd8ab551d80af6268c161cffd9cc45..5139e6278ce52506af24c41db217fd6567729211 100644 (file)
@@ -22,7 +22,6 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.poi.ooxml.POIXMLDocument;
-import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLRelation;
 import org.apache.poi.sl.usermodel.PictureData.PictureType;
 import org.apache.poi.util.Beta;
@@ -39,237 +38,238 @@ public final class XSLFRelation extends POIXMLRelation {
     private static final Map<String, XSLFRelation> _table = new HashMap<>();
 
     public static final XSLFRelation MAIN = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml",
-            null, null, null
+        "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"
     );
 
     public static final XSLFRelation MACRO = new XSLFRelation(
-            "application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml",
-            null, null, null
+        "application/vnd.ms-powerpoint.slideshow.macroEnabled.main+xml"
     );
 
     public static final XSLFRelation MACRO_TEMPLATE = new XSLFRelation(
-            "application/vnd.ms-powerpoint.template.macroEnabled.main+xml",
-            null, null, null
+        "application/vnd.ms-powerpoint.template.macroEnabled.main+xml"
     );
 
     public static final XSLFRelation PRESENTATIONML = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml",
-            null, null, null
+        "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml"
     );
 
     public static final XSLFRelation PRESENTATIONML_TEMPLATE = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml",
-            null, null, null
+        "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml"
     );
 
     public static final XSLFRelation PRESENTATION_MACRO = new XSLFRelation(
-            "application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml",
-            null, null, null
+        "application/vnd.ms-powerpoint.presentation.macroEnabled.main+xml"
     );
 
     public static final XSLFRelation THEME_MANAGER = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.themeManager+xml",
-            null, null, null
+        "application/vnd.openxmlformats-officedocument.themeManager+xml"
     );
 
     public static final XSLFRelation NOTES = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide",
-            "/ppt/notesSlides/notesSlide#.xml",
-            XSLFNotes.class
+        "application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide",
+        "/ppt/notesSlides/notesSlide#.xml",
+        XSLFNotes::new, XSLFNotes::new
     );
 
     public static final XSLFRelation SLIDE = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.presentationml.slide+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide",
-            "/ppt/slides/slide#.xml",
-            XSLFSlide.class
+        "application/vnd.openxmlformats-officedocument.presentationml.slide+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide",
+        "/ppt/slides/slide#.xml",
+        XSLFSlide::new, XSLFSlide::new
     );
 
     public static final XSLFRelation SLIDE_LAYOUT = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout",
-            "/ppt/slideLayouts/slideLayout#.xml",
-            XSLFSlideLayout.class
+        "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout",
+        "/ppt/slideLayouts/slideLayout#.xml",
+        null, XSLFSlideLayout::new
     );
 
     public static final XSLFRelation SLIDE_MASTER = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster",
-            "/ppt/slideMasters/slideMaster#.xml",
-            XSLFSlideMaster.class
+        "application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster",
+        "/ppt/slideMasters/slideMaster#.xml",
+        null, XSLFSlideMaster::new
     );
 
     public static final XSLFRelation NOTES_MASTER = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster",
-            "/ppt/notesMasters/notesMaster#.xml",
-            XSLFNotesMaster.class
+        "application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster",
+        "/ppt/notesMasters/notesMaster#.xml",
+        XSLFNotesMaster::new, XSLFNotesMaster::new
     );
 
     public static final XSLFRelation COMMENTS = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.presentationml.comments+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",
-            "/ppt/comments/comment#.xml",
-            XSLFComments.class
+        "application/vnd.openxmlformats-officedocument.presentationml.comments+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",
+        "/ppt/comments/comment#.xml",
+        XSLFComments::new, XSLFComments::new
     );
 
     public static final XSLFRelation COMMENT_AUTHORS = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/commentAuthors",
-            "/ppt/commentAuthors.xml",
-            XSLFCommentAuthors.class
+        "application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/commentAuthors",
+        "/ppt/commentAuthors.xml",
+        XSLFCommentAuthors::new, XSLFCommentAuthors::new
     );
 
     public static final XSLFRelation HYPERLINK = new XSLFRelation(
-            null,
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",
-            null,
-            null
+        null,
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",
+        null
     );
 
     public static final XSLFRelation THEME = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.theme+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",
-            "/ppt/theme/theme#.xml",
-            XSLFTheme.class
+        "application/vnd.openxmlformats-officedocument.theme+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",
+        "/ppt/theme/theme#.xml",
+        XSLFTheme::new, XSLFTheme::new
     );
 
     public static final XSLFRelation VML_DRAWING = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.vmlDrawing",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",
-            "/ppt/drawings/vmlDrawing#.vml",
-            null
+        "application/vnd.openxmlformats-officedocument.vmlDrawing",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",
+        "/ppt/drawings/vmlDrawing#.vml"
     );
 
     // this is not the same as in XSSFRelation.WORKBOOK, as it is usually used by embedded charts
     // referencing the original embedded excel workbook
     public static final XSLFRelation WORKBOOK = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
-            POIXMLDocument.PACK_OBJECT_REL_TYPE,
-            "/ppt/embeddings/Microsoft_Excel_Worksheet#.xlsx",
-            XSSFWorkbook.class
+        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+        POIXMLDocument.PACK_OBJECT_REL_TYPE,
+        "/ppt/embeddings/Microsoft_Excel_Worksheet#.xlsx",
+        XSSFWorkbook::new, XSSFWorkbook::new
     );
 
     public static final XSLFRelation CHART = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.drawingml.chart+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",
-            "/ppt/charts/chart#.xml",
-            XSLFChart.class
+        "application/vnd.openxmlformats-officedocument.drawingml.chart+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",
+        "/ppt/charts/chart#.xml",
+        XSLFChart::new, XSLFChart::new
     );
 
     public static final XSLFRelation IMAGE_EMF = new XSLFRelation(
-            PictureType.EMF.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.emf",
-            XSLFPictureData.class
+        PictureType.EMF.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.emf",
+        XSLFPictureData::new, XSLFPictureData::new
     );
     public static final XSLFRelation IMAGE_WMF = new XSLFRelation(
-            PictureType.WMF.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.wmf",
-            XSLFPictureData.class
+        PictureType.WMF.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.wmf",
+        XSLFPictureData::new, XSLFPictureData::new
     );
     public static final XSLFRelation IMAGE_PICT = new XSLFRelation(
-            PictureType.PICT.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.pict",
-            XSLFPictureData.class
+        PictureType.PICT.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.pict",
+        XSLFPictureData::new, XSLFPictureData::new
     );
     public static final XSLFRelation IMAGE_JPEG = new XSLFRelation(
-            PictureType.JPEG.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.jpeg",
-            XSLFPictureData.class
+        PictureType.JPEG.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.jpeg",
+        XSLFPictureData::new, XSLFPictureData::new
     );
     public static final XSLFRelation IMAGE_PNG = new XSLFRelation(
-            PictureType.PNG.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.png",
-            XSLFPictureData.class
+        PictureType.PNG.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.png",
+        XSLFPictureData::new, XSLFPictureData::new
     );
     public static final XSLFRelation IMAGE_DIB = new XSLFRelation(
-            PictureType.DIB.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.dib",
-            XSLFPictureData.class
+        PictureType.DIB.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.dib",
+        XSLFPictureData::new, XSLFPictureData::new
     );
     public static final XSLFRelation IMAGE_GIF = new XSLFRelation(
-            PictureType.GIF.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.gif",
-            XSLFPictureData.class
+        PictureType.GIF.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.gif",
+        XSLFPictureData::new, XSLFPictureData::new
     );
     public static final XSLFRelation IMAGE_TIFF = new XSLFRelation(
-            PictureType.TIFF.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.tiff",
-            XSLFPictureData.class
+        PictureType.TIFF.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.tiff",
+        XSLFPictureData::new, XSLFPictureData::new
     );
     public static final XSLFRelation IMAGE_EPS = new XSLFRelation(
-            PictureType.EPS.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.eps",
-            XSLFPictureData.class
+        PictureType.EPS.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.eps",
+        XSLFPictureData::new, XSLFPictureData::new
     );
     public static final XSLFRelation IMAGE_BMP = new XSLFRelation(
-            PictureType.BMP.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.bmp",
-            XSLFPictureData.class
+        PictureType.BMP.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.bmp",
+        XSLFPictureData::new, XSLFPictureData::new
     );
     public static final XSLFRelation IMAGE_WPG = new XSLFRelation(
-            PictureType.WPG.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.wpg",
-            XSLFPictureData.class
+        PictureType.WPG.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.wpg",
+        XSLFPictureData::new, XSLFPictureData::new
     );
     public static final XSLFRelation IMAGE_WDP = new XSLFRelation(
-            PictureType.WDP.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.wdp",
-            XSLFPictureData.class
+        PictureType.WDP.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.wdp",
+        XSLFPictureData::new, XSLFPictureData::new
     );
 
     public static final XSLFRelation IMAGE_SVG = new XSLFRelation(
-            PictureType.SVG.contentType,
-            IMAGE_PART,
-            "/ppt/media/image#.svg",
-            XSLFPictureData.class
+        PictureType.SVG.contentType,
+        IMAGE_PART,
+        "/ppt/media/image#.svg",
+        XSLFPictureData::new, XSLFPictureData::new
     );
 
     public static final XSLFRelation IMAGES = new XSLFRelation(
-            null,
-            IMAGE_PART,
-            null,
-            XSLFPictureData.class
+        null,
+        IMAGE_PART,
+        null,
+        XSLFPictureData::new, XSLFPictureData::new
     );
 
     public static final XSLFRelation TABLE_STYLES = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles",
-            "/ppt/tableStyles.xml",
-            XSLFTableStyles.class
+        "application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles",
+        "/ppt/tableStyles.xml",
+        XSLFTableStyles::new, XSLFTableStyles::new
     );
 
     public static final XSLFRelation OLE_OBJECT = new XSLFRelation(
-            "application/vnd.openxmlformats-officedocument.oleObject",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject",
-            "/ppt/embeddings/oleObject#.bin",
-            XSLFObjectData.class
+        "application/vnd.openxmlformats-officedocument.oleObject",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject",
+        "/ppt/embeddings/oleObject#.bin",
+        XSLFObjectData::new, XSLFObjectData::new
     );
 
     public static final XSLFRelation FONT = new XSLFRelation(
-            "application/x-fontdata",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/font",
-            "/ppt/fonts/font#.fntdata",
-            XSLFFontData.class
+        "application/x-fontdata",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/font",
+        "/ppt/fonts/font#.fntdata",
+        XSLFFontData::new, XSLFFontData::new
     );
 
 
-    private XSLFRelation(String type, String rel, String defaultName, Class<? extends POIXMLDocumentPart> cls) {
-        super(type, rel, defaultName, cls);
+    private XSLFRelation(String type) {
+        this(type, null, null, null, null);
+    }
+
+    private XSLFRelation(String type, String rel, String defaultName) {
+        this(type, rel, defaultName, null, null);
+    }
+
+    private XSLFRelation(String type, String rel, String defaultName,
+                         NoArgConstructor noArgConstructor,
+                         PackagePartConstructor packagePartConstructor) {
+        super(type, rel, defaultName, noArgConstructor, packagePartConstructor, null);
         _table.put(rel, this);
     }
 
index 160ad5fafdba4c85dd89329351eb160dd0d6ebc2..e2100e81fd612fe7d5ffd30d8e725392b068074e 100644 (file)
@@ -46,9 +46,10 @@ public class XSLFTableStyles extends POIXMLDocumentPart implements Iterable<XSLF
     public XSLFTableStyles(PackagePart part) throws IOException, XmlException {
         super(part);
 
-        InputStream is = getPackagePart().getInputStream();
-        TblStyleLstDocument styleDoc = TblStyleLstDocument.Factory.parse(is);
-        is.close();
+        TblStyleLstDocument styleDoc;
+        try (InputStream is = getPackagePart().getInputStream()) {
+            styleDoc = TblStyleLstDocument.Factory.parse(is);
+        }
         _tblStyleLst = styleDoc.getTblStyleLst();
         List<CTTableStyle> tblStyles = _tblStyleLst.getTblStyleList();
         _styles = new ArrayList<>(tblStyles.size());
@@ -56,7 +57,7 @@ public class XSLFTableStyles extends POIXMLDocumentPart implements Iterable<XSLF
             _styles.add(new XSLFTableStyle(c));
         }
     }
-    
+
     public CTTableStyleList getXmlObject(){
         return _tblStyleLst;
     }
index f760921cf64a11eee8cbe88151624d883ddd3dee..e86fd58a887973db0c1b0e44e4d5dd1e1f1e1e26 100644 (file)
@@ -17,7 +17,6 @@
 
 package org.apache.poi.xssf.binary;
 
-import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLRelation;
 import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
 import org.apache.poi.util.Internal;
@@ -39,19 +38,17 @@ public class XSSFBRelation extends POIXMLRelation {
     static final XSSFBRelation SHARED_STRINGS_BINARY = new XSSFBRelation(
             "application/vnd.ms-excel.sharedStrings",
             "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",
-            "/xl/sharedStrings.bin",
-            null
+            "/xl/sharedStrings.bin"
     );
 
     public static final XSSFBRelation STYLES_BINARY = new XSSFBRelation(
             "application/vnd.ms-excel.styles",
             PackageRelationshipTypes.STYLE_PART,
-            "/xl/styles.bin",
-            null
+            "/xl/styles.bin"
     );
 
-    private XSSFBRelation(String type, String rel, String defaultName, Class<? extends POIXMLDocumentPart> cls) {
-        super(type, rel, defaultName, cls);
+    private XSSFBRelation(String type, String rel, String defaultName) {
+        super(type, rel, defaultName);
     }
 
 }
index 689516c60c061d55c327f34f8c6c6c7aba8fd31d..b931154d9a3c471e936ffd942a7f9eacfa4d1b9e 100644 (file)
 
 package org.apache.poi.xssf.usermodel;
 
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLFactory;
 import org.apache.poi.ooxml.POIXMLRelation;
 
@@ -28,15 +24,14 @@ import org.apache.poi.ooxml.POIXMLRelation;
  * Instantiates sub-classes of POIXMLDocumentPart depending on their relationship type
  */
 public class XSSFFactory extends POIXMLFactory {
-    protected XSSFFactory() {
-    }
-
     private static final XSSFFactory inst = new XSSFFactory();
 
     public static XSSFFactory getInstance(){
         return inst;
     }
 
+    protected XSSFFactory() {}
+
     /**
      * @since POI 3.14-Beta1
      */
@@ -44,15 +39,4 @@ public class XSSFFactory extends POIXMLFactory {
     protected POIXMLRelation getDescriptor(String relationshipType) {
         return XSSFRelation.getInstance(relationshipType);
     }
-
-    /**
-     * @since POI 3.14-Beta1
-     */
-    @Override
-    protected POIXMLDocumentPart createDocumentPart
-    (Class<? extends POIXMLDocumentPart> cls, Class<?>[] classes, Object[] values)
-            throws SecurityException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
-        Constructor<? extends POIXMLDocumentPart> constructor = cls.getDeclaredConstructor(classes);
-        return constructor.newInstance(values);
-    }
 }
index be55da6ba3626dde28829f4438c1253a07d60aaa..b5cb452d377df017e8089abe6793a2f77aeeb58c 100644 (file)
@@ -20,7 +20,6 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.poi.ooxml.POIXMLDocument;
-import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLRelation;
 import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
 import org.apache.poi.xssf.model.CalculationChain;
@@ -34,7 +33,7 @@ import org.apache.poi.xssf.model.ThemesTable;
 
 /**
  * Defines namespaces, content types and normal file names / naming
- *  patterns, for the well-known XSSF format parts. 
+ *  patterns, for the well-known XSSF format parts.
  */
 public final class XSSFRelation extends POIXMLRelation {
 
@@ -47,221 +46,215 @@ public final class XSSFRelation extends POIXMLRelation {
     public static final XSSFRelation WORKBOOK = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/workbook",
-        "/xl/workbook.xml",
-        null
+        "/xl/workbook.xml"
     );
+
     public static final XSSFRelation MACROS_WORKBOOK = new XSSFRelation(
         "application/vnd.ms-excel.sheet.macroEnabled.main+xml",
         PackageRelationshipTypes.CORE_DOCUMENT,
-        "/xl/workbook.xml",
-        null
+        "/xl/workbook.xml"
     );
+
     public static final XSSFRelation TEMPLATE_WORKBOOK = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml",
         PackageRelationshipTypes.CORE_DOCUMENT,
-        "/xl/workbook.xml",
-        null
+        "/xl/workbook.xml"
     );
 
     public static final XSSFRelation MACRO_TEMPLATE_WORKBOOK = new XSSFRelation(
         "application/vnd.ms-excel.template.macroEnabled.main+xml",
         PackageRelationshipTypes.CORE_DOCUMENT,
-        "/xl/workbook.xml",
-        null
+        "/xl/workbook.xml"
     );
+
     public static final XSSFRelation MACRO_ADDIN_WORKBOOK = new XSSFRelation(
         "application/vnd.ms-excel.addin.macroEnabled.main+xml",
         PackageRelationshipTypes.CORE_DOCUMENT,
-        "/xl/workbook.xml",
-        null
+        "/xl/workbook.xml"
     );
 
     public static final XSSFRelation XLSB_BINARY_WORKBOOK = new XSSFRelation(
-            "application/vnd.ms-excel.sheet.binary.macroEnabled.main",
-            PackageRelationshipTypes.CORE_DOCUMENT,
-            "/xl/workbook.bin",
-            null
-        );
+        "application/vnd.ms-excel.sheet.binary.macroEnabled.main",
+        PackageRelationshipTypes.CORE_DOCUMENT,
+        "/xl/workbook.bin"
+    );
 
     public static final XSSFRelation WORKSHEET = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",
         "/xl/worksheets/sheet#.xml",
-        XSSFSheet.class
+        XSSFSheet::new, XSSFSheet::new
     );
 
     public static final XSSFRelation CHARTSHEET = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet",
         "/xl/chartsheets/sheet#.xml",
-        XSSFChartSheet.class
+        null, XSSFChartSheet::new
     );
 
     public static final XSSFRelation SHARED_STRINGS = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",
         "/xl/sharedStrings.xml",
-        SharedStringsTable.class
+        SharedStringsTable::new, SharedStringsTable::new
     );
 
     public static final XSSFRelation STYLES = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml",
         PackageRelationshipTypes.STYLE_PART,
         "/xl/styles.xml",
-        StylesTable.class
+        StylesTable::new, StylesTable::new
     );
 
     public static final XSSFRelation DRAWINGS = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.drawing+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",
         "/xl/drawings/drawing#.xml",
-        XSSFDrawing.class
+        XSSFDrawing::new, XSSFDrawing::new
     );
 
     public static final XSSFRelation VML_DRAWINGS = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.vmlDrawing",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",
         "/xl/drawings/vmlDrawing#.vml",
-        XSSFVMLDrawing.class
+        XSSFVMLDrawing::new, XSSFVMLDrawing::new
     );
 
     public static final XSSFRelation CHART = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.drawingml.chart+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",
         "/xl/charts/chart#.xml",
-        XSSFChart.class
+        XSSFChart::new, XSSFChart::new
     );
 
     public static final XSSFRelation CUSTOM_XML_MAPPINGS = new XSSFRelation(
         "application/xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/xmlMaps",
         "/xl/xmlMaps.xml",
-        MapInfo.class
+        MapInfo::new, MapInfo::new
     );
 
     public static final XSSFRelation SINGLE_XML_CELLS = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableSingleCells",
         "/xl/tables/tableSingleCells#.xml",
-        SingleXmlCells.class
+        SingleXmlCells::new, SingleXmlCells::new
     );
 
     public static final XSSFRelation TABLE = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/table",
         "/xl/tables/table#.xml",
-        XSSFTable.class
+        XSSFTable::new, XSSFTable::new
     );
 
     public static final XSSFRelation IMAGES = new XSSFRelation(
         null,
         PackageRelationshipTypes.IMAGE_PART,
         null,
-        XSSFPictureData.class
+        XSSFPictureData::new, XSSFPictureData::new
     );
 
     public static final XSSFRelation IMAGE_EMF = new XSSFRelation(
         "image/x-emf",
         PackageRelationshipTypes.IMAGE_PART,
         "/xl/media/image#.emf",
-        XSSFPictureData.class
+        XSSFPictureData::new, XSSFPictureData::new
     );
 
     public static final XSSFRelation IMAGE_WMF = new XSSFRelation(
         "image/x-wmf",
         PackageRelationshipTypes.IMAGE_PART,
         "/xl/media/image#.wmf",
-        XSSFPictureData.class
+        XSSFPictureData::new, XSSFPictureData::new
     );
 
     public static final XSSFRelation IMAGE_PICT = new XSSFRelation(
         "image/pict",
         PackageRelationshipTypes.IMAGE_PART,
         "/xl/media/image#.pict",
-        XSSFPictureData.class
+        XSSFPictureData::new, XSSFPictureData::new
     );
 
     public static final XSSFRelation IMAGE_JPEG = new XSSFRelation(
         "image/jpeg",
         PackageRelationshipTypes.IMAGE_PART,
         "/xl/media/image#.jpeg",
-        XSSFPictureData.class
+        XSSFPictureData::new, XSSFPictureData::new
     );
 
     public static final XSSFRelation IMAGE_PNG = new XSSFRelation(
         "image/png",
         PackageRelationshipTypes.IMAGE_PART,
         "/xl/media/image#.png",
-        XSSFPictureData.class
+        XSSFPictureData::new, XSSFPictureData::new
     );
 
     public static final XSSFRelation IMAGE_DIB = new XSSFRelation(
         "image/dib",
         PackageRelationshipTypes.IMAGE_PART,
         "/xl/media/image#.dib",
-        XSSFPictureData.class
+        XSSFPictureData::new, XSSFPictureData::new
     );
 
     public static final XSSFRelation IMAGE_GIF = new XSSFRelation(
         "image/gif",
         PackageRelationshipTypes.IMAGE_PART,
         "/xl/media/image#.gif",
-        XSSFPictureData.class
+        XSSFPictureData::new, XSSFPictureData::new
     );
 
     public static final XSSFRelation IMAGE_TIFF = new XSSFRelation(
         "image/tiff",
         PackageRelationshipTypes.IMAGE_PART,
         "/xl/media/image#.tiff",
-        XSSFPictureData.class
+        XSSFPictureData::new, XSSFPictureData::new
     );
 
     public static final XSSFRelation IMAGE_EPS = new XSSFRelation(
         "image/x-eps",
         PackageRelationshipTypes.IMAGE_PART,
         "/xl/media/image#.eps",
-        XSSFPictureData.class
+        XSSFPictureData::new, XSSFPictureData::new
     );
 
     public static final XSSFRelation IMAGE_BMP = new XSSFRelation(
         "image/x-ms-bmp",
         PackageRelationshipTypes.IMAGE_PART,
         "/xl/media/image#.bmp",
-        XSSFPictureData.class
+        XSSFPictureData::new, XSSFPictureData::new
     );
 
     public static final XSSFRelation IMAGE_WPG = new XSSFRelation(
         "image/x-wpg",
         PackageRelationshipTypes.IMAGE_PART,
         "/xl/media/image#.wpg",
-        XSSFPictureData.class
+        XSSFPictureData::new, XSSFPictureData::new
     );
 
     public static final XSSFRelation SHEET_COMMENTS = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",
         "/xl/comments#.xml",
-        CommentsTable.class
+        CommentsTable::new, CommentsTable::new
     );
 
     public static final XSSFRelation SHEET_HYPERLINKS = new XSSFRelation(
         null,
         PackageRelationshipTypes.HYPERLINK_PART,
-        null,
         null
     );
 
     public static final XSSFRelation OLEEMBEDDINGS = new XSSFRelation(
         null,
         POIXMLDocument.OLE_OBJECT_REL_TYPE,
-        null,
         null
     );
 
     public static final XSSFRelation PACKEMBEDDINGS = new XSSFRelation(
         null,
         POIXMLDocument.PACK_OBJECT_REL_TYPE,
-        null,
         null
     );
 
@@ -269,110 +262,109 @@ public final class XSSFRelation extends POIXMLRelation {
         "application/vnd.ms-office.vbaProject",
         "http://schemas.microsoft.com/office/2006/relationships/vbaProject",
         "/xl/vbaProject.bin",
-        XSSFVBAPart.class
+        XSSFVBAPart::new, XSSFVBAPart::new
     );
 
     public static final XSSFRelation ACTIVEX_CONTROLS = new XSSFRelation(
         "application/vnd.ms-office.activeX+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/control",
-        "/xl/activeX/activeX#.xml",
-        null
+        "/xl/activeX/activeX#.xml"
     );
 
     public static final XSSFRelation ACTIVEX_BINS = new XSSFRelation(
         "application/vnd.ms-office.activeX",
         "http://schemas.microsoft.com/office/2006/relationships/activeXControlBinary",
-        "/xl/activeX/activeX#.bin",
-        null
+        "/xl/activeX/activeX#.bin"
     );
 
     public static final XSSFRelation MACRO_SHEET_BIN = new XSSFRelation(
-            null,//TODO: figure out what this should be?
-            "http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet",
-            "/xl/macroSheets/sheet#.bin",
-            null
+        null,//TODO: figure out what this should be?
+        "http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet",
+        "/xl/macroSheets/sheet#.bin"
     );
 
     public static final XSSFRelation INTL_MACRO_SHEET_BIN = new XSSFRelation(
-            null,//TODO: figure out what this should be?
-            "http://schemas.microsoft.com/office/2006/relationships/xlIntlMacrosheet",
-            "/xl/macroSheets/sheet#.bin",
-            null
+        null,//TODO: figure out what this should be?
+        "http://schemas.microsoft.com/office/2006/relationships/xlIntlMacrosheet",
+        "/xl/macroSheets/sheet#.bin"
     );
 
     public static final XSSFRelation DIALOG_SHEET_BIN = new XSSFRelation(
-            null,//TODO: figure out what this should be?
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet",
-            "/xl/dialogSheets/sheet#.bin",
-            null
+        null,//TODO: figure out what this should be?
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet",
+        "/xl/dialogSheets/sheet#.bin"
     );
 
     public static final XSSFRelation THEME = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.theme+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",
         "/xl/theme/theme#.xml",
-        ThemesTable.class
+        ThemesTable::new, ThemesTable::new
     );
 
     public static final XSSFRelation CALC_CHAIN = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain",
         "/xl/calcChain.xml",
-        CalculationChain.class
+        CalculationChain::new, CalculationChain::new
     );
 
     public static final XSSFRelation EXTERNAL_LINKS = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink",
         "/xl/externalLinks/externalLink#.xmll",
-        ExternalLinksTable.class
+        ExternalLinksTable::new, ExternalLinksTable::new
     );
 
     public static final XSSFRelation PRINTER_SETTINGS = new XSSFRelation(
         "application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings",
         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings",
-        "/xl/printerSettings/printerSettings#.bin",
-        null
+        "/xl/printerSettings/printerSettings#.bin"
    );
     public static final XSSFRelation PIVOT_TABLE = new XSSFRelation(
-            "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTable",
-            "/xl/pivotTables/pivotTable#.xml",
-            XSSFPivotTable.class
+        "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTable",
+        "/xl/pivotTables/pivotTable#.xml",
+        XSSFPivotTable::new, XSSFPivotTable::new
     );
     public static final XSSFRelation PIVOT_CACHE_DEFINITION = new XSSFRelation(
-            "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition",
-            "/xl/pivotCache/pivotCacheDefinition#.xml",
-            XSSFPivotCacheDefinition.class
+        "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition",
+        "/xl/pivotCache/pivotCacheDefinition#.xml",
+        XSSFPivotCacheDefinition::new, XSSFPivotCacheDefinition::new
     );
     public static final XSSFRelation PIVOT_CACHE_RECORDS = new XSSFRelation(
-            "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheRecords",
-            "/xl/pivotCache/pivotCacheRecords#.xml",
-            XSSFPivotCacheRecords.class
+        "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheRecords",
+        "/xl/pivotCache/pivotCacheRecords#.xml",
+        XSSFPivotCacheRecords::new, XSSFPivotCacheRecords::new
     );
 
     public static final XSSFRelation CTRL_PROP_RECORDS = new XSSFRelation(
-            null,
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/ctrlProp",
-            "/xl/ctrlProps/ctrlProp#.xml",
-            null
+        null,
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/ctrlProp",
+        "/xl/ctrlProps/ctrlProp#.xml"
     );
 
     public static final XSSFRelation CUSTOM_PROPERTIES = new XSSFRelation(
-            "application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customProperty",
-            "/xl/customProperty#.bin",
-            null
+        "application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customProperty",
+        "/xl/customProperty#.bin"
     );
 
     public static final String NS_SPREADSHEETML = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
     public static final String NS_DRAWINGML = "http://schemas.openxmlformats.org/drawingml/2006/main";
     public static final String NS_CHART = "http://schemas.openxmlformats.org/drawingml/2006/chart";
 
-    private XSSFRelation(String type, String rel, String defaultName, Class<? extends POIXMLDocumentPart> cls) {
-        super(type, rel, defaultName, cls);
+
+    private XSSFRelation(String type, String rel, String defaultName) {
+        this(type,rel, defaultName, null, null);
+    }
+
+    private XSSFRelation(String type, String rel, String defaultName,
+                         NoArgConstructor noArgConstructor,
+                         PackagePartConstructor packagePartConstructor) {
+        super(type, rel, defaultName, noArgConstructor, packagePartConstructor, null);
         _table.put(rel, this);
     }
 
index 3a62ce20f3626b284c7bbd5022e1de3a9a52de1d..0b408af7ee662ca42e396555f63f84504d681d12 100644 (file)
@@ -21,14 +21,12 @@ import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
 
 import javax.xml.namespace.QName;
 
 import org.apache.poi.ooxml.POIXMLException;
-import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.util.Internal;
 import org.apache.xmlbeans.XmlException;
@@ -56,13 +54,13 @@ public class XWPFEndnotes extends XWPFAbstractFootnotesEndnotes {
      * Construct XWPFEndnotes from a package part
      *
      * @param part the package part holding the data of the footnotes,
-     * 
+     *
      * @since POI 3.14-Beta1
      */
-    public XWPFEndnotes(PackagePart part) throws IOException, OpenXML4JException {
+    public XWPFEndnotes(PackagePart part) {
         super(part);
     }
-    
+
     /**
      * Set the end notes for this part.
      *
@@ -74,25 +72,25 @@ public class XWPFEndnotes extends XWPFAbstractFootnotesEndnotes {
     }
 
     /**
-     * Create a new end note and add it to the document. 
+     * Create a new end note and add it to the document.
      *
      * @return New XWPFEndnote
      * @since 4.0.0
      */
     public XWPFEndnote createEndnote() {
-        CTFtnEdn newNote = CTFtnEdn.Factory.newInstance(); 
+        CTFtnEdn newNote = CTFtnEdn.Factory.newInstance();
         newNote.setType(STFtnEdn.NORMAL);
 
         XWPFEndnote footnote = addEndnote(newNote);
         footnote.getCTFtnEdn().setId(getIdManager().nextId());
         return footnote;
-        
+
     }
 
     /**
      * Remove the specified footnote if present.
      *
-     * @param pos 
+     * @param pos
      * @return True if the footnote was removed.
      * @since 4.0.0
      */
@@ -118,7 +116,7 @@ public class XWPFEndnotes extends XWPFAbstractFootnotesEndnotes {
         } catch (XmlException e) {
             throw new POIXMLException();
         }
-    
+
         for (CTFtnEdn note : ctEndnotes.getEndnoteList()) {
             listFootnote.add(new XWPFEndnote(note, this));
         }
@@ -200,6 +198,6 @@ public class XWPFEndnotes extends XWPFAbstractFootnotesEndnotes {
         }
     }
 
-    
+
 
 }
index 09eadc0230afe7afb1ff3e83b2c5380331816924..fd5eca0014009bbbc458b63b090a02b68f5a0c30 100644 (file)
 
 package org.apache.poi.xwpf.usermodel;
 
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLFactory;
 import org.apache.poi.ooxml.POIXMLRelation;
 
@@ -28,16 +24,14 @@ import org.apache.poi.ooxml.POIXMLRelation;
  * Instantiates sub-classes of POIXMLDocumentPart depending on their relationship type
  */
 public final class XWPFFactory extends POIXMLFactory {
-    private XWPFFactory() {
-
-    }
-
     private static final XWPFFactory inst = new XWPFFactory();
 
     public static XWPFFactory getInstance() {
         return inst;
     }
 
+    private XWPFFactory() {}
+
     /**
      * @since POI 3.14-Beta1
      */
@@ -45,15 +39,4 @@ public final class XWPFFactory extends POIXMLFactory {
     protected POIXMLRelation getDescriptor(String relationshipType) {
         return XWPFRelation.getInstance(relationshipType);
     }
-
-    /**
-     * @since POI 3.14-Beta1
-     */
-    @Override
-    protected POIXMLDocumentPart createDocumentPart
-        (Class<? extends POIXMLDocumentPart> cls, Class<?>[] classes, Object[] values)
-    throws SecurityException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
-        Constructor<? extends POIXMLDocumentPart> constructor = cls.getDeclaredConstructor(classes);
-        return constructor.newInstance(values);
-    }
 }
\ No newline at end of file
index 824050579ccae20d7a124f974a354aee9b8a6596..d3ccfbc6243eb3605e5da3d836a3ae6bda144ee4 100644 (file)
@@ -22,14 +22,12 @@ import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
 
 import javax.xml.namespace.QName;
 
 import org.apache.poi.ooxml.POIXMLException;
-import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.util.Internal;
 import org.apache.xmlbeans.XmlException;
@@ -50,13 +48,13 @@ public class XWPFFootnotes extends XWPFAbstractFootnotesEndnotes {
      * Construct XWPFFootnotes from a package part
      *
      * @param part the package part holding the data of the footnotes,
-     * 
+     *
      * @since POI 3.14-Beta1
      */
-    public XWPFFootnotes(PackagePart part) throws IOException, OpenXML4JException {
+    public XWPFFootnotes(PackagePart part) {
         super(part);
     }
-    
+
     /**
      * Construct XWPFFootnotes from scratch for a new document.
      */
@@ -74,19 +72,19 @@ public class XWPFFootnotes extends XWPFAbstractFootnotesEndnotes {
     }
 
     /**
-     * Create a new footnote and add it to the document. 
+     * Create a new footnote and add it to the document.
      *
      * @return New {@link XWPFFootnote}
      * @since 4.0.0
      */
     public XWPFFootnote createFootnote() {
-        CTFtnEdn newNote = CTFtnEdn.Factory.newInstance(); 
+        CTFtnEdn newNote = CTFtnEdn.Factory.newInstance();
         newNote.setType(STFtnEdn.NORMAL);
 
         XWPFFootnote footnote = addFootnote(newNote);
         footnote.getCTFtnEdn().setId(getIdManager().nextId());
         return footnote;
-        
+
     }
 
     /**
@@ -118,7 +116,7 @@ public class XWPFFootnotes extends XWPFAbstractFootnotesEndnotes {
         } catch (XmlException e) {
             throw new POIXMLException();
         }
-    
+
         for (CTFtnEdn note : ctFootnotes.getFootnoteList()) {
             listFootnote.add(new XWPFFootnote(note, this));
         }
@@ -172,7 +170,7 @@ public class XWPFFootnotes extends XWPFAbstractFootnotesEndnotes {
         }
         return resultList;
     }
-    
-    
+
+
 
 }
index 09fbe95c6e57ec398766190c4cf71eb9b28da902..d7ff907c35d340148bd87cf56b8e08de292110d0 100644 (file)
@@ -68,7 +68,7 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo
     /**
      * @since by POI 3.14-Beta1
      */
-    public XWPFHeaderFooter(POIXMLDocumentPart parent, PackagePart part) throws IOException {
+    public XWPFHeaderFooter(POIXMLDocumentPart parent, PackagePart part) {
         super(parent, part);
         this.document = (XWPFDocument) getParent();
 
index ccd582768070d984e4cce68a1ac455f8d95e640f..f3dfa77653e165a3518f45982a9b83773cd6ae60 100644 (file)
@@ -29,7 +29,6 @@ import javax.xml.namespace.QName;
 
 import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLException;
-import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlOptions;
@@ -52,7 +51,7 @@ public class XWPFNumbering extends POIXMLDocumentPart {
      *
      * @since POI 3.14-Beta1
      */
-    public XWPFNumbering(PackagePart part) throws IOException, OpenXML4JException {
+    public XWPFNumbering(PackagePart part) {
         super(part);
         isNew = true;
     }
index cb1bba8e3794fdf42face64056457423f41fe860..7ba9e065b2a749e09e659e24f9f94471870c3e88 100644 (file)
@@ -21,7 +21,6 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.poi.ooxml.POIXMLDocument;
-import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLRelation;
 import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -39,197 +38,213 @@ public final class XWPFRelation extends POIXMLRelation {
     public static final XWPFRelation DOCUMENT = new XWPFRelation(
             "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml",
             PackageRelationshipTypes.CORE_DOCUMENT,
-            "/word/document.xml",
-            null
+            "/word/document.xml"
     );
+
     public static final XWPFRelation TEMPLATE = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml",
-            PackageRelationshipTypes.CORE_DOCUMENT,
-            "/word/document.xml",
-            null
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml",
+        PackageRelationshipTypes.CORE_DOCUMENT,
+        "/word/document.xml"
     );
+
     public static final XWPFRelation MACRO_DOCUMENT = new XWPFRelation(
-            "application/vnd.ms-word.document.macroEnabled.main+xml",
-            PackageRelationshipTypes.CORE_DOCUMENT,
-            "/word/document.xml",
-            null
+        "application/vnd.ms-word.document.macroEnabled.main+xml",
+        PackageRelationshipTypes.CORE_DOCUMENT,
+        "/word/document.xml"
     );
+
     public static final XWPFRelation MACRO_TEMPLATE_DOCUMENT = new XWPFRelation(
-            "application/vnd.ms-word.template.macroEnabledTemplate.main+xml",
-            PackageRelationshipTypes.CORE_DOCUMENT,
-            "/word/document.xml",
-            null
+        "application/vnd.ms-word.template.macroEnabledTemplate.main+xml",
+        PackageRelationshipTypes.CORE_DOCUMENT,
+        "/word/document.xml"
     );
+
     public static final XWPFRelation GLOSSARY_DOCUMENT = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/glossaryDocument",
-            "/word/glossary/document.xml",
-            null
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/glossaryDocument",
+        "/word/glossary/document.xml"
     );
+
     public static final XWPFRelation NUMBERING = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering",
-            "/word/numbering.xml",
-            XWPFNumbering.class
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering",
+        "/word/numbering.xml",
+        XWPFNumbering::new, XWPFNumbering::new
     );
+
     public static final XWPFRelation FONT_TABLE = new XWPFRelation(
             "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml",
             "http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable",
-            "/word/fontTable.xml",
-            null
+            "/word/fontTable.xml"
     );
+
     public static final XWPFRelation SETTINGS = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings",
-            "/word/settings.xml",
-            XWPFSettings.class
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings",
+        "/word/settings.xml",
+        XWPFSettings::new, XWPFSettings::new
     );
+
     public static final XWPFRelation STYLES = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",
-            "/word/styles.xml",
-            XWPFStyles.class
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",
+        "/word/styles.xml",
+        XWPFStyles::new, XWPFStyles::new
     );
+
     public static final XWPFRelation WEB_SETTINGS = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings",
-            "/word/webSettings.xml",
-            null
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings",
+        "/word/webSettings.xml"
     );
+
     public static final XWPFRelation HEADER = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header",
-            "/word/header#.xml",
-            XWPFHeader.class
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header",
+        "/word/header#.xml",
+        XWPFHeader::new, XWPFHeader::new
     );
+
     public static final XWPFRelation FOOTER = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer",
-            "/word/footer#.xml",
-            XWPFFooter.class
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer",
+        "/word/footer#.xml",
+        XWPFFooter::new, XWPFFooter::new
     );
+
     public static final XWPFRelation THEME = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.theme+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",
-            "/word/theme/theme#.xml",
-            null
+        "application/vnd.openxmlformats-officedocument.theme+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",
+        "/word/theme/theme#.xml"
     );
 
     public static final XWPFRelation WORKBOOK = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
-            POIXMLDocument.PACK_OBJECT_REL_TYPE,
-            "/word/embeddings/Microsoft_Excel_Worksheet#.xlsx",
-            XSSFWorkbook.class
+        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+        POIXMLDocument.PACK_OBJECT_REL_TYPE,
+        "/word/embeddings/Microsoft_Excel_Worksheet#.xlsx",
+        XSSFWorkbook::new, (PackagePartConstructor)XSSFWorkbook::new
     );
 
     public static final XWPFRelation CHART = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.drawingml.chart+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",
-            "/word/charts/chart#.xml",
-            XWPFChart.class
+        "application/vnd.openxmlformats-officedocument.drawingml.chart+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",
+        "/word/charts/chart#.xml",
+        XWPFChart::new, XWPFChart::new
     );
     public static final XWPFRelation HYPERLINK = new XWPFRelation(
-            null,
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",
-            null,
-            null
+        null,
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",
+        null
     );
     public static final XWPFRelation COMMENT = new XWPFRelation(
-            null,
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",
-            null,
-            null
+        null,
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",
+        null
     );
     public static final XWPFRelation FOOTNOTE = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes",
-            "/word/footnotes.xml",
-            XWPFFootnotes.class
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes",
+        "/word/footnotes.xml",
+        XWPFFootnotes::new, XWPFFootnotes::new
     );
     public static final XWPFRelation ENDNOTE = new XWPFRelation(
-            "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes",
-            "/word/endnotes.xml",
-            XWPFEndnotes.class
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes",
+        "/word/endnotes.xml",
+        XWPFEndnotes::new, XWPFEndnotes::new
     );
     /**
      * Supported image formats
      */
     public static final XWPFRelation IMAGE_EMF = new XWPFRelation(
-            "image/x-emf",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-            "/word/media/image#.emf",
-            XWPFPictureData.class
+        "image/x-emf",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+        "/word/media/image#.emf",
+        XWPFPictureData::new, XWPFPictureData::new
     );
     public static final XWPFRelation IMAGE_WMF = new XWPFRelation(
-            "image/x-wmf",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-            "/word/media/image#.wmf",
-            XWPFPictureData.class
+        "image/x-wmf",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+        "/word/media/image#.wmf",
+        XWPFPictureData::new, XWPFPictureData::new
     );
     public static final XWPFRelation IMAGE_PICT = new XWPFRelation(
-            "image/pict",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-            "/word/media/image#.pict",
-            XWPFPictureData.class
+        "image/pict",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+        "/word/media/image#.pict",
+        XWPFPictureData::new, XWPFPictureData::new
     );
     public static final XWPFRelation IMAGE_JPEG = new XWPFRelation(
-            "image/jpeg",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-            "/word/media/image#.jpeg",
-            XWPFPictureData.class
+        "image/jpeg",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+        "/word/media/image#.jpeg",
+        XWPFPictureData::new, XWPFPictureData::new
     );
     public static final XWPFRelation IMAGE_PNG = new XWPFRelation(
-            "image/png",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-            "/word/media/image#.png",
-            XWPFPictureData.class
+        "image/png",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+        "/word/media/image#.png",
+        XWPFPictureData::new, XWPFPictureData::new
     );
     public static final XWPFRelation IMAGE_DIB = new XWPFRelation(
-            "image/dib",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-            "/word/media/image#.dib",
-            XWPFPictureData.class
+        "image/dib",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+        "/word/media/image#.dib",
+        XWPFPictureData::new, XWPFPictureData::new
     );
     public static final XWPFRelation IMAGE_GIF = new XWPFRelation(
-            "image/gif",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-            "/word/media/image#.gif",
-            XWPFPictureData.class
+        "image/gif",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+        "/word/media/image#.gif",
+        XWPFPictureData::new, XWPFPictureData::new
     );
     public static final XWPFRelation IMAGE_TIFF = new XWPFRelation(
-            "image/tiff",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-            "/word/media/image#.tiff",
-            XWPFPictureData.class
+        "image/tiff",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+        "/word/media/image#.tiff",
+        XWPFPictureData::new, XWPFPictureData::new
     );
     public static final XWPFRelation IMAGE_EPS = new XWPFRelation(
-            "image/x-eps",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-            "/word/media/image#.eps",
-            XWPFPictureData.class
+        "image/x-eps",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+        "/word/media/image#.eps",
+        XWPFPictureData::new, XWPFPictureData::new
     );
     public static final XWPFRelation IMAGE_BMP = new XWPFRelation(
-            "image/x-ms-bmp",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-            "/word/media/image#.bmp",
-            XWPFPictureData.class
+        "image/x-ms-bmp",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+        "/word/media/image#.bmp",
+        XWPFPictureData::new, XWPFPictureData::new
     );
     public static final XWPFRelation IMAGE_WPG = new XWPFRelation(
-            "image/x-wpg",
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-            "/word/media/image#.wpg",
-            XWPFPictureData.class
+        "image/x-wpg",
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+        "/word/media/image#.wpg",
+        XWPFPictureData::new, XWPFPictureData::new
     );
     public static final XWPFRelation IMAGES = new XWPFRelation(
-            null,
-            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-            null,
-            XWPFPictureData.class
+        null,
+        "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+        null,
+        XWPFPictureData::new, XWPFPictureData::new
     );
 
-    private XWPFRelation(String type, String rel, String defaultName, Class<? extends POIXMLDocumentPart> cls) {
-        super(type, rel, defaultName, cls);
+    private XWPFRelation(String type, String rel, String defaultName) {
+        super(type, rel, defaultName);
+        _table.put(rel, this);
+    }
+
+    private XWPFRelation(String type, String rel, String defaultName,
+                         NoArgConstructor noArgConstructor,
+                         PackagePartConstructor packagePartConstructor) {
+        super(type, rel, defaultName, noArgConstructor, packagePartConstructor, null);
+        _table.put(rel, this);
+    }
+
+    private XWPFRelation(String type, String rel, String defaultName,
+                         NoArgConstructor noArgConstructor,
+                         ParentPartConstructor parentPartConstructor) {
+        super(type, rel, defaultName, noArgConstructor, null, parentPartConstructor);
         _table.put(rel, this);
     }
 
index 1a2d6bd7065aebb26e4551e9dc3b17c82db31056..0db76db673cdeeeb424392c2ffdca1723c69d60e 100644 (file)
@@ -29,7 +29,6 @@ import javax.xml.namespace.QName;
 
 import org.apache.poi.ooxml.POIXMLDocumentPart;
 import org.apache.poi.ooxml.POIXMLException;
-import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlOptions;
@@ -61,13 +60,13 @@ public class XWPFStyles extends POIXMLDocumentPart {
      * Construct XWPFStyles from a package part
      *
      * @param part the package part holding the data of the styles,
-     * 
+     *
      * @since POI 3.14-Beta1
      */
-    public XWPFStyles(PackagePart part) throws IOException, OpenXML4JException {
+    public XWPFStyles(PackagePart part) {
         super(part);
     }
-    
+
     /**
      * Construct XWPFStyles from scratch for a new document.
      */
index bc00b1d0a6ec40d8686359027d34f9a3abe621bf..aec4e432bfcc97188b3d2c887c9458b7ee243796 100644 (file)
@@ -29,7 +29,6 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.Thread.UncaughtExceptionHandler;
-import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -37,6 +36,7 @@ import java.util.List;
 
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.ooxml.POIXMLDocumentPart.RelationPart;
+import org.apache.poi.ooxml.util.PackageHelper;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.openxml4j.exceptions.OpenXML4JRuntimeException;
 import org.apache.poi.openxml4j.opc.OPCPackage;
@@ -44,7 +44,6 @@ import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
 import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.NullOutputStream;
-import org.apache.poi.ooxml.util.PackageHelper;
 import org.apache.poi.util.TempFile;
 import org.apache.poi.xslf.usermodel.XMLSlideShow;
 import org.apache.poi.xssf.usermodel.XSSFRelation;
@@ -61,7 +60,7 @@ public final class TestPOIXMLDocument {
         public OPCParser(OPCPackage pkg) {
             super(pkg);
         }
-        
+
         public OPCParser(OPCPackage pkg, String coreDocumentRel) {
             super(pkg, coreDocumentRel);
         }
@@ -86,16 +85,6 @@ public final class TestPOIXMLDocument {
         protected POIXMLRelation getDescriptor(String relationshipType) {
             return null;
         }
-
-        /**
-         * @since POI 3.14-Beta1
-         */
-        @Override
-        protected POIXMLDocumentPart createDocumentPart
-            (Class<? extends POIXMLDocumentPart> cls, Class<?>[] classes, Object[] values)
-        throws SecurityException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
-            return null;
-        }
     }
 
     private static void traverse(POIXMLDocument doc) throws IOException{
@@ -104,18 +93,18 @@ public final class TestPOIXMLDocument {
             traverse(p, context);
         }
     }
-    
+
     /**
      * Recursively traverse a OOXML document and assert that same logical parts have the same physical instances
      */
     private static void traverse(RelationPart rp, HashMap<String,POIXMLDocumentPart> context) throws IOException{
         POIXMLDocumentPart dp = rp.getDocumentPart();
         assertEquals(rp.getRelationship().getTargetURI().toString(), dp.getPackagePart().getPartName().getName());
-        
+
         context.put(dp.getPackagePart().getPartName().getName(), dp);
         for(RelationPart p : dp.getRelationParts()){
             assertNotNull(p.getRelationship().toString());
-            
+
             String uri = p.getDocumentPart().getPackagePart().getPartName().getURI().toString();
             assertEquals(uri, p.getRelationship().getTargetURI().toString());
             if (!context.containsKey(uri)) {
@@ -138,7 +127,7 @@ public final class TestPOIXMLDocument {
         FileOutputStream out = new FileOutputStream(tmp);
         doc.write(out);
         out.close();
-        
+
         // Should not be able to write to an output stream that has been closed
         try {
             doc.write(out);
@@ -166,7 +155,7 @@ public final class TestPOIXMLDocument {
                 throw e;
             }
         }
-        
+
         // Should be able to close a document multiple times, though subsequent closes will have no effect.
         doc.close();
 
@@ -177,17 +166,17 @@ public final class TestPOIXMLDocument {
         try {
             doc.parse(new TestFactory());
             traverse(doc);
-    
+
             assertEquals(pkg1.getRelationships().size(), pkg2.getRelationships().size());
-    
+
             ArrayList<PackagePart> l1 = pkg1.getParts();
             ArrayList<PackagePart> l2 = pkg2.getParts();
-    
+
             assertEquals(l1.size(), l2.size());
             for (int i=0; i < l1.size(); i++){
                 PackagePart p1 = l1.get(i);
                 PackagePart p2 = l2.get(i);
-    
+
                 assertEquals(p1.getContentType(), p2.getContentType());
                 assertEquals(p1.hasRelationships(), p2.hasRelationships());
                 if(p1.hasRelationships()){
@@ -234,7 +223,7 @@ public final class TestPOIXMLDocument {
             }
         }
     }
-    
+
     @Test
     public void testGetNextPartNumber() throws Exception {
         POIDataSamples pds = POIDataSamples.getDocumentInstance();
@@ -280,32 +269,32 @@ public final class TestPOIXMLDocument {
         part.onDocumentCreate();
         //part.getTargetPart(null);
     }
-    
+
     @Test
     public void testVSDX() throws Exception {
         POIDataSamples pds = POIDataSamples.getDiagramInstance();
         @SuppressWarnings("resource")
         OPCPackage open = PackageHelper.open(pds.openResourceAsStream("test.vsdx"));
         POIXMLDocument part = new OPCParser(open, PackageRelationshipTypes.VISIO_CORE_DOCUMENT);
-        
+
         assertNotNull(part);
         assertEquals(0, part.getRelationCounter());
         part.close();
     }
-    
+
     @Test
     public void testVSDXPart() throws IOException {
         POIDataSamples pds = POIDataSamples.getDiagramInstance();
         OPCPackage open = PackageHelper.open(pds.openResourceAsStream("test.vsdx"));
-        
+
         POIXMLDocumentPart part = new POIXMLDocumentPart(open, PackageRelationshipTypes.VISIO_CORE_DOCUMENT);
-        
+
         assertNotNull(part);
         assertEquals(0, part.getRelationCounter());
-        
+
         open.close();
     }
-    
+
     @Test(expected=POIXMLException.class)
     public void testInvalidCoreRel() throws IOException {
         POIDataSamples pds = POIDataSamples.getDiagramInstance();
@@ -349,7 +338,7 @@ public final class TestPOIXMLDocument {
 
         ClassLoader cl = getClass().getClassLoader();
         UncaughtHandler uh = new UncaughtHandler();
-        
+
         // check schema type loading and check if we could run in an OOM
         Thread[] ta = new Thread[30];
         for (int j=0; j<10; j++) {
@@ -372,12 +361,12 @@ public final class TestPOIXMLDocument {
 
     private static class UncaughtHandler implements UncaughtExceptionHandler {
         Throwable e;
-        
+
         public synchronized void uncaughtException(Thread t, Throwable e) {
             this.e = e;
-            
+
         }
-        
+
         public synchronized boolean hasException() {
             return e != null;
         }