You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by gb...@apache.org on 2012/07/29 17:41:08 UTC
svn commit: r1366858 - in /pdfbox/trunk/xmpbox/src:
main/java/org/apache/padaf/xmpbox/parser/
main/java/org/apache/padaf/xmpbox/type/
test/resources/org/apache/padaf/xmpbox/parser/
Author: gbailleul
Date: Sun Jul 29 15:41:07 2012
New Revision: 1366858
URL: http://svn.apache.org/viewvc?rev=1366858&view=rev
Log:
PDFBOX-1368: fix : structured type where not serialized in a rdf:Description element.
The rdf:Description element was not expected while reading rdf element.
Modified:
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/StructuredPropertyParser.java
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractStructuredType.java
pdfbox/trunk/xmpbox/src/test/resources/org/apache/padaf/xmpbox/parser/ThumbisartorStyle.xml
Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/StructuredPropertyParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/StructuredPropertyParser.java?rev=1366858&r1=1366857&r2=1366858&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/StructuredPropertyParser.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/StructuredPropertyParser.java Sun Jul 29 15:41:07 2012
@@ -137,16 +137,15 @@ public class StructuredPropertyParser {
XMLStreamException, XmpUnknownPropertyTypeException,
XmpPropertyFormatException {
builder.expectCurrentLocalName("li");
- // create property
-// String fieldPrefix = retrieveNamespacePrefix(
-// builder.reader.get(),
-// getStructuredClassNamespace(typeClass));
-// ComplexPropertyContainer property = instanciateProperty(metadata, fieldPrefix );
- ComplexPropertyContainer property = instanciateProperty(metadata);
+ AbstractStructuredType property = instanciateProperty(metadata);
XMLStreamReader reader = builder.getReader();
int elmtType = reader.nextTag();
+ // rdf:Description is mandatory
+ builder.expectCurrentLocalName("Description");
+ elmtType = reader.nextTag();
+
QName eltName;
- while (!((elmtType == XMLStreamReader.END_ELEMENT) && reader.getName().getLocalPart().equals("li"))) {
+ while (!((elmtType == XMLStreamReader.END_ELEMENT) && reader.getName().getLocalPart().equals("Description"))) {
// read element name, then text content
eltName = reader.getName();
String eltContent = reader.getElementText();
@@ -173,6 +172,8 @@ public class StructuredPropertyParser {
}
elmtType = reader.nextTag();
}
+ // closing rdf:Description element
+ reader.nextTag();
container.addProperty(property);
}
Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractStructuredType.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractStructuredType.java?rev=1366858&r1=1366857&r2=1366858&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractStructuredType.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractStructuredType.java Sun Jul 29 15:41:07 2012
@@ -26,12 +26,14 @@ import java.util.List;
import org.apache.padaf.xmpbox.XMPMetadata;
-public abstract class AbstractStructuredType extends ComplexPropertyContainer {
+public abstract class AbstractStructuredType extends AbstractField {
/** The prefix of the fields of the structure */
private String fieldPrefix = null;
+
+ private ComplexPropertyContainer container = null;
protected static final String STRUCTURE_ARRAY_PREFIX = "rdf";
@@ -40,7 +42,9 @@ public abstract class AbstractStructured
public AbstractStructuredType(XMPMetadata metadata, String namespaceURI,
String fieldPrefix) {
super(metadata, namespaceURI, STRUCTURE_ARRAY_PREFIX, STRUCTURE_ARRAY_NAME);
+ this.container = new ComplexPropertyContainer(metadata, namespaceURI, STRUCTURE_ARRAY_PREFIX, "Description");
this.fieldPrefix = fieldPrefix;
+ getElement().appendChild(container.getElement());
}
public abstract String getFieldsNamespace();
@@ -49,6 +53,20 @@ public abstract class AbstractStructured
return this.fieldPrefix;
}
+
+ public final void addProperty(AbstractField obj) {
+ container.addProperty(obj);
+ }
+
+ protected final AbstractField getFirstEquivalentProperty(String localName,
+ Class<? extends AbstractField> type) {
+ return container.getFirstEquivalentProperty(localName, type);
+ }
+
+ public final List<AbstractField> getAllProperties() {
+ return container.getAllProperties();
+ }
+
protected void addSimpleProperty (String propertyName, Object value) {
AbstractSimpleProperty asp = TypeMapping.instanciateSimpleField(getClass(), getMetadata(),null,fieldPrefix,propertyName, value);
@@ -57,7 +75,7 @@ public abstract class AbstractStructured
protected AbstractSimpleProperty getProperty (String fieldName) {
- List<AbstractField> list = getPropertiesByLocalName(fieldName);
+ List<AbstractField> list = container.getPropertiesByLocalName(fieldName);
// return null if no property
if (list==null) {
return null;
@@ -77,7 +95,7 @@ public abstract class AbstractStructured
}
protected Calendar getDatePropertyAsCalendar(String fieldName) {
- DateType absProp = (DateType)getFirstEquivalentProperty(fieldName,DateType.class);
+ DateType absProp = (DateType)container.getFirstEquivalentProperty(fieldName,DateType.class);
if (absProp != null) {
return absProp.getValue();
} else {
Modified: pdfbox/trunk/xmpbox/src/test/resources/org/apache/padaf/xmpbox/parser/ThumbisartorStyle.xml
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/resources/org/apache/padaf/xmpbox/parser/ThumbisartorStyle.xml?rev=1366858&r1=1366857&r2=1366858&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/resources/org/apache/padaf/xmpbox/parser/ThumbisartorStyle.xml (original)
+++ pdfbox/trunk/xmpbox/src/test/resources/org/apache/padaf/xmpbox/parser/ThumbisartorStyle.xml Sun Jul 29 15:41:07 2012
@@ -24,10 +24,12 @@
<xmp:Thumbnails xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/">
<rdf:Alt>
<rdf:li rdf:parseType="Resource">
- <xapGImg:height>162</xapGImg:height>
- <xapGImg:width>216</xapGImg:width>
- <xapGImg:format>JPEG</xapGImg:format>
- <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD</xapGImg:image>
+ <rdf:Description>
+ <xapGImg:height>162</xapGImg:height>
+ <xapGImg:width>216</xapGImg:width>
+ <xapGImg:format>JPEG</xapGImg:format>
+ <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD</xapGImg:image>
+ </rdf:Description>
</rdf:li>
</rdf:Alt>
</xmp:Thumbnails>