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>