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 2013/03/06 16:57:52 UTC
svn commit: r1453395 [8/11] - in /pdfbox/trunk/xmpbox: ./
src/main/java/org/apache/xmpbox/ src/main/java/org/apache/xmpbox/schema/
src/main/java/org/apache/xmpbox/type/ src/main/java/org/apache/xmpbox/xml/
src/test/java/org/apache/xmpbox/ src/test/java...
Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/XmpParsingException.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/XmpParsingException.java?rev=1453395&r1=1453394&r2=1453395&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/XmpParsingException.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/XmpParsingException.java Wed Mar 6 15:57:44 2013
@@ -27,59 +27,55 @@ package org.apache.xmpbox.xml;
* @author a183132
*
*/
-public class XmpParsingException extends Exception {
+public class XmpParsingException extends Exception
+{
- public enum ErrorType {
- Undefined,
- Configuration,
- XpacketBadStart,
- XpacketBadEnd,
- NoRootElement,
- NoSchema, // undefined schema
- InvalidPdfaSchema,
- NoType, // undefined type
- InvalidType,
- Format, // weird things in serialized document
- NoValueType,
- RequiredProperty,
- InvalidPrefix, // unexpected namespace prefix used
- }
-
- private ErrorType errorType;
-
- /**
- * serial version uid
- */
- private static final long serialVersionUID = -8843096358184702908L;
-
- /**
- * Create an instance of XmpParsingException
- *
- * @param message
- * a description of the encountered problem
- * @param cause
- * the cause of the exception
- */
- public XmpParsingException(ErrorType error, String message, Throwable cause) {
- super(message, cause);
- this.errorType = error;
- }
-
- /**
- * Create an instance of XmpParsingException
- *
- * @param message
- * a description of the encountered problem
- */
- public XmpParsingException(ErrorType error, String message) {
- super(message);
- this.errorType = error;
- }
-
- public ErrorType getErrorType() {
- return errorType;
- }
+ public enum ErrorType
+ {
+ Undefined, Configuration, XpacketBadStart, XpacketBadEnd, NoRootElement, NoSchema, // undefined
+ // schema
+ InvalidPdfaSchema, NoType, // undefined type
+ InvalidType, Format, // weird things in serialized document
+ NoValueType, RequiredProperty, InvalidPrefix, // unexpected namespace
+ // prefix used
+ }
+
+ private ErrorType errorType;
+
+ /**
+ * serial version uid
+ */
+ private static final long serialVersionUID = -8843096358184702908L;
+
+ /**
+ * Create an instance of XmpParsingException
+ *
+ * @param message
+ * a description of the encountered problem
+ * @param cause
+ * the cause of the exception
+ */
+ public XmpParsingException(ErrorType error, String message, Throwable cause)
+ {
+ super(message, cause);
+ this.errorType = error;
+ }
+
+ /**
+ * Create an instance of XmpParsingException
+ *
+ * @param message
+ * a description of the encountered problem
+ */
+ public XmpParsingException(ErrorType error, String message)
+ {
+ super(message);
+ this.errorType = error;
+ }
+
+ public ErrorType getErrorType()
+ {
+ return errorType;
+ }
-
-
}
Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/XmpSerializationException.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/XmpSerializationException.java?rev=1453395&r1=1453394&r2=1453395&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/XmpSerializationException.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/XmpSerializationException.java Wed Mar 6 15:57:44 2013
@@ -27,31 +27,34 @@ package org.apache.xmpbox.xml;
* @author a183132
*
*/
-public class XmpSerializationException extends Exception {
+public class XmpSerializationException extends Exception
+{
- private static final long serialVersionUID = -3495894314480173555L;
+ private static final long serialVersionUID = -3495894314480173555L;
- /**
- * Create an instance of TransformException
- *
- * @param message
- * a description of the encountered problem
- */
- public XmpSerializationException(String message) {
- super(message);
- }
+ /**
+ * Create an instance of TransformException
+ *
+ * @param message
+ * a description of the encountered problem
+ */
+ public XmpSerializationException(String message)
+ {
+ super(message);
+ }
- /**
- * Create an instance of TransformException
- *
- * @param message
- * a description of the encountered problem
- * @param cause
- * the cause of the exception
- */
- public XmpSerializationException(String message, Throwable cause) {
- super(message, cause);
+ /**
+ * Create an instance of TransformException
+ *
+ * @param message
+ * a description of the encountered problem
+ * @param cause
+ * the cause of the exception
+ */
+ public XmpSerializationException(String message, Throwable cause)
+ {
+ super(message, cause);
- }
+ }
}
Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/XmpSerializer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/XmpSerializer.java?rev=1453395&r1=1453394&r2=1453395&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/XmpSerializer.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/xml/XmpSerializer.java Wed Mar 6 15:57:44 2013
@@ -50,176 +50,203 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.ProcessingInstruction;
-public class XmpSerializer {
+public class XmpSerializer
+{
- private DocumentBuilder documentBuilder = null;
+ private DocumentBuilder documentBuilder = null;
- private boolean parseTypeResourceForLi = true;
+ private boolean parseTypeResourceForLi = true;
- public XmpSerializer () throws XmpSerializationException {
- // xml init
- DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
- try {
- documentBuilder = builderFactory.newDocumentBuilder();
- } catch (ParserConfigurationException e) {
- throw new XmpSerializationException("Failed to init XmpSerializer", e);
- }
-
- }
-
-
- public void serialize(XMPMetadata metadata, OutputStream os, boolean withXpacket) throws TransformerException {
- Document doc = documentBuilder.newDocument();
- // fill document
- Element rdf = createRdfElement(doc,metadata, withXpacket);
- for (XMPSchema schema : metadata.getAllSchemas()) {
- rdf.appendChild(serializeSchema(doc, schema));
- }
- // save
- save(doc, os, "UTF-8");
- }
-
- protected Element serializeSchema (Document doc, XMPSchema schema) {
- // prepare schema
- Element selem = doc.createElementNS(XmpConstants.RDF_NAMESPACE,"rdf:Description");
- selem.setAttributeNS(XmpConstants.RDF_NAMESPACE, "rdf:about",schema.getAboutValue());
- selem.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns:"+schema.getPrefix(), schema.getNamespace());
- // the other attributes
- fillElementWithAttributes(selem, schema);
- // the content
- List<AbstractField> fields = schema.getAllProperties();
- serializeFields(doc, selem, fields, true);
- // return created schema
- return selem;
- }
-
- public void serializeFields (Document doc, Element parent, List<AbstractField> fields, boolean wrapWithProperty) {
- for (AbstractField field : fields) {
-
- if (field instanceof AbstractSimpleProperty) {
- AbstractSimpleProperty simple = (AbstractSimpleProperty)field;
- Element esimple = doc.createElement(simple.getPrefix()+":"+simple.getPropertyName());
- esimple.setTextContent(simple.getStringValue());
- parent.appendChild(esimple);
- } else if (field instanceof ArrayProperty) {
- ArrayProperty array = (ArrayProperty)field;
- // property
- Element asimple = doc.createElement(array.getPrefix()+":"+array.getPropertyName());
- parent.appendChild(asimple);
- // attributes
- fillElementWithAttributes(asimple, array);
- // the array definition
- Element econtainer = doc.createElement(XmpConstants.DEFAULT_RDF_PREFIX+":"+array.getArrayType());
- asimple.appendChild(econtainer);
- // for each element of the array
- List<AbstractField> innerFields = array.getAllProperties();
- serializeFields(doc, econtainer, innerFields, false);
- } else if (field instanceof AbstractStructuredType) {
- AbstractStructuredType structured = (AbstractStructuredType)field;
- List<AbstractField> innerFields = structured.getAllProperties();
- // property name attribute
- Element listParent = parent;
- if (wrapWithProperty) {
- Element nstructured = doc.createElement(structured.getPrefix()+":"+structured.getPropertyName());
- parent.appendChild(nstructured);
- listParent = nstructured;
- }
-
- // element li
- Element estructured = doc.createElement(XmpConstants.DEFAULT_RDF_PREFIX+":"+XmpConstants.LIST_NAME);
- listParent.appendChild(estructured);
- if (parseTypeResourceForLi) {
- estructured.setAttribute("rdf:parseType", "Resource");
- // all properties
- serializeFields(doc, estructured, innerFields, true);
- } else {
- // element description
- Element econtainer = doc.createElement(XmpConstants.DEFAULT_RDF_PREFIX+":"+"Description");
- estructured.appendChild(econtainer);
- // all properties
- serializeFields(doc, econtainer, innerFields, true);
- }
- } else {
- // XXX finish serialization classes
- System.err.println(">> TODO >> "+field.getClass());
- }
- }
-
- }
-
- private void fillElementWithAttributes (Element target, AbstractComplexProperty property ) {
- List<Attribute> attributes = property.getAllAttributes();
- for (Attribute attribute : attributes) {
- if (XmpConstants.RDF_NAMESPACE.equals(attribute.getNamespace())) {
- target.setAttribute(XmpConstants.DEFAULT_RDF_PREFIX+":"+attribute.getName(), attribute.getValue());
- } else if (target.getNamespaceURI().equals(attribute.getNamespace())) {
- target.setAttribute(attribute.getName(), attribute.getValue());
- } else {
- target.setAttribute(attribute.getName(), attribute.getValue());
- }
- }
- for (Map.Entry<String, String> ns : property.getAllNamespacesWithPrefix().entrySet()) {
- target.setAttribute(XMLConstants.XMLNS_ATTRIBUTE+":"+ns.getValue(), ns.getKey());
- }
- }
-
- protected Element createRdfElement (Document doc, XMPMetadata metadata, boolean withXpacket) {
- // starting xpacket
- if (withXpacket) {
- ProcessingInstruction beginXPacket = doc
- .createProcessingInstruction("xpacket", "begin=\""
- + metadata.getXpacketBegin() + "\" id=\""
- + metadata.getXpacketId() + "\"");
- doc.appendChild(beginXPacket);
- }
- // meta element
- Element xmpmeta = doc.createElementNS("adobe:ns:meta/", "x:xmpmeta");
- xmpmeta.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns:x","adobe:ns:meta/");
- doc.appendChild(xmpmeta);
- // ending xpacket
- if (withXpacket) {
- ProcessingInstruction endXPacket = doc
- .createProcessingInstruction("xpacket", "end=\""+metadata
- .getEndXPacket()+"\"");
- doc.appendChild(endXPacket);
- }
- // rdf element
- Element rdf = doc.createElementNS(XmpConstants.RDF_NAMESPACE, "rdf:RDF");
- // rdf.setAttributeNS(XMPSchema.NS_NAMESPACE, qualifiedName, value)
- xmpmeta.appendChild(rdf);
- // return the rdf element where all will be put
- return rdf;
- }
-
- /**
- * Save the XML document to an output stream.
- *
- * @param doc
- * The XML document to save.
- * @param outStream
- * The stream to save the document to.
- * @param encoding
- * The encoding to save the file as.
- *
- * @throws TransformerException
- * If there is an error while saving the XML.
- */
- private void save(Node doc, OutputStream outStream, String encoding)
- throws TransformerException {
- Transformer transformer = TransformerFactory.newInstance()
- .newTransformer();
- // human readable
- transformer.setOutputProperty(OutputKeys.INDENT, "yes");
- // indent elements
- transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
- // encoding
- transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
- transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
- "yes");
- // initialize StreamResult with File object to save to file
- Result result = new StreamResult(outStream);
- DOMSource source = new DOMSource(doc);
- // save
- transformer.transform(source, result);
- }
+ public XmpSerializer() throws XmpSerializationException
+ {
+ // xml init
+ DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
+ try
+ {
+ documentBuilder = builderFactory.newDocumentBuilder();
+ }
+ catch (ParserConfigurationException e)
+ {
+ throw new XmpSerializationException("Failed to init XmpSerializer", e);
+ }
+
+ }
+
+ public void serialize(XMPMetadata metadata, OutputStream os, boolean withXpacket) throws TransformerException
+ {
+ Document doc = documentBuilder.newDocument();
+ // fill document
+ Element rdf = createRdfElement(doc, metadata, withXpacket);
+ for (XMPSchema schema : metadata.getAllSchemas())
+ {
+ rdf.appendChild(serializeSchema(doc, schema));
+ }
+ // save
+ save(doc, os, "UTF-8");
+ }
+
+ protected Element serializeSchema(Document doc, XMPSchema schema)
+ {
+ // prepare schema
+ Element selem = doc.createElementNS(XmpConstants.RDF_NAMESPACE, "rdf:Description");
+ selem.setAttributeNS(XmpConstants.RDF_NAMESPACE, "rdf:about", schema.getAboutValue());
+ selem.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns:" + schema.getPrefix(), schema.getNamespace());
+ // the other attributes
+ fillElementWithAttributes(selem, schema);
+ // the content
+ List<AbstractField> fields = schema.getAllProperties();
+ serializeFields(doc, selem, fields, true);
+ // return created schema
+ return selem;
+ }
+
+ public void serializeFields(Document doc, Element parent, List<AbstractField> fields, boolean wrapWithProperty)
+ {
+ for (AbstractField field : fields)
+ {
+
+ if (field instanceof AbstractSimpleProperty)
+ {
+ AbstractSimpleProperty simple = (AbstractSimpleProperty) field;
+ Element esimple = doc.createElement(simple.getPrefix() + ":" + simple.getPropertyName());
+ esimple.setTextContent(simple.getStringValue());
+ parent.appendChild(esimple);
+ }
+ else if (field instanceof ArrayProperty)
+ {
+ ArrayProperty array = (ArrayProperty) field;
+ // property
+ Element asimple = doc.createElement(array.getPrefix() + ":" + array.getPropertyName());
+ parent.appendChild(asimple);
+ // attributes
+ fillElementWithAttributes(asimple, array);
+ // the array definition
+ Element econtainer = doc.createElement(XmpConstants.DEFAULT_RDF_PREFIX + ":" + array.getArrayType());
+ asimple.appendChild(econtainer);
+ // for each element of the array
+ List<AbstractField> innerFields = array.getAllProperties();
+ serializeFields(doc, econtainer, innerFields, false);
+ }
+ else if (field instanceof AbstractStructuredType)
+ {
+ AbstractStructuredType structured = (AbstractStructuredType) field;
+ List<AbstractField> innerFields = structured.getAllProperties();
+ // property name attribute
+ Element listParent = parent;
+ if (wrapWithProperty)
+ {
+ Element nstructured = doc
+ .createElement(structured.getPrefix() + ":" + structured.getPropertyName());
+ parent.appendChild(nstructured);
+ listParent = nstructured;
+ }
+
+ // element li
+ Element estructured = doc.createElement(XmpConstants.DEFAULT_RDF_PREFIX + ":" + XmpConstants.LIST_NAME);
+ listParent.appendChild(estructured);
+ if (parseTypeResourceForLi)
+ {
+ estructured.setAttribute("rdf:parseType", "Resource");
+ // all properties
+ serializeFields(doc, estructured, innerFields, true);
+ }
+ else
+ {
+ // element description
+ Element econtainer = doc.createElement(XmpConstants.DEFAULT_RDF_PREFIX + ":" + "Description");
+ estructured.appendChild(econtainer);
+ // all properties
+ serializeFields(doc, econtainer, innerFields, true);
+ }
+ }
+ else
+ {
+ // XXX finish serialization classes
+ System.err.println(">> TODO >> " + field.getClass());
+ }
+ }
+
+ }
+
+ private void fillElementWithAttributes(Element target, AbstractComplexProperty property)
+ {
+ List<Attribute> attributes = property.getAllAttributes();
+ for (Attribute attribute : attributes)
+ {
+ if (XmpConstants.RDF_NAMESPACE.equals(attribute.getNamespace()))
+ {
+ target.setAttribute(XmpConstants.DEFAULT_RDF_PREFIX + ":" + attribute.getName(), attribute.getValue());
+ }
+ else if (target.getNamespaceURI().equals(attribute.getNamespace()))
+ {
+ target.setAttribute(attribute.getName(), attribute.getValue());
+ }
+ else
+ {
+ target.setAttribute(attribute.getName(), attribute.getValue());
+ }
+ }
+ for (Map.Entry<String, String> ns : property.getAllNamespacesWithPrefix().entrySet())
+ {
+ target.setAttribute(XMLConstants.XMLNS_ATTRIBUTE + ":" + ns.getValue(), ns.getKey());
+ }
+ }
+
+ protected Element createRdfElement(Document doc, XMPMetadata metadata, boolean withXpacket)
+ {
+ // starting xpacket
+ if (withXpacket)
+ {
+ ProcessingInstruction beginXPacket = doc.createProcessingInstruction("xpacket",
+ "begin=\"" + metadata.getXpacketBegin() + "\" id=\"" + metadata.getXpacketId() + "\"");
+ doc.appendChild(beginXPacket);
+ }
+ // meta element
+ Element xmpmeta = doc.createElementNS("adobe:ns:meta/", "x:xmpmeta");
+ xmpmeta.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns:x", "adobe:ns:meta/");
+ doc.appendChild(xmpmeta);
+ // ending xpacket
+ if (withXpacket)
+ {
+ ProcessingInstruction endXPacket = doc.createProcessingInstruction("xpacket",
+ "end=\"" + metadata.getEndXPacket() + "\"");
+ doc.appendChild(endXPacket);
+ }
+ // rdf element
+ Element rdf = doc.createElementNS(XmpConstants.RDF_NAMESPACE, "rdf:RDF");
+ // rdf.setAttributeNS(XMPSchema.NS_NAMESPACE, qualifiedName, value)
+ xmpmeta.appendChild(rdf);
+ // return the rdf element where all will be put
+ return rdf;
+ }
+
+ /**
+ * Save the XML document to an output stream.
+ *
+ * @param doc
+ * The XML document to save.
+ * @param outStream
+ * The stream to save the document to.
+ * @param encoding
+ * The encoding to save the file as.
+ *
+ * @throws TransformerException
+ * If there is an error while saving the XML.
+ */
+ private void save(Node doc, OutputStream outStream, String encoding) throws TransformerException
+ {
+ Transformer transformer = TransformerFactory.newInstance().newTransformer();
+ // human readable
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ // indent elements
+ transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
+ // encoding
+ transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
+ transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ // initialize StreamResult with File object to save to file
+ Result result = new StreamResult(outStream);
+ DOMSource source = new DOMSource(doc);
+ // save
+ transformer.transform(source, result);
+ }
}
Modified: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DoubleSameTypeSchemaTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DoubleSameTypeSchemaTest.java?rev=1453395&r1=1453394&r2=1453395&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DoubleSameTypeSchemaTest.java (original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DoubleSameTypeSchemaTest.java Wed Mar 6 15:57:44 2013
@@ -26,7 +26,6 @@ import java.util.List;
import junit.framework.Assert;
-import org.apache.xmpbox.XMPMetadata;
import org.apache.xmpbox.schema.DublinCoreSchema;
import org.apache.xmpbox.schema.XMPSchema;
import org.apache.xmpbox.type.StructuredType;
@@ -34,59 +33,60 @@ import org.junit.Before;
import org.junit.Test;
/**
- * Test with 2 dublinCore with different prefix (Test comportment of
- * XMPMetadata)
+ * Test with 2 dublinCore with different prefix (Test comportment of XMPMetadata)
*
* @author a183132
*
*/
-public class DoubleSameTypeSchemaTest {
+public class DoubleSameTypeSchemaTest
+{
- protected XMPMetadata metadata;
+ protected XMPMetadata metadata;
- @Before
- public void testInit() throws Exception {
- metadata = XMPMetadata.createXMPMetadata();
- }
-
- @Test
- public void testDoubleDublinCore() throws Exception {
- DublinCoreSchema dc1 = metadata.createAndAddDublinCoreSchema();
- String ownPrefix = "test";
- DublinCoreSchema dc2 = new DublinCoreSchema(metadata, ownPrefix);
- metadata.addSchema(dc2);
-
- List<String> creators = new ArrayList<String>();
- creators.add("creator1");
- creators.add("creator2");
-
- String format = "application/pdf";
- dc1.setFormat(format);
- dc1.addCreator(creators.get(0));
- dc1.addCreator(creators.get(1));
-
- String coverage = "Coverage";
- dc2.setCoverage(coverage);
- dc2.addCreator(creators.get(0));
- dc2.addCreator(creators.get(1));
-
- StructuredType stDub = DublinCoreSchema.class.getAnnotation(StructuredType.class);
-
- // We can't use metadata.getDublinCoreSchema() due to specification of
- // XMPBox (see Javadoc of XMPMetadata)
- Assert.assertEquals(format, ((DublinCoreSchema) metadata.getSchema(
- stDub.preferedPrefix(), stDub.namespace()))
- .getFormat());
- Assert.assertEquals(coverage, ((DublinCoreSchema) metadata.getSchema(
- ownPrefix, stDub.namespace())).getCoverage());
-
- List<XMPSchema> schems = metadata.getAllSchemas();
- DublinCoreSchema dc;
- for (XMPSchema xmpSchema : schems) {
- dc = (DublinCoreSchema) xmpSchema;
- Assert.assertTrue(dc.getCreators().containsAll(creators));
- }
+ @Before
+ public void testInit() throws Exception
+ {
+ metadata = XMPMetadata.createXMPMetadata();
+ }
+
+ @Test
+ public void testDoubleDublinCore() throws Exception
+ {
+ DublinCoreSchema dc1 = metadata.createAndAddDublinCoreSchema();
+ String ownPrefix = "test";
+ DublinCoreSchema dc2 = new DublinCoreSchema(metadata, ownPrefix);
+ metadata.addSchema(dc2);
+
+ List<String> creators = new ArrayList<String>();
+ creators.add("creator1");
+ creators.add("creator2");
+
+ String format = "application/pdf";
+ dc1.setFormat(format);
+ dc1.addCreator(creators.get(0));
+ dc1.addCreator(creators.get(1));
+
+ String coverage = "Coverage";
+ dc2.setCoverage(coverage);
+ dc2.addCreator(creators.get(0));
+ dc2.addCreator(creators.get(1));
+
+ StructuredType stDub = DublinCoreSchema.class.getAnnotation(StructuredType.class);
+
+ // We can't use metadata.getDublinCoreSchema() due to specification of
+ // XMPBox (see Javadoc of XMPMetadata)
+ Assert.assertEquals(format,
+ ((DublinCoreSchema) metadata.getSchema(stDub.preferedPrefix(), stDub.namespace())).getFormat());
+ Assert.assertEquals(coverage,
+ ((DublinCoreSchema) metadata.getSchema(ownPrefix, stDub.namespace())).getCoverage());
+
+ List<XMPSchema> schems = metadata.getAllSchemas();
+ DublinCoreSchema dc;
+ for (XMPSchema xmpSchema : schems)
+ {
+ dc = (DublinCoreSchema) xmpSchema;
+ Assert.assertTrue(dc.getCreators().containsAll(creators));
+ }
-
- }
+ }
}
Modified: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/SaveMetadataHelperTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/SaveMetadataHelperTest.java?rev=1453395&r1=1453394&r2=1453395&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/SaveMetadataHelperTest.java (original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/SaveMetadataHelperTest.java Wed Mar 6 15:57:44 2013
@@ -21,37 +21,38 @@
package org.apache.xmpbox;
-import org.apache.xmpbox.XMPMetadata;
import org.apache.xmpbox.schema.AdobePDFSchema;
import org.apache.xmpbox.schema.DublinCoreSchema;
import org.junit.Test;
-public class SaveMetadataHelperTest {
+public class SaveMetadataHelperTest
+{
- @Test
- public void testSchemaParsing() throws Exception {
- DublinCoreSchema dc = new DublinCoreSchema(XMPMetadata.createXMPMetadata());
- dc.setCoverage("coverage");
- dc.addContributor("contributor1");
- dc.addContributor("contributor2");
- dc.addDescription("x-default", "Description");
- }
-
- @Test
- public void testMetadataParsing() throws Exception {
- XMPMetadata meta = XMPMetadata.createXMPMetadata();
-
- DublinCoreSchema dc = meta.createAndAddDublinCoreSchema();
- dc.setCoverage("coverage");
- dc.addContributor("contributor1");
- dc.addContributor("contributor2");
- dc.addDescription("x-default", "Description");
-
- AdobePDFSchema pdf = meta.createAndAddAdobePDFSchema();
- pdf.setProducer("Producer");
- pdf.setPDFVersion("1.4");
+ @Test
+ public void testSchemaParsing() throws Exception
+ {
+ DublinCoreSchema dc = new DublinCoreSchema(XMPMetadata.createXMPMetadata());
+ dc.setCoverage("coverage");
+ dc.addContributor("contributor1");
+ dc.addContributor("contributor2");
+ dc.addDescription("x-default", "Description");
+ }
+
+ @Test
+ public void testMetadataParsing() throws Exception
+ {
+ XMPMetadata meta = XMPMetadata.createXMPMetadata();
+
+ DublinCoreSchema dc = meta.createAndAddDublinCoreSchema();
+ dc.setCoverage("coverage");
+ dc.addContributor("contributor1");
+ dc.addContributor("contributor2");
+ dc.addDescription("x-default", "Description");
+
+ AdobePDFSchema pdf = meta.createAndAddAdobePDFSchema();
+ pdf.setProducer("Producer");
+ pdf.setPDFVersion("1.4");
-
- }
+ }
}
Modified: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/TestXMPWithDefinedSchemas.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/TestXMPWithDefinedSchemas.java?rev=1453395&r1=1453394&r2=1453395&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/TestXMPWithDefinedSchemas.java (original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/TestXMPWithDefinedSchemas.java Wed Mar 6 15:57:44 2013
@@ -26,7 +26,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import org.apache.xmpbox.XMPMetadata;
import org.apache.xmpbox.xml.DomXmpParser;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -34,38 +33,37 @@ import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
-public class TestXMPWithDefinedSchemas {
+public class TestXMPWithDefinedSchemas
+{
-
+ @Parameters
+ public static Collection<Object[]> initializeParameters() throws Exception
+ {
+ List<Object[]> data = new ArrayList<Object[]>();
+ data.add(new Object[] { "/validxmp/override_ns.rdf" });
+ data.add(new Object[] { "/validxmp/ghost2.xmp" });
+ data.add(new Object[] { "/validxmp/history2.rdf" });
+ data.add(new Object[] { "/validxmp/Notepad++_A1b.xmp" });
+ data.add(new Object[] { "/validxmp/metadata.rdf" });
+ return data;
+ }
+
+ private String path;
+
+ public TestXMPWithDefinedSchemas(String path)
+ {
+ this.path = path;
+ }
+
+ @Test
+ public void main() throws Exception
+ {
- @Parameters
- public static Collection<Object[]> initializeParameters() throws Exception
- {
- List<Object[]> data = new ArrayList<Object[]>();
- data.add(new Object [] {"/validxmp/override_ns.rdf"});
- data.add(new Object [] {"/validxmp/ghost2.xmp"});
- data.add(new Object [] {"/validxmp/history2.rdf"});
- data.add(new Object [] {"/validxmp/Notepad++_A1b.xmp"});
- data.add(new Object [] {"/validxmp/metadata.rdf"});
- return data;
- }
-
- private String path;
-
- public TestXMPWithDefinedSchemas(String path) {
- this.path = path;
- }
-
-
- @Test
- public void main() throws Exception {
-
- InputStream is = this.getClass().getResourceAsStream(path);
-
- DomXmpParser builder = new DomXmpParser();
- XMPMetadata rxmp = builder.parse(is);
-
- }
+ InputStream is = this.getClass().getResourceAsStream(path);
+
+ DomXmpParser builder = new DomXmpParser();
+ XMPMetadata rxmp = builder.parse(is);
+
+ }
-
}
Modified: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/XMPMetaDataTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/XMPMetaDataTest.java?rev=1453395&r1=1453394&r2=1453395&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/XMPMetaDataTest.java (original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/XMPMetaDataTest.java Wed Mar 6 15:57:44 2013
@@ -25,7 +25,6 @@ import java.util.List;
import junit.framework.Assert;
-import org.apache.xmpbox.XMPMetadata;
import org.apache.xmpbox.schema.XMPSchema;
import org.apache.xmpbox.xml.XmpSerializationException;
import org.junit.Before;
@@ -38,79 +37,80 @@ import org.w3c.dom.Document;
* @author a183132
*
*/
-public class XMPMetaDataTest {
+public class XMPMetaDataTest
+{
- protected XMPMetadata metadata;
- protected Document parent;
- protected XMPSchema tmp, tmp2;
-
- @Before
- public void init() throws Exception {
- metadata = XMPMetadata.createXMPMetadata();
- String tmpNsURI = "http://www.test.org/schem/";
- tmp = new XMPSchema(metadata, tmpNsURI, "test");
- tmp.addQualifiedBagValue("BagContainer", "Value1");
- tmp.addQualifiedBagValue("BagContainer", "Value2");
- tmp.addQualifiedBagValue("BagContainer", "Value3");
-
- tmp.addUnqualifiedSequenceValue("SeqContainer", "Value1");
- tmp.addUnqualifiedSequenceValue("SeqContainer", "Value2");
- tmp.addUnqualifiedSequenceValue("SeqContainer", "Value3");
-
- tmp
- .addProperty(metadata.getTypeMapping().createText(null,"test", "simpleProperty",
- "YEP"));
-
- tmp2 = new XMPSchema(metadata, "http://www.space.org/schem/", "space","space");
- tmp2.addUnqualifiedSequenceValue("SeqSpContainer", "ValueSpace1");
- tmp2.addUnqualifiedSequenceValue("SeqSpContainer", "ValueSpace2");
- tmp2.addUnqualifiedSequenceValue("SeqSpContainer", "ValueSpace3");
-
- metadata.addSchema(tmp);
-
- metadata.addSchema(tmp2);
-
- // Check schema getting
- Assert.assertEquals(tmp, metadata.getSchema(tmpNsURI));
- Assert.assertNull(metadata.getSchema("THIS URI NOT EXISTS !"));
- }
-
- @Test
- public void testAddingSchem() {
-
- List<XMPSchema> vals = metadata.getAllSchemas();
- Assert.assertTrue(vals.contains(tmp));
- Assert.assertTrue(vals.contains(tmp2));
- }
-
- /*
- * @Test public void displayResult() throws TransformException {
- * System.out.println
- * ("info used:\n XPacketBegin:"+metadata.getXpacketBegin()+
- * "\n XPacketID:"+metadata.getXpacketId());
- * SaveMetadataHelper.serialize(metadata, true, System.out);
- *
- * }
- */
-
- @Test(expected = org.apache.xmpbox.xml.XmpSerializationException.class)
- public void testTransformerExceptionMessage() throws XmpSerializationException {
- throw new XmpSerializationException("TEST");
- }
-
- @Test(expected = org.apache.xmpbox.xml.XmpSerializationException.class)
- public void testTransformerExceptionWithCause() throws XmpSerializationException {
- throw new XmpSerializationException("TEST", new Throwable());
- }
-
- @Test
- public void testInitMetaDataWithInfo() throws Exception {
- String xpacketBegin = "TESTBEG", xpacketId = "TESTID", xpacketBytes = "TESTBYTES", xpacketEncoding = "TESTENCOD";
- metadata = XMPMetadata.createXMPMetadata(xpacketBegin, xpacketId, xpacketBytes,
- xpacketEncoding);
- Assert.assertEquals(xpacketBegin, metadata.getXpacketBegin());
- Assert.assertEquals(xpacketId, metadata.getXpacketId());
- Assert.assertEquals(xpacketBytes, metadata.getXpacketBytes());
- Assert.assertEquals(xpacketEncoding, metadata.getXpacketEncoding());
- }
+ protected XMPMetadata metadata;
+ protected Document parent;
+ protected XMPSchema tmp, tmp2;
+
+ @Before
+ public void init() throws Exception
+ {
+ metadata = XMPMetadata.createXMPMetadata();
+ String tmpNsURI = "http://www.test.org/schem/";
+ tmp = new XMPSchema(metadata, tmpNsURI, "test");
+ tmp.addQualifiedBagValue("BagContainer", "Value1");
+ tmp.addQualifiedBagValue("BagContainer", "Value2");
+ tmp.addQualifiedBagValue("BagContainer", "Value3");
+
+ tmp.addUnqualifiedSequenceValue("SeqContainer", "Value1");
+ tmp.addUnqualifiedSequenceValue("SeqContainer", "Value2");
+ tmp.addUnqualifiedSequenceValue("SeqContainer", "Value3");
+
+ tmp.addProperty(metadata.getTypeMapping().createText(null, "test", "simpleProperty", "YEP"));
+
+ tmp2 = new XMPSchema(metadata, "http://www.space.org/schem/", "space", "space");
+ tmp2.addUnqualifiedSequenceValue("SeqSpContainer", "ValueSpace1");
+ tmp2.addUnqualifiedSequenceValue("SeqSpContainer", "ValueSpace2");
+ tmp2.addUnqualifiedSequenceValue("SeqSpContainer", "ValueSpace3");
+
+ metadata.addSchema(tmp);
+
+ metadata.addSchema(tmp2);
+
+ // Check schema getting
+ Assert.assertEquals(tmp, metadata.getSchema(tmpNsURI));
+ Assert.assertNull(metadata.getSchema("THIS URI NOT EXISTS !"));
+ }
+
+ @Test
+ public void testAddingSchem()
+ {
+
+ List<XMPSchema> vals = metadata.getAllSchemas();
+ Assert.assertTrue(vals.contains(tmp));
+ Assert.assertTrue(vals.contains(tmp2));
+ }
+
+ /*
+ * @Test public void displayResult() throws TransformException { System.out.println
+ * ("info used:\n XPacketBegin:"+metadata.getXpacketBegin()+ "\n XPacketID:"+metadata.getXpacketId());
+ * SaveMetadataHelper.serialize(metadata, true, System.out);
+ *
+ * }
+ */
+
+ @Test(expected = org.apache.xmpbox.xml.XmpSerializationException.class)
+ public void testTransformerExceptionMessage() throws XmpSerializationException
+ {
+ throw new XmpSerializationException("TEST");
+ }
+
+ @Test(expected = org.apache.xmpbox.xml.XmpSerializationException.class)
+ public void testTransformerExceptionWithCause() throws XmpSerializationException
+ {
+ throw new XmpSerializationException("TEST", new Throwable());
+ }
+
+ @Test
+ public void testInitMetaDataWithInfo() throws Exception
+ {
+ String xpacketBegin = "TESTBEG", xpacketId = "TESTID", xpacketBytes = "TESTBYTES", xpacketEncoding = "TESTENCOD";
+ metadata = XMPMetadata.createXMPMetadata(xpacketBegin, xpacketId, xpacketBytes, xpacketEncoding);
+ Assert.assertEquals(xpacketBegin, metadata.getXpacketBegin());
+ Assert.assertEquals(xpacketId, metadata.getXpacketId());
+ Assert.assertEquals(xpacketBytes, metadata.getXpacketBytes());
+ Assert.assertEquals(xpacketEncoding, metadata.getXpacketEncoding());
+ }
}
Modified: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java?rev=1453395&r1=1453394&r2=1453395&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java (original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java Wed Mar 6 15:57:44 2013
@@ -34,291 +34,310 @@ import org.apache.xmpbox.schema.XMPSchem
import org.apache.xmpbox.type.ThumbnailType;
import org.apache.xmpbox.xml.DomXmpParser;
import org.apache.xmpbox.xml.XmpParsingException;
-import org.apache.xmpbox.xml.XmpSerializer;
import org.apache.xmpbox.xml.XmpParsingException.ErrorType;
+import org.apache.xmpbox.xml.XmpSerializer;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-public class DeserializationTest {
+public class DeserializationTest
+{
+
+ protected ByteArrayOutputStream bos;
+
+ protected XmpSerializer serializer;
+
+ @Before
+ public void init() throws Exception
+ {
+ bos = new ByteArrayOutputStream();
+ serializer = new XmpSerializer();
+ }
+
+ @Test
+ public void testStructuredRecursive() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/structured_recursive.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+
+ xdb.parse(fis);
+
+ }
+
+ @Test
+ public void testEmptyLi() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/empty_list.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+
+ xdb.parse(fis);
+
+ }
+
+ @Test
+ public void testEmptyLi2() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+
+ XMPMetadata meta = xdb.parse(fis);
+ DublinCoreSchema dc = meta.getDublinCoreSchema();
+ dc.getCreatorsProperty();
+ }
+
+ @Test
+ public void testGetTitle() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+
+ XMPMetadata meta = xdb.parse(fis);
+ DublinCoreSchema dc = meta.getDublinCoreSchema();
+ String s = dc.getTitle(null);
+ Assert.assertEquals("title value", s);
+ }
+
+ @Test
+ public void testAltBagSeq() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/AltBagSeqTest.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+
+ xdb.parse(fis);
+ // XMPMetadata metadata=xdb.parse(fis);
+ // SaveMetadataHelper.serialize(metadata, true, System.out);
+ }
+
+ @Test
+ public void testIsartorStyleWithThumbs() throws Exception
+ {
+
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/ThumbisartorStyle.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+
+ XMPMetadata metadata = xdb.parse(fis);
+
+ // <xmpMM:DocumentID>
+ Assert.assertEquals("uuid:09C78666-2F91-3A9C-92AF-3691A6D594F7", metadata.getXMPMediaManagementSchema()
+ .getDocumentID());
+
+ // <xmp:CreateDate>
+ // <xmp:ModifyDate>
+ // <xmp:MetadataDate>
+ Assert.assertEquals(DateConverter.toCalendar("2008-01-18T16:59:54+01:00"), metadata.getXMPBasicSchema()
+ .getCreateDate());
+ Assert.assertEquals(DateConverter.toCalendar("2008-01-18T16:59:54+01:00"), metadata.getXMPBasicSchema()
+ .getModifyDate());
+ Assert.assertEquals(DateConverter.toCalendar("2008-01-18T16:59:54+01:00"), metadata.getXMPBasicSchema()
+ .getMetadataDate());
+
+ // THUMBNAILS TEST
+ List<ThumbnailType> thumbs = metadata.getXMPBasicSchema().getThumbnailsProperty();
+ Assert.assertNotNull(thumbs);
+ Assert.assertEquals(2, thumbs.size());
+
+ ThumbnailType thumb = thumbs.get(0);
+ Assert.assertEquals(new Integer(162), thumb.getHeight());
+ Assert.assertEquals(new Integer(216), thumb.getWidth());
+ Assert.assertEquals("JPEG", thumb.getFormat());
+ Assert.assertEquals("/9j/4AAQSkZJRgABAgEASABIAAD", thumb.getImage());
+
+ thumb = thumbs.get(1);
+ Assert.assertEquals(new Integer(162), thumb.getHeight());
+ Assert.assertEquals(new Integer(216), thumb.getWidth());
+ Assert.assertEquals("JPEG", thumb.getFormat());
+ Assert.assertEquals("/9j/4AAQSkZJRgABAgEASABIAAD", thumb.getImage());
+
+ }
+
+ @Test
+ public void testWithNoXPacketStart() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/invalidxmp/noxpacket.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+ try
+ {
+ xdb.parse(fis);
+ Assert.fail("Should fail during parse");
+ }
+ catch (XmpParsingException e)
+ {
+ Assert.assertEquals(ErrorType.XpacketBadStart, e.getErrorType());
+ }
+ }
+
+ @Test
+ public void testWithNoXPacketEnd() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/invalidxmp/noxpacketend.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+ try
+ {
+ xdb.parse(fis);
+ Assert.fail("Should fail during parse");
+ }
+ catch (XmpParsingException e)
+ {
+ Assert.assertEquals(ErrorType.XpacketBadEnd, e.getErrorType());
+ }
+ }
+
+ @Test
+ public void testWithNoRDFElement() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/invalidxmp/noroot.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+ try
+ {
+ xdb.parse(fis);
+ Assert.fail("Should fail during parse");
+ }
+ catch (XmpParsingException e)
+ {
+ Assert.assertEquals(ErrorType.Format, e.getErrorType());
+ }
+ }
+
+ @Test
+ public void testWithTwoRDFElement() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/invalidxmp/tworoot.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+ try
+ {
+ xdb.parse(fis);
+ Assert.fail("Should fail during parse");
+ }
+ catch (XmpParsingException e)
+ {
+ Assert.assertEquals(ErrorType.Format, e.getErrorType());
+ }
+ }
+
+ @Test
+ public void testWithInvalidRDFElementPrefix() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/invalidxmp/invalidroot2.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+ try
+ {
+ xdb.parse(fis);
+ Assert.fail("Should fail during parse");
+ }
+ catch (XmpParsingException e)
+ {
+ Assert.assertEquals(ErrorType.Format, e.getErrorType());
+ }
+ }
+
+ @Test
+ public void testWithRDFRootAsText() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/invalidxmp/invalidroot.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+ try
+ {
+ xdb.parse(fis);
+ Assert.fail("Should fail during parse");
+ }
+ catch (XmpParsingException e)
+ {
+ Assert.assertEquals(ErrorType.Format, e.getErrorType());
+ }
+ }
+
+ @Test
+ public void testUndefinedSchema() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedschema.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+ try
+ {
+ xdb.parse(fis);
+ Assert.fail("Should fail during parse");
+ }
+ catch (XmpParsingException e)
+ {
+ Assert.assertEquals(ErrorType.NoSchema, e.getErrorType());
+ }
+ }
+
+ @Test
+ public void testUndefinedPropertyWithDefinedSchema() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedpropertyindefinedschema.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+ try
+ {
+ xdb.parse(fis);
+ Assert.fail("Should fail during parse");
+ }
+ catch (XmpParsingException e)
+ {
+ Assert.assertEquals(ErrorType.NoType, e.getErrorType());
+ }
+ }
+
+ @Test
+ public void testUndefinedStructuredWithDefinedSchema() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedstructuredindefinedschema.xml");
+
+ DomXmpParser xdb = new DomXmpParser();
+ try
+ {
+ xdb.parse(fis);
+ Assert.fail("Should fail during parse");
+ }
+ catch (XmpParsingException e)
+ {
+ Assert.assertEquals(ErrorType.NoValueType, e.getErrorType());
+ }
+ }
+
+ @Test
+ public void testRdfAboutFound() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml");
+ DomXmpParser xdb = new DomXmpParser();
+ XMPMetadata meta = xdb.parse(fis);
+ List<XMPSchema> schemas = meta.getAllSchemas();
+ for (XMPSchema xmpSchema : schemas)
+ {
+ Assert.assertNotNull(xmpSchema.getAboutAttribute());
+ }
+ }
+
+ @Test
+ public void testWihtAttributesAsProperties() throws Exception
+ {
+ InputStream fis = DomXmpParser.class.getResourceAsStream("/validxmp/attr_as_props.xml");
+ DomXmpParser xdb = new DomXmpParser();
+ XMPMetadata meta = xdb.parse(fis);
+
+ AdobePDFSchema pdf = meta.getAdobePDFSchema();
+ Assert.assertEquals("GPL Ghostscript 8.64", pdf.getProducer());
+
+ DublinCoreSchema dc = meta.getDublinCoreSchema();
+ Assert.assertEquals("application/pdf", dc.getFormat());
+
+ XMPBasicSchema basic = meta.getXMPBasicSchema();
+ Assert.assertNotNull(basic.getCreateDate());
- protected ByteArrayOutputStream bos;
-
- protected XmpSerializer serializer;
-
- @Before
- public void init() throws Exception {
- bos = new ByteArrayOutputStream();
- serializer = new XmpSerializer();
- }
-
-
-
- @Test
- public void testStructuredRecursive () throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/org/apache/xmpbox/parser/structured_recursive.xml");
-
- DomXmpParser xdb = new DomXmpParser();
-
- xdb.parse(fis);
-
- }
-
- @Test
- public void testEmptyLi () throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/org/apache/xmpbox/parser/empty_list.xml");
-
- DomXmpParser xdb = new DomXmpParser();
-
- xdb.parse(fis);
-
- }
-
- @Test
- public void testEmptyLi2 () throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/validxmp/emptyli.xml");
-
- DomXmpParser xdb = new DomXmpParser();
-
- XMPMetadata meta = xdb.parse(fis);
- DublinCoreSchema dc = meta.getDublinCoreSchema();
- dc.getCreatorsProperty();
- }
-
- @Test
- public void testGetTitle () throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/validxmp/emptyli.xml");
-
- DomXmpParser xdb = new DomXmpParser();
-
- XMPMetadata meta = xdb.parse(fis);
- DublinCoreSchema dc = meta.getDublinCoreSchema();
- String s = dc.getTitle(null);
- Assert.assertEquals("title value", s);
- }
-
-
- @Test
- public void testAltBagSeq() throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/org/apache/xmpbox/parser/AltBagSeqTest.xml");
-
- DomXmpParser xdb = new DomXmpParser();
-
- xdb.parse(fis);
- // XMPMetadata metadata=xdb.parse(fis);
- // SaveMetadataHelper.serialize(metadata, true, System.out);
- }
-
- @Test
- public void testIsartorStyleWithThumbs() throws Exception {
-
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/org/apache/xmpbox/parser/ThumbisartorStyle.xml");
-
-
- DomXmpParser xdb = new DomXmpParser();
-
- XMPMetadata metadata = xdb.parse(fis);
-
- // <xmpMM:DocumentID>
- Assert.assertEquals("uuid:09C78666-2F91-3A9C-92AF-3691A6D594F7",
- metadata.getXMPMediaManagementSchema().getDocumentID());
-
- // <xmp:CreateDate>
- // <xmp:ModifyDate>
- // <xmp:MetadataDate>
- Assert.assertEquals(DateConverter
- .toCalendar("2008-01-18T16:59:54+01:00"), metadata
- .getXMPBasicSchema().getCreateDate());
- Assert.assertEquals(DateConverter
- .toCalendar("2008-01-18T16:59:54+01:00"), metadata
- .getXMPBasicSchema().getModifyDate());
- Assert.assertEquals(DateConverter
- .toCalendar("2008-01-18T16:59:54+01:00"), metadata
- .getXMPBasicSchema().getMetadataDate());
-
- // THUMBNAILS TEST
- List<ThumbnailType> thumbs = metadata.getXMPBasicSchema()
- .getThumbnailsProperty();
- Assert.assertNotNull(thumbs);
- Assert.assertEquals(2, thumbs.size());
-
- ThumbnailType thumb = thumbs.get(0);
- Assert.assertEquals(new Integer(162), thumb.getHeight());
- Assert.assertEquals(new Integer(216), thumb.getWidth());
- Assert.assertEquals("JPEG", thumb.getFormat());
- Assert.assertEquals("/9j/4AAQSkZJRgABAgEASABIAAD", thumb.getImage());
-
- thumb = thumbs.get(1);
- Assert.assertEquals(new Integer(162), thumb.getHeight());
- Assert.assertEquals(new Integer(216), thumb.getWidth());
- Assert.assertEquals("JPEG", thumb.getFormat());
- Assert.assertEquals("/9j/4AAQSkZJRgABAgEASABIAAD", thumb.getImage());
-
-
- }
-
-
- @Test
- public void testWithNoXPacketStart () throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/invalidxmp/noxpacket.xml");
-
- DomXmpParser xdb = new DomXmpParser();
- try {
- xdb.parse(fis);
- Assert.fail("Should fail during parse");
- } catch (XmpParsingException e) {
- Assert.assertEquals(ErrorType.XpacketBadStart, e.getErrorType());
- }
- }
-
- @Test
- public void testWithNoXPacketEnd () throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/invalidxmp/noxpacketend.xml");
-
- DomXmpParser xdb = new DomXmpParser();
- try {
- xdb.parse(fis);
- Assert.fail("Should fail during parse");
- } catch (XmpParsingException e) {
- Assert.assertEquals(ErrorType.XpacketBadEnd, e.getErrorType());
- }
- }
-
- @Test
- public void testWithNoRDFElement () throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/invalidxmp/noroot.xml");
-
- DomXmpParser xdb = new DomXmpParser();
- try {
- xdb.parse(fis);
- Assert.fail("Should fail during parse");
- } catch (XmpParsingException e) {
- Assert.assertEquals(ErrorType.Format, e.getErrorType());
- }
- }
-
- @Test
- public void testWithTwoRDFElement () throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/invalidxmp/tworoot.xml");
-
- DomXmpParser xdb = new DomXmpParser();
- try {
- xdb.parse(fis);
- Assert.fail("Should fail during parse");
- } catch (XmpParsingException e) {
- Assert.assertEquals(ErrorType.Format, e.getErrorType());
- }
- }
-
- @Test
- public void testWithInvalidRDFElementPrefix () throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/invalidxmp/invalidroot2.xml");
-
- DomXmpParser xdb = new DomXmpParser();
- try {
- xdb.parse(fis);
- Assert.fail("Should fail during parse");
- } catch (XmpParsingException e) {
- Assert.assertEquals(ErrorType.Format, e.getErrorType());
- }
- }
-
- @Test
- public void testWithRDFRootAsText() throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/invalidxmp/invalidroot.xml");
-
- DomXmpParser xdb = new DomXmpParser();
- try {
- xdb.parse(fis);
- Assert.fail("Should fail during parse");
- } catch (XmpParsingException e) {
- Assert.assertEquals(ErrorType.Format, e.getErrorType());
- }
- }
-
- @Test
- public void testUndefinedSchema() throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/invalidxmp/undefinedschema.xml");
-
- DomXmpParser xdb = new DomXmpParser();
- try {
- xdb.parse(fis);
- Assert.fail("Should fail during parse");
- } catch (XmpParsingException e) {
- Assert.assertEquals(ErrorType.NoSchema, e.getErrorType());
- }
- }
-
- @Test
- public void testUndefinedPropertyWithDefinedSchema() throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/invalidxmp/undefinedpropertyindefinedschema.xml");
-
- DomXmpParser xdb = new DomXmpParser();
- try {
- xdb.parse(fis);
- Assert.fail("Should fail during parse");
- } catch (XmpParsingException e) {
- Assert.assertEquals(ErrorType.NoType, e.getErrorType());
- }
- }
-
- @Test
- public void testUndefinedStructuredWithDefinedSchema() throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/invalidxmp/undefinedstructuredindefinedschema.xml");
-
- DomXmpParser xdb = new DomXmpParser();
- try {
- xdb.parse(fis);
- Assert.fail("Should fail during parse");
- } catch (XmpParsingException e) {
- Assert.assertEquals(ErrorType.NoValueType, e.getErrorType());
- }
- }
-
- @Test
- public void testRdfAboutFound() throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/validxmp/emptyli.xml");
- DomXmpParser xdb = new DomXmpParser();
- XMPMetadata meta = xdb.parse(fis);
- List<XMPSchema> schemas = meta.getAllSchemas();
- for (XMPSchema xmpSchema : schemas) {
- Assert.assertNotNull(xmpSchema.getAboutAttribute());
- }
- }
-
- @Test
- public void testWihtAttributesAsProperties() throws Exception {
- InputStream fis = DomXmpParser.class
- .getResourceAsStream("/validxmp/attr_as_props.xml");
- DomXmpParser xdb = new DomXmpParser();
- XMPMetadata meta = xdb.parse(fis);
-
- AdobePDFSchema pdf = meta.getAdobePDFSchema();
- Assert.assertEquals("GPL Ghostscript 8.64", pdf.getProducer());
-
- DublinCoreSchema dc = meta.getDublinCoreSchema();
- Assert.assertEquals("application/pdf", dc.getFormat());
-
- XMPBasicSchema basic = meta.getXMPBasicSchema();
- Assert.assertNotNull(basic.getCreateDate());
-
- }
+ }
-
}
Modified: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/parser/PropMappingTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/parser/PropMappingTest.java?rev=1453395&r1=1453394&r2=1453395&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/parser/PropMappingTest.java (original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/parser/PropMappingTest.java Wed Mar 6 15:57:44 2013
@@ -21,21 +21,19 @@
package org.apache.xmpbox.parser;
-import junit.framework.Assert;
-
import org.apache.xmpbox.type.PropertiesDescription;
import org.junit.Before;
-import org.junit.Test;
-
-public class PropMappingTest {
- protected PropertiesDescription propMap;
- protected String nsURI = "http://www.test.org/PropMap#";
+public class PropMappingTest
+{
- @Before
- public void init() {
- propMap = new PropertiesDescription();
- }
+ protected PropertiesDescription propMap;
+ protected String nsURI = "http://www.test.org/PropMap#";
+ @Before
+ public void init()
+ {
+ propMap = new PropertiesDescription();
+ }
}
Modified: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractSchemaTester.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractSchemaTester.java?rev=1453395&r1=1453394&r2=1453395&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractSchemaTester.java (original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractSchemaTester.java Wed Mar 6 15:57:44 2013
@@ -1,4 +1,4 @@
- /*****************************************************************************
+/*****************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -27,7 +27,6 @@ import java.util.List;
import junit.framework.Assert;
import org.apache.xmpbox.XMPMetadata;
-import org.apache.xmpbox.schema.XMPSchema;
import org.apache.xmpbox.type.AbstractSimpleProperty;
import org.apache.xmpbox.type.ArrayProperty;
import org.apache.xmpbox.type.Cardinality;
@@ -37,164 +36,183 @@ import org.apache.xmpbox.type.Types;
import org.apache.xmpbox.xml.DomXmpParser;
import org.junit.Test;
-public abstract class AbstractSchemaTester {
+public abstract class AbstractSchemaTester
+{
-
- protected XMPMetadata xmp;
-
- protected String fieldName;
-
- protected Types type;
-
- protected Cardinality cardinality;
-
- protected TypeMapping typeMapping = null;
-
- protected DomXmpParser builder;
-
- public void before () throws Exception {
- builder = new DomXmpParser();
- xmp = XMPMetadata.createXMPMetadata();
- typeMapping = xmp.getTypeMapping();
- }
-
- protected abstract XMPSchema getSchema ();
-
- protected Class<? extends XMPSchema> getSchemaClass () {
- return getSchema().getClass();
- }
-
- public AbstractSchemaTester (String fieldName, Types type, Cardinality card) {
- this.fieldName = fieldName;
- this.type = type;
- this.cardinality = card;
- }
-
- @Test
- public void testInitializedToNull() throws Exception {
- // default method
- Assert.assertNull(getSchema().getProperty(fieldName));
- // accessor
- if (cardinality==Cardinality.Simple) {
- String getter = TypeTestingHelper.calculateSimpleGetter(fieldName);
- Method get = getSchemaClass().getMethod(getter, new Class[0]);
- Object result = get.invoke(getSchema(), new Object [0]);
- Assert.assertNull(result);
- } else {
- // arrays
- String getter = TypeTestingHelper.calculateArrayGetter(fieldName);
- Method get = getSchemaClass().getMethod(getter, new Class[0]);
- Object result = get.invoke(getSchema(), new Object [0]);
- Assert.assertNull(result);
- }
-
- }
-
- @Test
- public void testSettingValue() throws Exception {
- if (cardinality!=Cardinality.Simple) return;
- // only test simple properties
- Object value = TypeTestingHelper.getJavaValue(type);
- AbstractSimpleProperty property = getSchema().instanciateSimple(fieldName, value);
- getSchema().addProperty(property);
- String qn = getPropertyQualifiedName(fieldName);
- Assert.assertNotNull(getSchema().getProperty(fieldName));
- // check other properties not modified
- List<Field> fields = TypeTestingHelper.getXmpFields(getSchemaClass());
- for (Field field : fields) {
- // do not check the current name
- String fqn = getPropertyQualifiedName(field.get(null).toString());
- if (!fqn.equals(qn)) {
- Assert.assertNull(getSchema().getProperty(fqn));
- }
- }
- }
-
- @Test
- public void testSettingValueInArray() throws Exception {
- if (cardinality==Cardinality.Simple) return;
- // only test array properties
- Object value = TypeTestingHelper.getJavaValue(type);
- AbstractSimpleProperty property = getSchema().instanciateSimple(fieldName, value);
- switch (cardinality) {
- case Seq:
- getSchema().addUnqualifiedSequenceValue(property.getPropertyName(), property);
- break;
- case Bag:
- getSchema().addBagValue(property.getPropertyName(), property);
- break;
- default :
- throw new Exception ("Unexpected case in test : "+cardinality.name());
- }
- String qn = getPropertyQualifiedName(fieldName);
- Assert.assertNotNull(getSchema().getProperty(fieldName));
- // check other properties not modified
- List<Field> fields = TypeTestingHelper.getXmpFields(getSchemaClass());
- for (Field field : fields) {
- // do not check the current name
- String fqn = getPropertyQualifiedName(field.get(null).toString());
- if (!fqn.equals(qn)) {
- Assert.assertNull(getSchema().getProperty(fqn));
- }
- }
- }
+ protected XMPMetadata xmp;
+
+ protected String fieldName;
+
+ protected Types type;
+
+ protected Cardinality cardinality;
+
+ protected TypeMapping typeMapping = null;
+
+ protected DomXmpParser builder;
+
+ public void before() throws Exception
+ {
+ builder = new DomXmpParser();
+ xmp = XMPMetadata.createXMPMetadata();
+ typeMapping = xmp.getTypeMapping();
+ }
+
+ protected abstract XMPSchema getSchema();
+
+ protected Class<? extends XMPSchema> getSchemaClass()
+ {
+ return getSchema().getClass();
+ }
+
+ public AbstractSchemaTester(String fieldName, Types type, Cardinality card)
+ {
+ this.fieldName = fieldName;
+ this.type = type;
+ this.cardinality = card;
+ }
-
@Test
- public void testPropertySetterSimple () throws Exception {
- if (cardinality!=Cardinality.Simple) return;
- String setter = TypeTestingHelper.calculateSimpleSetter(fieldName)+"Property";
- Object value = TypeTestingHelper.getJavaValue(type);
- AbstractSimpleProperty asp = typeMapping.instanciateSimpleProperty(
- getSchema().getNamespace(),
- getSchema().getPrefix(), fieldName, value, type);
- Method set = getSchemaClass().getMethod(setter, new Class<?>[] {type.getImplementingClass()} );
- set.invoke(getSchema(), new Object [] {asp});
- // check property set
- AbstractSimpleProperty stored = (AbstractSimpleProperty)getSchema().getProperty(fieldName);
- Assert.assertEquals(value, stored.getValue());
- // check getter
- String getter = TypeTestingHelper.calculateSimpleGetter(fieldName)+"Property";
- Method get = getSchemaClass().getMethod(getter, new Class[0]);
- Object result = get.invoke(getSchema(), new Object [0]);
- Assert.assertTrue(type.getImplementingClass().isAssignableFrom(result.getClass()));
- Assert.assertEquals(asp, result);
+ public void testInitializedToNull() throws Exception
+ {
+ // default method
+ Assert.assertNull(getSchema().getProperty(fieldName));
+ // accessor
+ if (cardinality == Cardinality.Simple)
+ {
+ String getter = TypeTestingHelper.calculateSimpleGetter(fieldName);
+ Method get = getSchemaClass().getMethod(getter, new Class[0]);
+ Object result = get.invoke(getSchema(), new Object[0]);
+ Assert.assertNull(result);
+ }
+ else
+ {
+ // arrays
+ String getter = TypeTestingHelper.calculateArrayGetter(fieldName);
+ Method get = getSchemaClass().getMethod(getter, new Class[0]);
+ Object result = get.invoke(getSchema(), new Object[0]);
+ Assert.assertNull(result);
+ }
+
}
@Test
- public void testPropertySetterInArray () throws Exception {
- if (cardinality==Cardinality.Simple) return;
- // add value
- String setter = "add"+TypeTestingHelper.calculateFieldNameForMethod(fieldName);
-// TypeDescription<AbstractSimpleProperty> td = typeMapping.getSimpleDescription(type);
- Object value1 = TypeTestingHelper.getJavaValue(type);
- Method set = getSchemaClass().getMethod(setter, new Class<?>[] {TypeTestingHelper.getJavaType(type)} );
- set.invoke(getSchema(), new Object [] {value1});
- // retrieve complex property
- String getter = TypeTestingHelper.calculateArrayGetter(fieldName)+"Property";
- Method getcp = getSchemaClass().getMethod(getter, new Class[0]);
- Object ocp = getcp.invoke(getSchema(), new Object[0]);
- Assert.assertTrue(ocp instanceof ArrayProperty);
- ArrayProperty cp = (ArrayProperty)ocp;
- // check size is ok (1)
- Assert.assertEquals(1,cp.getContainer().getAllProperties().size());
- // add a new one
- Object value2 = TypeTestingHelper.getJavaValue(type);
- set.invoke(getSchema(), new Object [] {value2});
- Assert.assertEquals(2,cp.getContainer().getAllProperties().size());
- // remove the first
- String remover = "remove"+TypeTestingHelper.calculateFieldNameForMethod(fieldName);
- Method remove = getSchemaClass().getMethod(remover, new Class<?>[] {TypeTestingHelper.getJavaType(type)});
- remove.invoke(getSchema(), value1);
- Assert.assertEquals(1,cp.getContainer().getAllProperties().size());
-
- }
-
-
- protected String getPropertyQualifiedName (String name) {
- StringBuilder sb = new StringBuilder();
- sb.append(getSchema().getPrefix()).append(":").append(name);
- return sb.toString();
- }
-
+ public void testSettingValue() throws Exception
+ {
+ if (cardinality != Cardinality.Simple)
+ return;
+ // only test simple properties
+ Object value = TypeTestingHelper.getJavaValue(type);
+ AbstractSimpleProperty property = getSchema().instanciateSimple(fieldName, value);
+ getSchema().addProperty(property);
+ String qn = getPropertyQualifiedName(fieldName);
+ Assert.assertNotNull(getSchema().getProperty(fieldName));
+ // check other properties not modified
+ List<Field> fields = TypeTestingHelper.getXmpFields(getSchemaClass());
+ for (Field field : fields)
+ {
+ // do not check the current name
+ String fqn = getPropertyQualifiedName(field.get(null).toString());
+ if (!fqn.equals(qn))
+ {
+ Assert.assertNull(getSchema().getProperty(fqn));
+ }
+ }
+ }
+
+ @Test
+ public void testSettingValueInArray() throws Exception
+ {
+ if (cardinality == Cardinality.Simple)
+ return;
+ // only test array properties
+ Object value = TypeTestingHelper.getJavaValue(type);
+ AbstractSimpleProperty property = getSchema().instanciateSimple(fieldName, value);
+ switch (cardinality)
+ {
+ case Seq:
+ getSchema().addUnqualifiedSequenceValue(property.getPropertyName(), property);
+ break;
+ case Bag:
+ getSchema().addBagValue(property.getPropertyName(), property);
+ break;
+ default:
+ throw new Exception("Unexpected case in test : " + cardinality.name());
+ }
+ String qn = getPropertyQualifiedName(fieldName);
+ Assert.assertNotNull(getSchema().getProperty(fieldName));
+ // check other properties not modified
+ List<Field> fields = TypeTestingHelper.getXmpFields(getSchemaClass());
+ for (Field field : fields)
+ {
+ // do not check the current name
+ String fqn = getPropertyQualifiedName(field.get(null).toString());
+ if (!fqn.equals(qn))
+ {
+ Assert.assertNull(getSchema().getProperty(fqn));
+ }
+ }
+ }
+
+ @Test
+ public void testPropertySetterSimple() throws Exception
+ {
+ if (cardinality != Cardinality.Simple)
+ return;
+ String setter = TypeTestingHelper.calculateSimpleSetter(fieldName) + "Property";
+ Object value = TypeTestingHelper.getJavaValue(type);
+ AbstractSimpleProperty asp = typeMapping.instanciateSimpleProperty(getSchema().getNamespace(), getSchema()
+ .getPrefix(), fieldName, value, type);
+ Method set = getSchemaClass().getMethod(setter, new Class<?>[] { type.getImplementingClass() });
+ set.invoke(getSchema(), new Object[] { asp });
+ // check property set
+ AbstractSimpleProperty stored = (AbstractSimpleProperty) getSchema().getProperty(fieldName);
+ Assert.assertEquals(value, stored.getValue());
+ // check getter
+ String getter = TypeTestingHelper.calculateSimpleGetter(fieldName) + "Property";
+ Method get = getSchemaClass().getMethod(getter, new Class[0]);
+ Object result = get.invoke(getSchema(), new Object[0]);
+ Assert.assertTrue(type.getImplementingClass().isAssignableFrom(result.getClass()));
+ Assert.assertEquals(asp, result);
+ }
+
+ @Test
+ public void testPropertySetterInArray() throws Exception
+ {
+ if (cardinality == Cardinality.Simple)
+ return;
+ // add value
+ String setter = "add" + TypeTestingHelper.calculateFieldNameForMethod(fieldName);
+ // TypeDescription<AbstractSimpleProperty> td =
+ // typeMapping.getSimpleDescription(type);
+ Object value1 = TypeTestingHelper.getJavaValue(type);
+ Method set = getSchemaClass().getMethod(setter, new Class<?>[] { TypeTestingHelper.getJavaType(type) });
+ set.invoke(getSchema(), new Object[] { value1 });
+ // retrieve complex property
+ String getter = TypeTestingHelper.calculateArrayGetter(fieldName) + "Property";
+ Method getcp = getSchemaClass().getMethod(getter, new Class[0]);
+ Object ocp = getcp.invoke(getSchema(), new Object[0]);
+ Assert.assertTrue(ocp instanceof ArrayProperty);
+ ArrayProperty cp = (ArrayProperty) ocp;
+ // check size is ok (1)
+ Assert.assertEquals(1, cp.getContainer().getAllProperties().size());
+ // add a new one
+ Object value2 = TypeTestingHelper.getJavaValue(type);
+ set.invoke(getSchema(), new Object[] { value2 });
+ Assert.assertEquals(2, cp.getContainer().getAllProperties().size());
+ // remove the first
+ String remover = "remove" + TypeTestingHelper.calculateFieldNameForMethod(fieldName);
+ Method remove = getSchemaClass().getMethod(remover, new Class<?>[] { TypeTestingHelper.getJavaType(type) });
+ remove.invoke(getSchema(), value1);
+ Assert.assertEquals(1, cp.getContainer().getAllProperties().size());
+
+ }
+
+ protected String getPropertyQualifiedName(String name)
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getSchema().getPrefix()).append(":").append(name);
+ return sb.toString();
+ }
+
}