]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bugzilla #49754: Bring clone() in line with the recommendations in Object.clone().
authorGlenn Adams <gadams@apache.org>
Sun, 8 Apr 2012 23:48:11 +0000 (23:48 +0000)
committerGlenn Adams <gadams@apache.org>
Sun, 8 Apr 2012 23:48:11 +0000 (23:48 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1311120 13f79535-47bb-0310-9956-ffa450edef68

21 files changed:
findbugs-exclude.xml
src/java/org/apache/fop/area/Area.java
src/java/org/apache/fop/area/AreaTreeObject.java
src/java/org/apache/fop/area/BodyRegion.java
src/java/org/apache/fop/area/Page.java
src/java/org/apache/fop/area/PageViewport.java
src/java/org/apache/fop/area/RegionReference.java
src/java/org/apache/fop/area/RegionViewport.java
src/java/org/apache/fop/hyphenation/CharVector.java
src/java/org/apache/fop/hyphenation/TernaryTree.java
src/java/org/apache/fop/render/awt/AWTRenderer.java
src/java/org/apache/fop/render/intermediate/IFGraphicContext.java
src/java/org/apache/fop/render/java2d/Java2DRenderer.java
src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/IRtfTextContainer.java
src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfAttributes.java
src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfHyperLink.java
src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfParagraph.java
src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfTable.java
src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfTableRow.java
src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfText.java
src/java/org/apache/fop/tools/anttasks/FileCompare.java

index 86471d609d7dc3b9c7661d71e054d11101382f82..f46b0f1baa5282c9591cf6996eed0683ce67a38d 100644 (file)
         <Bug pattern="PZLA_PREFER_ZERO_LENGTH_ARRAYS"/>
    </Match>
    <!-- Automatically generated list of exclusions -->
-   <Match>
-      <Class name="org.apache.fop.area.BodyRegion"/>
-      <Method name="clone"/>
-      <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
-   </Match>
-   <Match>
-      <Class name="org.apache.fop.area.Page"/>
-      <Method name="clone"/>
-      <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
-   </Match>
-   <Match>
-      <Class name="org.apache.fop.area.PageViewport"/>
-      <Method name="clone"/>
-      <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
-   </Match>
-   <Match>
-      <Class name="org.apache.fop.area.RegionReference"/>
-      <Method name="clone"/>
-      <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
-   </Match>
-   <Match>
-      <Class name="org.apache.fop.area.BodyRegion"/>
-      <!--Neither method nor field-->
-      <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
-   </Match>
-   <Match>
-      <Class name="org.apache.fop.area.RegionViewport"/>
-      <Method name="clone"/>
-      <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
-   </Match>
-   <Match>
-      <Class name="org.apache.fop.hyphenation.CharVector"/>
-      <Method name="clone"/>
-      <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
-   </Match>
-   <Match>
-      <Class name="org.apache.fop.hyphenation.TernaryTree"/>
-      <Method name="clone"/>
-      <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
-   </Match>
-   <Match>
-      <Class name="org.apache.fop.hyphenation.HyphenationTree"/>
-      <!--Neither method nor field-->
-      <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
-   </Match>
    <Match>
       <Class name="org.apache.fop.render.intermediate.IFGraphicContext"/>
       <Method name="clone"/>
       <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
    </Match>
-   <Match>
-      <Class name="org.apache.fop.render.rtf.rtflib.rtfdoc.RtfAttributes"/>
-      <Method name="clone"/>
-      <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
-   </Match>
-   <Match>
-      <Class name="org.apache.fop.render.rtf.FOPRtfAttributes"/>
-      <!--Neither method nor field-->
-      <Bug pattern="CN_IDIOM_NO_SUPER_CALL"/>
-   </Match>
    <Match>
       <Class name="org.apache.fop.hyphenation.Hyphenator"/>
       <Method name="getResourceStream"/>
       <!--Neither method nor field-->
       <Bug pattern="RI_REDUNDANT_INTERFACES"/>
    </Match>
-   <Match>
-      <Class name="java.lang.Cloneable"/>
-      <!--Neither method nor field-->
-      <Bug pattern="RI_REDUNDANT_INTERFACES"/>
-   </Match>
    <Match>
       <Class name="org.apache.fop.afp.modca.AbstractResourceGroupContainer"/>
       <!--Neither method nor field-->
index ce9d9638c28d1a9b3d2e11df0123e705c014daff..240a0ab10d7a02cd5b522f763aaf48ea605eb17b 100644 (file)
@@ -21,6 +21,7 @@ package org.apache.fop.area;
 
 import java.io.Serializable;
 import java.util.Map;
+import java.util.TreeMap;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -116,9 +117,9 @@ public class Area extends AreaTreeObject implements Serializable {
     protected int bidiLevel = -1;
 
     /**
-     * Traits for this area stored in a HashMap
+     * Traits for this area.
      */
-    protected transient Map<Integer, Object> traits = null;
+    protected TreeMap<Integer, Object> traits;
 
     /**
      * logging instance
@@ -134,6 +135,15 @@ public class Area extends AreaTreeObject implements Serializable {
         return this.areaClass;
     }
 
+    /** {@inheritDoc} */
+    public Object clone() throws CloneNotSupportedException {
+        Area area = (Area) super.clone();
+        if (traits != null) {
+            area.traits = (TreeMap<Integer, Object>) traits.clone();
+        }
+        return area;
+    }
+
     /**
      * Set the area class of this area.
      *
@@ -390,10 +400,9 @@ public class Area extends AreaTreeObject implements Serializable {
      * @param prop the value of the trait
      */
     public void addTrait(Integer traitCode, Object prop) {
-        // use treemap instead of hashmap since the typical number
-        // of traits are less than four
+        // use treemap since the typical number of traits are less than four
         if (traits == null) {
-            traits = new java.util.TreeMap<Integer, Object>();
+            traits = new TreeMap<Integer, Object>();
         }
         traits.put(traitCode, prop);
     }
@@ -405,7 +414,7 @@ public class Area extends AreaTreeObject implements Serializable {
      */
     public void setTraits ( Map traits ) {
         if ( traits != null ) {
-            this.traits = new java.util.TreeMap ( traits );
+            this.traits = new TreeMap<Integer, Object>( traits );
         } else {
             this.traits = null;
         }
index ebd88b887ac84bf995923adc3032c279e6ec1c5f..91e76c3d4a3c3473fbf91aef3bfd3abb8d1f5f93 100644 (file)
@@ -19,7 +19,9 @@
 
 package org.apache.fop.area;
 
+import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -30,7 +32,7 @@ import org.apache.fop.fo.extensions.ExtensionAttachment;
 /**
  * Abstract base class for all area tree objects.
  */
-public abstract class AreaTreeObject {
+public abstract class AreaTreeObject implements Cloneable {
 
     /** Foreign attributes */
     protected Map<QName, String> foreignAttributes = null;
@@ -38,6 +40,18 @@ public abstract class AreaTreeObject {
     /** Extension attachments */
     protected List<ExtensionAttachment> extensionAttachments = null;
 
+    /** {@inheritDoc} */
+    public Object clone() throws CloneNotSupportedException {
+        AreaTreeObject ato = (AreaTreeObject) super.clone();
+        if (foreignAttributes != null) {
+            ato.foreignAttributes = (Map) ((HashMap) foreignAttributes).clone();
+        }
+        if (extensionAttachments != null) {
+            ato.extensionAttachments = (List) ((ArrayList) extensionAttachments).clone();
+        }
+        return ato;
+    }
+
     /**
      * Sets a foreign attribute.
      * @param name the qualified name of the attribute
@@ -45,7 +59,7 @@ public abstract class AreaTreeObject {
      */
     public void setForeignAttribute(QName name, String value) {
         if (this.foreignAttributes == null) {
-            this.foreignAttributes = new java.util.HashMap<QName, String>();
+            this.foreignAttributes = new HashMap<QName, String>();
         }
         this.foreignAttributes.put(name, value);
     }
@@ -88,7 +102,7 @@ public abstract class AreaTreeObject {
 
     private void prepareExtensionAttachmentContainer() {
         if (this.extensionAttachments == null) {
-            this.extensionAttachments = new java.util.ArrayList<ExtensionAttachment>();
+            this.extensionAttachments = new ArrayList<ExtensionAttachment>();
         }
     }
 
index 2fd0b014b5d68d034f85b66c2b7cd57d96c5cc3b..61de7852b4a8c24193fc4b319c9520feac616a07 100644 (file)
@@ -151,19 +151,11 @@ public class BodyRegion extends RegionReference {
         }
     }
 
-    /**
-     * Clone this object.
-     *
-     * @return a shallow copy of this object
-     */
-    public Object clone() {
-        BodyRegion br = new BodyRegion(getRegionClass(), getRegionName(), regionViewport,
-                getColumnCount(), getColumnGap());
-        br.setCTM(getCTM());
-        br.setIPD(getIPD());
-        br.beforeFloat = beforeFloat;
-        br.mainReference = mainReference;
-        br.footnote = footnote;
+    /** {@inheritDoc} */
+    public Object clone() throws CloneNotSupportedException {
+        BodyRegion br = (BodyRegion) super.clone();
+        br.mainReference = new MainReference(br);
         return br;
     }
+
 }
index 9bf670a0efd63c3c008965d55fb09b00062bcca4..2094761990ca27fe925bf90af3419328d8b2b810 100644 (file)
@@ -54,7 +54,7 @@ import static org.apache.fop.fo.Constants.FO_REGION_START;
  * The page is cloneable so the page master can make copies of
  * the top level page and regions.
  */
-public class Page extends AreaTreeObject implements Serializable, Cloneable {
+public class Page extends AreaTreeObject implements Serializable {
 
     private static final long serialVersionUID = 6272157047421543866L;
 
@@ -72,10 +72,9 @@ public class Page extends AreaTreeObject implements Serializable, Cloneable {
     private boolean fakeNonEmpty = false;
 
     /**
-     *  Empty constructor, for cloning
+     *  Empty constructor
      */
-    public Page() {
-    }
+    public Page() { }
 
     /**
      * Constructor
@@ -258,14 +257,9 @@ public class Page extends AreaTreeObject implements Serializable, Cloneable {
         }
     }
 
-    /**
-     * Clone this page.
-     * This returns a new page with a clone of all the regions.
-     *
-     * @return a new clone of this page
-     */
-    public Object clone() {
-        Page p = new Page();
+    /** {@inheritDoc} */
+    public Object clone() throws CloneNotSupportedException {
+        Page p = (Page) super.clone();
         if (regionBefore != null) {
             p.regionBefore = (RegionViewport)regionBefore.clone();
         }
index 9ec46a53dea56671a511df4d33d06399669f4e30..f38964ebc48a206fc77fb791badcd34b2cecc0f0 100644 (file)
@@ -32,6 +32,7 @@ import java.util.Set;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import org.apache.fop.apps.FOPException;
 import org.apache.fop.fo.flow.Marker;
 import org.apache.fop.fo.pagination.SimplePageMaster;
 import org.apache.fop.traits.WritingModeTraitsGetter;
@@ -50,7 +51,7 @@ import static org.apache.fop.fo.Constants.FO_REGION_BODY;
  * This is the level that creates the page.
  * The page (reference area) is then rendered inside the page object
  */
-public class PageViewport extends AreaTreeObject implements Resolvable, Cloneable {
+public class PageViewport extends AreaTreeObject implements Resolvable {
 
     private Page page;
     private Rectangle viewArea;
@@ -130,8 +131,9 @@ public class PageViewport extends AreaTreeObject implements Resolvable, Cloneabl
     /**
      * Copy constructor.
      * @param original the original PageViewport to copy from
+     * @throws FOPException when cloning of the page is not supported
      */
-    public PageViewport(PageViewport original) {
+    public PageViewport(PageViewport original) throws FOPException {
         if (original.extensionAttachments != null) {
             setExtensionAttachments(original.extensionAttachments);
         }
@@ -141,7 +143,11 @@ public class PageViewport extends AreaTreeObject implements Resolvable, Cloneabl
         this.pageIndex = original.pageIndex;
         this.pageNumber = original.pageNumber;
         this.pageNumberString = original.pageNumberString;
-        this.page = (Page)original.page.clone();
+        try {
+            this.page = (Page) original.page.clone();
+        } catch (CloneNotSupportedException e) {
+            throw new FOPException(e);
+        }
         this.viewArea = new Rectangle(original.viewArea);
         this.simplePageMasterName = original.simplePageMasterName;
         this.blank = original.blank;
@@ -557,13 +563,12 @@ public class PageViewport extends AreaTreeObject implements Resolvable, Cloneabl
         }
     }
 
-    /**
-     * Clone this page.
-     * Used by the page master to create a copy of an original page.
-     * @return a copy of this page and associated viewports
-     */
-    public Object clone() {
-        return new PageViewport(this);
+    /** {@inheritDoc} */
+    public Object clone() throws CloneNotSupportedException {
+        PageViewport pvp = (PageViewport) super.clone();
+        pvp.page = (Page) page.clone();
+        pvp.viewArea = (Rectangle) viewArea.clone();
+        return pvp;
     }
 
     /**
index 4158f924af277e77979ddc5217d610b99ab598b9..e6b46fee46169aa38de4614f2f548cde86c77c9f 100644 (file)
@@ -29,7 +29,7 @@ import org.apache.fop.fo.pagination.Region;
  * This area is the direct child of a region-viewport-area. It is cloneable
  * so the page master can make copies from the original page and regions.
  */
-public class RegionReference extends Area implements Cloneable {
+public class RegionReference extends Area {
 
     private static final long serialVersionUID = -298980963268244238L;
 
@@ -134,17 +134,10 @@ public class RegionReference extends Area implements Cloneable {
         addChildArea(block);
     }
 
-    /**
-     * Clone this region.
-     * This is used when cloning the page by the page master.
-     *
-     * @return a copy of this region reference area
-     */
-    public Object clone() {
-        RegionReference rr = new RegionReference(regionClass, regionName, regionViewport);
-        rr.ctm = ctm;
-        rr.setIPD(getIPD());
-        rr.blocks = (ArrayList<Area>)blocks.clone();
+    /** {@inheritDoc} */
+    public Object clone() throws CloneNotSupportedException {
+        RegionReference rr = (RegionReference) super.clone();
+        rr.blocks = (ArrayList) blocks.clone();
         return rr;
     }
 
index 093b891bc1d87d27dbbedab6bd0b088101f1200f..1b1c5ae7d263c9fe4b92837f4354d63ab193888b 100644 (file)
@@ -22,7 +22,6 @@ package org.apache.fop.area;
 import java.awt.Rectangle;
 import java.awt.geom.Rectangle2D;
 import java.io.IOException;
-import java.util.HashMap;
 import java.util.TreeMap;
 
 import org.apache.fop.traits.WritingModeTraitsGetter;
@@ -33,7 +32,7 @@ import org.apache.fop.traits.WritingModeTraitsGetter;
  * region-reference-area as its child.  These areas are described
  * in the fo:region-body description in the XSL Recommendation.
  */
-public class RegionViewport extends Area implements Cloneable, Viewport {
+public class RegionViewport extends Area implements Viewport {
 
     private static final long serialVersionUID = 505781815165102572L;
 
@@ -122,21 +121,11 @@ public class RegionViewport extends Area implements Cloneable, Viewport {
         setRegionReference((RegionReference) in.readObject());
     }
 
-    /**
-     * Clone this region viewport.
-     * Used when creating a copy from the page master.
-     *
-     * @return a new copy of this region viewport
-     */
-    public Object clone() {
-        RegionViewport rv = new RegionViewport((Rectangle2D)viewArea.clone());
-        rv.regionReference = (RegionReference)regionReference.clone();
-        if (traits != null) {
-            rv.traits = new TreeMap(traits);
-        }
-        if (foreignAttributes != null) {
-            rv.foreignAttributes = new HashMap(foreignAttributes);
-        }
+    /** {@inheritDoc} */
+    public Object clone() throws CloneNotSupportedException {
+        RegionViewport rv = (RegionViewport) super.clone();
+        rv.regionReference = (RegionReference) regionReference.clone();
+        rv.viewArea = (Rectangle2D) viewArea.clone();
         return rv;
     }
 
index e957be87e80e00036759722f50352de365e6029e..de95a769971dadf6825cda26d4bac81467b3960b 100644 (file)
@@ -101,9 +101,9 @@ public class CharVector implements Cloneable, Serializable {
     }
 
     /** {@inheritDoc} */
-    public Object clone() {
-        CharVector cv = new CharVector((char[])array.clone(), blockSize);
-        cv.n = this.n;
+    public Object clone() throws CloneNotSupportedException {
+        CharVector cv = (CharVector) super.clone();
+        cv.array = (char[])array.clone();
         return cv;
     }
 
index 2a9b7705d648dbd85e42b73e31e81c69a34bdb04..04def1927d90a3ac8a4adc5879df8058729846ff 100644 (file)
@@ -48,7 +48,7 @@ import java.util.Stack;
  * patterns which will be keys in this tree. The strings patterns
  * are usually small (from 2 to 5 characters), but each char in the
  * tree is stored in a node. Thus memory usage is the main concern.
- * We will sacrify 'elegance' to keep memory requirenments to the
+ * We will sacrify 'elegance' to keep memory requirements to the
  * minimum. Using java's char type as pointer (yes, I know pointer
  * it is a forbidden word in java) we can keep the size of the node
  * to be just 8 bytes (3 pointers and the data char). This gives
@@ -406,16 +406,13 @@ public class TernaryTree implements Cloneable, Serializable {
     }
 
     /** {@inheritDoc} */
-    public Object clone() {
-        TernaryTree t = new TernaryTree();
+    public Object clone() throws CloneNotSupportedException {
+        TernaryTree t = (TernaryTree) super.clone();
         t.lo = (char[])this.lo.clone();
         t.hi = (char[])this.hi.clone();
         t.eq = (char[])this.eq.clone();
         t.sc = (char[])this.sc.clone();
         t.kv = (CharVector)this.kv.clone();
-        t.root = this.root;
-        t.freenode = this.freenode;
-        t.length = this.length;
 
         return t;
     }
index c366552042f0cea985ed6d605c4e9b2dbce734d5..826dde23335065b8bc8b6bdaafc7facbf9e18d00 100644 (file)
@@ -103,8 +103,9 @@ public class AWTRenderer extends Java2DRenderer implements Pageable {
 
     /**
      * {@inheritDoc}
+     * @throws FOPException thrown by java2DRenderer
      */
-    public void renderPage(PageViewport pageViewport) throws IOException {
+    public void renderPage(PageViewport pageViewport) throws IOException, FOPException {
 
         super.renderPage(pageViewport);
         if (statusListener != null) {
index 6e431e5130834e4846ed2ad0123ac843fcbdc75f..8c3f998a903fd0025f30e66680170f91660b0fda 100644 (file)
@@ -22,7 +22,7 @@ package org.apache.fop.render.intermediate;
 import java.awt.Dimension;
 import java.awt.Rectangle;
 import java.awt.geom.AffineTransform;
-import java.util.List;
+import java.util.ArrayList;
 
 import org.apache.xmlgraphics.java2d.GraphicContext;
 
@@ -33,7 +33,7 @@ public class IFGraphicContext extends GraphicContext {
 
     private static final AffineTransform[] EMPTY_TRANSFORM_ARRAY = new AffineTransform[0];
 
-    private List groupList = new java.util.ArrayList();
+    private ArrayList groupList = new ArrayList();
 
     /**
      * Default constructor.
@@ -48,17 +48,20 @@ public class IFGraphicContext extends GraphicContext {
      */
     protected IFGraphicContext(IFGraphicContext graphicContext) {
         super(graphicContext);
-        //We don't clone groupDepth!
+        // N.B. do not perform deep copy on groupList; doing so causes
+        // a junit regression... have not investigated cause... [GA]
+        // groupList = (ArrayList) graphicContext.groupList.clone();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public Object clone() {
-        return new IFGraphicContext(this);
+        return new IFGraphicContext ( this );
     }
 
     /** @param group a group */
     public void pushGroup(Group group) {
-        //this.groupDepth++;
         this.groupList.add(group);
         for (int i = 0, c = group.getTransforms().length; i < c; i++) {
             transform(group.getTransforms()[i]);
index 45c91b2ee701d4528fb7494a773e659979322676..8b60df7469b539b14bb420300e2d2bec103cf80e 100644 (file)
@@ -267,10 +267,15 @@ public abstract class Java2DRenderer extends AbstractPathOrientedRenderer implem
      * @param pageViewport the <code>PageViewport</code> object supplied by
      * the Area Tree
      * @throws IOException In case of an I/O error
+     * @throws FOPException if cloning of pageViewport is not supported
      * @see org.apache.fop.render.Renderer
      */
-    public void renderPage(PageViewport pageViewport) throws IOException {
-        rememberPage((PageViewport)pageViewport.clone());
+    public void renderPage(PageViewport pageViewport) throws IOException, FOPException {
+        try {
+            rememberPage((PageViewport)pageViewport.clone());
+        } catch (CloneNotSupportedException e) {
+            throw new FOPException(e);
+        }
         //The clone() call is necessary as we store the page for later. Otherwise, the
         //RenderPagesModel calls PageViewport.clear() to release memory as early as possible.
         currentPageNumber++;
index 5d0ab30d84730937bd77b76c35e8e33585ffb090..4a7779cc41cd37df4704b690b7d60d24383c0fa1 100644 (file)
@@ -28,6 +28,8 @@ package org.apache.fop.render.rtf.rtflib.rtfdoc;
 
 import java.io.IOException;
 
+import org.apache.fop.apps.FOPException;
+
 /**
  * <p>Interface for RtfElements that can contain RtfText elements.</p>
  *
@@ -61,6 +63,7 @@ public interface IRtfTextContainer {
     /**
      * Text containers usually provide default attributes for all texts that they contain.
      * @return a copy of the container's attributes.
+     * @throws FOPException if attributes cannot be obtained
      */
-    RtfAttributes getTextContainerAttributes();
+    RtfAttributes getTextContainerAttributes() throws FOPException;
 }
index b5d4db114d084d83fb83b8023b44756788f98db8..f1f25f3b495f0fdc5ea68985692c7e42adb117f4 100644 (file)
@@ -39,8 +39,8 @@ import org.xml.sax.helpers.AttributesImpl;
  * <p>This work was authored by Bertrand Delacretaz (bdelacretaz@codeconsult.ch).</p>
  */
 
-public class RtfAttributes
-implements java.lang.Cloneable {
+public class RtfAttributes implements Cloneable {
+
     private HashMap values = new HashMap();
 
     /**
@@ -108,12 +108,9 @@ implements java.lang.Cloneable {
         return values.toString() + "(" + super.toString() + ")";
     }
 
-    /**
-     * implement cloning
-     * @return cloned Object
-     */
-    public Object clone() {
-        final RtfAttributes result = new RtfAttributes();
+    /** {@inheritDoc} */
+    public Object clone() throws CloneNotSupportedException {
+        RtfAttributes result = (RtfAttributes) super.clone();
         result.values = (HashMap)values.clone();
 
         // Added by Normand Masse
index 0ca76715bc652ccbc363e6d8770ef4af19afb576..baca8892669783e01dd31e11d248e695f4f23441 100644 (file)
@@ -29,6 +29,8 @@ package org.apache.fop.render.rtf.rtflib.rtfdoc;
 import java.io.IOException;
 import java.io.Writer;
 
+import org.apache.fop.apps.FOPException;
+
 /**
  * <p>Creates an hyperlink.
  * This class belongs to the <fo:basic-link> tag processing.</p>
@@ -157,12 +159,17 @@ implements IRtfTextContainer,
     /**
      * IRtfTextContainer requirement:
      * @return a copy of our attributes
+     * @throws FOPException if attributes cannot be cloned
      */
-    public RtfAttributes getTextContainerAttributes() {
+    public RtfAttributes getTextContainerAttributes() throws FOPException {
         if (attrib == null) {
             return null;
         }
-        return (RtfAttributes) this.attrib.clone ();
+        try {
+            return (RtfAttributes) this.attrib.clone ();
+        } catch (CloneNotSupportedException e) {
+            throw new FOPException(e);
+        }
     }
 
 
index b4ff23b742c5a9f1f6cb60778ea8e39d07abb562..30f573dd58327581f3edae75f0170796faba2a93 100644 (file)
@@ -30,6 +30,8 @@ import java.io.IOException;
 import java.io.Writer;
 import java.util.List;
 
+import org.apache.fop.apps.FOPException;
+
 /**
  * <p>Model of an RTF paragraph, which can contain RTF text elements.</p>
  *
@@ -93,12 +95,17 @@ implements IRtfTextContainer, IRtfPageBreakContainer, IRtfHyperLinkContainer,
     /**
      * IRtfTextContainer requirement: return a copy of our attributes
      * @return a copy of this paragraphs attributes
+     * @throws FOPException if attributes cannot be cloned
      */
-    public RtfAttributes getTextContainerAttributes() {
+    public RtfAttributes getTextContainerAttributes() throws FOPException {
         if (attrib == null) {
             return null;
         }
-        return (RtfAttributes)this.attrib.clone();
+        try {
+            return (RtfAttributes)this.attrib.clone();
+        } catch (CloneNotSupportedException e) {
+            throw new FOPException(e);
+        }
     }
 
     /**
index 9b74f5b45ec6c9cb62199375af3067333a640e5d..018cbd8450156856f289150f53102a74695b44d9 100644 (file)
@@ -29,6 +29,8 @@ package org.apache.fop.render.rtf.rtflib.rtfdoc;
 import java.io.IOException;
 import java.io.Writer;
 
+import org.apache.fop.apps.FOPException;
+
 /**
  * <p>Container for RtfRow elements.</p>
  *
@@ -86,11 +88,16 @@ public class RtfTable extends RtfContainer {
      * @param attrs attributs of new RtfTableRow
      * @return new RtfTableRow
      * @throws IOException for I/O problems
+     * @throws FOPException if attributes cannot be cloned
      */
-    public RtfTableRow newTableRow(RtfAttributes attrs) throws IOException {
+    public RtfTableRow newTableRow(RtfAttributes attrs) throws IOException, FOPException {
         RtfAttributes attr = null;
         if (attrib != null) {
-            attr = (RtfAttributes) attrib.clone ();
+            try {
+                attr = (RtfAttributes) attrib.clone ();
+            } catch (CloneNotSupportedException e) {
+                throw new FOPException(e);
+            }
             attr.set (attrs);
         } else {
             attr = attrs;
index 74634da7f6fb96878f07a4d66da8ed2e957b88dd..19bda2e145d43933ecc056b7e87d0883659d3e59 100644 (file)
@@ -30,6 +30,8 @@ import java.io.IOException;
 import java.io.Writer;
 import java.util.Iterator;
 
+import org.apache.fop.apps.FOPException;
+
 /**
  * <p>Container for RtfTableCell elements.</p>
  *
@@ -106,15 +108,20 @@ public class RtfTableRow extends RtfContainer implements ITableAttributes {
      * @param cellWidth width of new cell
      * @return new RtfTableCell
      * @throws IOException for I/O problems
+     * @throws FOPException if attributes cannot be cloned
      */
     public RtfTableCell newTableCellMergedHorizontally (int cellWidth,
-           RtfAttributes attrs) throws IOException {
+           RtfAttributes attrs) throws IOException, FOPException {
         highestCell++;
         // Added by Normand Masse
         // Inherit attributes from base cell for merge
         RtfAttributes wAttributes = null;
         if (attrs != null) {
-            wAttributes = (RtfAttributes)attrs.clone();
+            try {
+                wAttributes = (RtfAttributes)attrs.clone();
+            } catch (CloneNotSupportedException e) {
+                throw new FOPException(e);
+            }
         }
 
         cell = new RtfTableCell(this, writer, cellWidth, wAttributes, highestCell);
index 4df178af16e36da264d14ae959e2b8e7f76d4200..89c7d28995836dee9de857af056d0804078a3627 100644 (file)
@@ -29,6 +29,8 @@ package org.apache.fop.render.rtf.rtflib.rtfdoc;
 import java.io.IOException;
 import java.io.Writer;
 
+import org.apache.fop.apps.FOPException;
+
 /**
  * <p>Model of a text run (a piece of text with attributes) in an RTF document.</p>
  *
@@ -240,12 +242,18 @@ public class RtfText extends RtfElement {
     }
 
     /** IRtfTextContainer requirement:
-     * @return a copy of our attributes */
-    public RtfAttributes getTextContainerAttributes() {
+     * @return a copy of our attributes
+     * @throws FOPException if attributes cannot be cloned
+     */
+    public RtfAttributes getTextContainerAttributes() throws FOPException {
         if (attrib == null) {
             return null;
         }
-        return (RtfAttributes)this.attrib.clone();
+        try {
+            return (RtfAttributes)this.attrib.clone();
+        } catch (CloneNotSupportedException e) {
+            throw new FOPException(e);
+        }
     }
 
     /** direct access to our text */
index 462049907309b11e41aa1487e5fcbd048d8e72e0..4906bdc6c6c653c865974bdb9bccb4c059d5aad5 100644 (file)
@@ -126,7 +126,7 @@ public class FileCompare {
      */
     private static boolean compareFileSize(File oldFile, File newFile) {
         return oldFile.length() == newFile.length();
-    }    // end: compareBytes
+    }
 
     private boolean filesExist(File oldFile, File newFile) {
         if (!oldFile.exists()) {