You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by ma...@apache.org on 2009/09/15 14:50:47 UTC
svn commit: r815301 -
/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/extensions/GoToXYAction.java
Author: maxberger
Date: Tue Sep 15 12:50:47 2009
New Revision: 815301
URL: http://svn.apache.org/viewvc?rev=815301&view=rev
Log:
Add safeguards for getter not to return null
fixes an NPE with disfunctional links.
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/extensions/GoToXYAction.java
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/extensions/GoToXYAction.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/extensions/GoToXYAction.java?rev=815301&r1=815300&r2=815301&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/extensions/GoToXYAction.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/extensions/GoToXYAction.java Tue Sep 15 12:50:47 2009
@@ -71,18 +71,34 @@
/**
* Returns the page index of the target page.
+ * <p>
+ * This function will always return a valid value for safety. Use
+ * {@link #isComplete()} to check if the link is actually complete.
+ *
* @return the page index (0-based)
*/
public int getPageIndex() {
- return this.pageIndex;
+ if (this.pageIndex >= 0) {
+ return this.pageIndex;
+ } else {
+ return 0;
+ }
}
/**
* Returns the absolute coordinates of the target location on the page.
+ * <p>
+ * This function will always return a valid value for safety. Use
+ * {@link #isComplete()} to check if the link is actually complete.
+ *
* @return the target location (coordinates in millipoints)
*/
public Point getTargetLocation() {
- return this.targetLocation;
+ if (this.targetLocation == null) {
+ return new Point(0, 0);
+ } else {
+ return this.targetLocation;
+ }
}
/**
@@ -93,9 +109,13 @@
this.targetLocation = location;
}
+ private boolean isCompleteExceptTargetLocation() {
+ return (getPageIndex() >= 0);
+ }
+
/** {@inheritDoc} */
public boolean isComplete() {
- return (getPageIndex() >= 0) && (getTargetLocation() != null);
+ return this.isCompleteExceptTargetLocation() && (this.targetLocation != null);
}
/** {@inheritDoc} */
@@ -107,10 +127,10 @@
return false;
}
GoToXYAction otherAction = (GoToXYAction)other;
- if (getPageIndex() != otherAction.getPageIndex()) {
+ if (this.pageIndex != otherAction.pageIndex) {
return false;
}
- if (getTargetLocation() == null || otherAction.getTargetLocation() == null) {
+ if (this.targetLocation == null || otherAction.targetLocation == null) {
return false;
}
if (!getTargetLocation().equals(otherAction.getTargetLocation())) {
@@ -121,16 +141,16 @@
/** {@inheritDoc} */
public void toSAX(ContentHandler handler) throws SAXException {
- if (getTargetLocation() == null) {
- setTargetLocation(new Point(0, 0));
- }
AttributesImpl atts = new AttributesImpl();
- if (isComplete()) {
+ if (this.isCompleteExceptTargetLocation()) {
+ final Point reportedTargetLocation = this.getTargetLocation();
atts.addAttribute(null, "id", "id", XMLUtil.CDATA, getID());
atts.addAttribute(null, "page-index", "page-index",
XMLUtil.CDATA, Integer.toString(pageIndex));
- atts.addAttribute(null, "x", "x", XMLUtil.CDATA, Integer.toString(targetLocation.x));
- atts.addAttribute(null, "y", "y", XMLUtil.CDATA, Integer.toString(targetLocation.y));
+ atts.addAttribute(null, "x", "x", XMLUtil.CDATA,
+ Integer.toString(reportedTargetLocation.x));
+ atts.addAttribute(null, "y", "y", XMLUtil.CDATA,
+ Integer.toString(reportedTargetLocation.y));
} else {
atts.addAttribute(null, "idref", "idref", XMLUtil.CDATA, getID());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org