git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@655791 13f79535-47bb-0310-9956-ffa450edef68tags/fop-1_0
@@ -79,10 +79,6 @@ public abstract class FOEventHandler { | |||
* This is used so we know if the FO tree contains duplicates. | |||
*/ | |||
private Set idReferences = new HashSet(); | |||
/** | |||
* Keeps track of the last automatically generated id in the current document | |||
*/ | |||
private long lastGeneratedId = 1; | |||
/** | |||
* The property list maker. | |||
@@ -181,15 +177,6 @@ public abstract class FOEventHandler { | |||
return this.inMarker; | |||
} | |||
/** | |||
* Return the next value for automatically generated ids | |||
* | |||
* @return the next value to append to automatically generated ids | |||
*/ | |||
public long getNextId() { | |||
return this.lastGeneratedId++; | |||
} | |||
/** | |||
* This method is called to indicate the start of a new document run. | |||
* @throws SAXException In case of a problem |
@@ -2503,7 +2503,7 @@ public final class FOPropertyMapping implements Constants { | |||
addPropertyMaker("content-type", m); | |||
// id | |||
m = new StringProperty.IdMaker(PR_ID); | |||
m = new StringProperty.Maker(PR_ID); | |||
m.setInherited(false); | |||
m.setDefault(""); | |||
addPropertyMaker("id", m); |
@@ -81,49 +81,7 @@ public final class StringProperty extends Property { | |||
} | |||
} | |||
/** | |||
* Inner class dedicated to the "id" property, which should provide a random | |||
* unique identifier as an initial value. | |||
* The values for "id" are never cached, as they're typically valid for one | |||
* document. | |||
*/ | |||
public static class IdMaker extends PropertyMaker { | |||
/** | |||
* @param propId the id of the property for which the maker should be created | |||
*/ | |||
public IdMaker(int propId) { | |||
super(propId); | |||
} | |||
/** {@inheritDoc} */ | |||
public Property make(PropertyList propertyList) throws PropertyException { | |||
String newId = "FO_"; | |||
newId += propertyList.getFObj().getFOEventHandler().getNextId(); | |||
return new StringProperty(newId); | |||
} | |||
/** {@inheritDoc} */ | |||
public Property make(PropertyList propertyList, | |||
String value, | |||
FObj fo) throws PropertyException { | |||
Property idProp; | |||
//no parsing necessary; just return a new StringProperty | |||
//TODO: Should we move validation here? (see FObj#checkId()) | |||
if ("".equals(value)) { | |||
//if an empty string was specified, return the default | |||
idProp = this.make(propertyList); | |||
} else { | |||
idProp = new StringProperty(value); | |||
} | |||
return idProp; | |||
} | |||
} | |||
/** cache containing all canonical StringProperty instances */ | |||
private static final PropertyCache cache = new PropertyCache(StringProperty.class); | |||
@@ -1,28 +0,0 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:test="http://xmlgraphics.apache.org/fop/test"> | |||
<test:assert property="id" expected="FO_1" /> | |||
<fo:layout-master-set> | |||
<test:assert property="id" expected="FO_2" /> | |||
<fo:simple-page-master master-name="simpleA4" page-height="29.7cm" page-width="21cm" margin-top="2cm" margin-bottom="2cm" margin-left="2cm" margin-right="2cm"> | |||
<test:assert property="id" expected="FO_3" /> | |||
<fo:region-body> | |||
<test:assert property="id" expected="FO_4" /> | |||
</fo:region-body> | |||
</fo:simple-page-master> | |||
</fo:layout-master-set> | |||
<fo:page-sequence master-reference="simpleA4"> | |||
<test:assert property="id" expected="FO_5" /> | |||
<fo:flow flow-name="xsl-region-body"> | |||
<test:assert property="id" expected="FO_6" /> | |||
<fo:block font-size="14pt" id="block">Hello | |||
<test:assert property="id" expected="block"/> | |||
<fo:inline> World! | |||
<test:assert property="id" expected="FO_7" /> | |||
</fo:inline> | |||
</fo:block> | |||
<fo:block font-family="ZapfDingbats">઎ | |||
<test:assert property="id" expected="FO_8" /> | |||
</fo:block> | |||
</fo:flow> | |||
</fo:page-sequence> | |||
</fo:root> |