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/09/14 15:11:32 UTC

svn commit: r1384755 - in /pdfbox/branches/xmpbox-refactoring/xmpbox/src: main/java/org/apache/padaf/xmpbox/ main/java/org/apache/padaf/xmpbox/parser/ main/java/org/apache/padaf/xmpbox/schema/ main/java/org/apache/padaf/xmpbox/type/ test/java/org/apach...

Author: gbailleul
Date: Fri Sep 14 13:11:31 2012
New Revision: 1384755

URL: http://svn.apache.org/viewvc?rev=1384755&view=rev
Log:
PDFBOX-1343: use annotations to define namespace and prefered prefix in structured types and schema, remove reflection to retrieve these values

Added:
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/StructuredType.java
Modified:
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/XMPMetadata.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/XMPDocumentBuilder.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/AdobePDFSchema.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/DublinCoreSchema.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PDFAExtensionSchema.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PDFAIdentificationSchema.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PhotoshopSchema.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPBasicJobTicketSchema.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPBasicSchema.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPMediaManagementSchema.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPRightsManagementSchema.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPSchema.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPSchemaFactory.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractComplexProperty.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractField.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractSimpleProperty.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractStructuredType.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ArrayProperty.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/JobType.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/LayerType.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFAFieldType.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFAPropertyType.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFASchemaType.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFATypeType.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ResourceEventType.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ResourceRefType.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ThumbnailType.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/TypeMapping.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/VersionType.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/BirthCertificateSchemaWithXMLDescriptions.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/DoubleSameTypeSchemaTest.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/XMPMetaDataTest.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/schema/BasicJobTicketSchemaTest.java
    pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/schema/XMPSchemaTest.java

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/XMPMetadata.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/XMPMetadata.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/XMPMetadata.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/XMPMetadata.java Fri Sep 14 13:11:31 2012
@@ -37,6 +37,7 @@ import org.apache.padaf.xmpbox.schema.XM
 import org.apache.padaf.xmpbox.schema.XMPRightsManagementSchema;
 import org.apache.padaf.xmpbox.schema.XMPSchema;
 import org.apache.padaf.xmpbox.schema.XmpSchemaException;
+import org.apache.padaf.xmpbox.type.StructuredType;
 import org.apache.padaf.xmpbox.type.TypeMapping;
 
 /**
@@ -211,6 +212,11 @@ public class XMPMetadata {
 		return null;
 	}
 
+	public XMPSchema getSchema (Class<? extends XMPSchema> clz) {
+		StructuredType st = clz.getAnnotation(StructuredType.class);
+		return getSchema(st.namespace());
+	}
+	
 	public void clearSchemas () {
 		schemas.clear();
 	}
@@ -249,7 +255,7 @@ public class XMPMetadata {
 	 * @return The schema added in order to work on it
 	 */
 	public XMPSchema createAndAddDefaultSchema(String nsPrefix, String nsURI) {
-		XMPSchema schem = new XMPSchema(this, nsPrefix, nsURI);
+		XMPSchema schem = new XMPSchema(this, nsURI,nsPrefix);
 		schem.setAboutAsSimple("");
 		addSchema(schem);
 		return schem;
@@ -307,7 +313,7 @@ public class XMPMetadata {
 	 * @return The PDFAExtension schema or null if not declared
 	 */
 	public PDFAExtensionSchema getPDFExtensionSchema() {
-		return (PDFAExtensionSchema) getSchema(PDFAExtensionSchema.PDFAEXTENSIONURI);
+		return (PDFAExtensionSchema) getSchema(PDFAExtensionSchema.class);
 	}
 
 	/**
@@ -329,7 +335,7 @@ public class XMPMetadata {
 	 * @return The PDFAIdentificationSchema schema or null if not declared
 	 */
 	public PDFAIdentificationSchema getPDFIdentificationSchema() {
-		return (PDFAIdentificationSchema) getSchema(PDFAIdentificationSchema.IDURI);
+		return (PDFAIdentificationSchema) getSchema(PDFAIdentificationSchema.class);
 	}
 
 	/**
@@ -365,7 +371,7 @@ public class XMPMetadata {
 	 * @return The DublinCoreSchema schema or null if not declared
 	 */
 	public DublinCoreSchema getDublinCoreSchema() {
-		return (DublinCoreSchema) getSchema(DublinCoreSchema.DCURI);
+		return (DublinCoreSchema) getSchema(DublinCoreSchema.class);
 	}
 
 	/**
@@ -374,7 +380,7 @@ public class XMPMetadata {
 	 * @return The XMPBasicJobTicketSchema schema or null if not declared
 	 */
 	public XMPBasicJobTicketSchema getBasicJobTicketSchema() {
-		return (XMPBasicJobTicketSchema) getSchema(XMPBasicJobTicketSchema.JOB_TICKET_URI);
+		return (XMPBasicJobTicketSchema) getSchema(XMPBasicJobTicketSchema.class);
 	}
 
 
@@ -384,7 +390,7 @@ public class XMPMetadata {
 	 * @return The XMPRightsManagementSchema schema or null if not declared
 	 */
 	public XMPRightsManagementSchema getXMPRightsManagementSchema() {
-		return (XMPRightsManagementSchema) getSchema(XMPRightsManagementSchema.XMPRIGHTSURI);
+		return (XMPRightsManagementSchema) getSchema(XMPRightsManagementSchema.class);
 	}
 
 	/**
@@ -415,7 +421,7 @@ public class XMPMetadata {
 	 * @return The XMPBasicSchema schema or null if not declared
 	 */
 	public XMPBasicSchema getXMPBasicSchema() {
-		return (XMPBasicSchema) getSchema(XMPBasicSchema.XMPBASICURI);
+		return (XMPBasicSchema) getSchema(XMPBasicSchema.class);
 	}
 
 	/**
@@ -449,7 +455,7 @@ public class XMPMetadata {
 	 * @return The XMPMediaManagementSchema schema or null if not declared
 	 */
 	public XMPMediaManagementSchema getXMPMediaManagementSchema() {
-		return (XMPMediaManagementSchema) getSchema(XMPMediaManagementSchema.XMPMMURI);
+		return (XMPMediaManagementSchema) getSchema(XMPMediaManagementSchema.class);
 	}
 
 	/**
@@ -471,7 +477,7 @@ public class XMPMetadata {
 	 * @return The AdobePDFSchema schema or null if not declared
 	 */
 	public AdobePDFSchema getAdobePDFSchema() {
-		return (AdobePDFSchema) getSchema(AdobePDFSchema.PDFURI);
+		return (AdobePDFSchema) getSchema(AdobePDFSchema.class);
 	}
 
 	/**

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/XMPDocumentBuilder.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/XMPDocumentBuilder.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/XMPDocumentBuilder.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/parser/XMPDocumentBuilder.java Fri Sep 14 13:11:31 2012
@@ -56,6 +56,7 @@ import org.apache.padaf.xmpbox.type.PDFA
 import org.apache.padaf.xmpbox.type.PDFAPropertyType;
 import org.apache.padaf.xmpbox.type.PDFASchemaType;
 import org.apache.padaf.xmpbox.type.PDFATypeType;
+import org.apache.padaf.xmpbox.type.StructuredType;
 import org.apache.padaf.xmpbox.type.TypeDescription;
 import org.apache.padaf.xmpbox.type.TypeMapping;
 import org.apache.pdfbox.io.IOUtils;
@@ -191,12 +192,13 @@ public class XMPDocumentBuilder {
 	private void populateSchemaMapping (XMPMetadata meta) 
 			throws XmpRequiredPropertyException,XmpUnknownValueTypeException,XmpUnexpectedNamespacePrefixException {
 		List<XMPSchema> schems = meta.getAllSchemas();
+		StructuredType stPdfaExt = PDFAExtensionSchema.class.getAnnotation(StructuredType.class);
 		for (XMPSchema xmpSchema : schems) {
-			if (xmpSchema.getNamespace().equals(PDFAExtensionSchema.PDFAEXTENSIONURI)) {
+			if (xmpSchema.getNamespace().equals(stPdfaExt.namespace())) {
 				// ensure the prefix is the preferred one (cannot use other definition)
-				if (!xmpSchema.getPrefix().equals(PDFAExtensionSchema.PREFERED_PREFIX)) {
+				if (!xmpSchema.getPrefix().equals(stPdfaExt.preferedPrefix())) {
 					throw new XmpUnexpectedNamespacePrefixException("Found invalid prefix for PDF/A extension, found '"+
-							xmpSchema.getPrefix()+"', should be '"+PDFAExtensionSchema.PREFERED_PREFIX+"'"
+							xmpSchema.getPrefix()+"', should be '"+stPdfaExt.preferedPrefix()+"'"
 							);
 				}
 				// create schema and types
@@ -206,7 +208,7 @@ public class XMPDocumentBuilder {
 					if (af instanceof PDFASchemaType) {
 						PDFASchemaType st = (PDFASchemaType)af;
 						String namespaceUri = st.getNamespaceURI();
-						String prefix = st.getPrefix();
+						String prefix = st.getPrefixValue();
 						ArrayProperty properties = st.getProperty();
 						ArrayProperty valueTypes = st.getValueType();
 						XMPSchemaFactory xsf = meta.getTypeMapping().getSchemaFactory(namespaceUri);
@@ -223,7 +225,7 @@ public class XMPDocumentBuilder {
 									PDFATypeType type = (PDFATypeType)af2;
 									String ttype= type.getType();
 									String tns = type.getNamespaceURI();
-									String tprefix = type.getPrefix();
+									String tprefix = type.getPrefixValue();
 									String tdescription = type.getDescription();
 									ArrayProperty fields = type.getFields();
 									if (ttype==null || tns==null || tprefix==null || tdescription==null) {
@@ -852,8 +854,9 @@ public class XMPDocumentBuilder {
 //		NSMapping nsMap = metadata.getNsMapping();
 		TypeMapping typeMapping = metadata.getTypeMapping();
 		QName propertyName = reader.get().getName();
+		StructuredType stPdfaExt = PDFAExtensionSchema.class.getAnnotation(StructuredType.class);
 		if (parsingExtension) {
-			if (!propertyName.getNamespaceURI().equals(PDFAExtensionSchema.PDFAEXTENSIONURI)) {
+			if (!propertyName.getNamespaceURI().equals(stPdfaExt.namespace())) {
 				// this schema won't be parsed as extension, skip
 				// XXX skip to end of element
 				skipCurrentElement();

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/AdobePDFSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/AdobePDFSchema.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/AdobePDFSchema.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/AdobePDFSchema.java Fri Sep 14 13:11:31 2012
@@ -24,6 +24,7 @@ package org.apache.padaf.xmpbox.schema;
 import org.apache.padaf.xmpbox.XMPMetadata;
 import org.apache.padaf.xmpbox.type.AbstractField;
 import org.apache.padaf.xmpbox.type.PropertyType;
+import org.apache.padaf.xmpbox.type.StructuredType;
 import org.apache.padaf.xmpbox.type.TextType;
 
 /**
@@ -32,12 +33,9 @@ import org.apache.padaf.xmpbox.type.Text
  * @author a183132
  * 
  */
+@StructuredType(preferedPrefix="pdf",namespace="http://ns.adobe.com/pdf/1.3/")
 public class AdobePDFSchema extends XMPSchema {
 
-	public static final String PREFERED_PREFIX = "pdf";
-
-	public static final String PDFURI = "http://ns.adobe.com/pdf/1.3/";
-
 	@PropertyType(propertyType = "Text")
 	public static final String KEYWORDS = "Keywords";
 
@@ -54,7 +52,7 @@ public class AdobePDFSchema extends XMPS
 	 *            The metadata to attach this schema
 	 */
 	public AdobePDFSchema(XMPMetadata metadata) {
-		super(metadata, PREFERED_PREFIX, PDFURI);
+		super(metadata);
 	}
 
 	/**
@@ -66,7 +64,7 @@ public class AdobePDFSchema extends XMPS
 	 *            The prefix to assign
 	 */
 	public AdobePDFSchema(XMPMetadata metadata, String ownPrefix) {
-		super(metadata, ownPrefix, PDFURI);
+		super(metadata, ownPrefix);
 	}
 
 	/**

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/DublinCoreSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/DublinCoreSchema.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/DublinCoreSchema.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/DublinCoreSchema.java Fri Sep 14 13:11:31 2012
@@ -28,6 +28,7 @@ import org.apache.padaf.xmpbox.XMPMetada
 import org.apache.padaf.xmpbox.type.ArrayProperty;
 import org.apache.padaf.xmpbox.type.MIMEType;
 import org.apache.padaf.xmpbox.type.PropertyType;
+import org.apache.padaf.xmpbox.type.StructuredType;
 import org.apache.padaf.xmpbox.type.TextType;
 
 
@@ -37,12 +38,9 @@ import org.apache.padaf.xmpbox.type.Text
  * @author a183132
  * 
  */
+@StructuredType(preferedPrefix="dc",namespace="http://purl.org/dc/elements/1.1/")
 public class DublinCoreSchema extends XMPSchema {
 
-	public static final String PREFERED_PREFIX = "dc";
-
-	public static final String DCURI = "http://purl.org/dc/elements/1.1/";
-
 	@PropertyType(propertyType = "bag Text")
 	public static final String CONTRIBUTOR = "contributor";
 
@@ -95,7 +93,7 @@ public class DublinCoreSchema extends XM
 	 *            The metadata to attach this schema
 	 */
 	public DublinCoreSchema(XMPMetadata metadata) {
-		super(metadata, PREFERED_PREFIX, DCURI);
+		super(metadata);
 	}
 
 	/**
@@ -107,7 +105,7 @@ public class DublinCoreSchema extends XM
 	 *            The prefix to assign
 	 */
 	public DublinCoreSchema(XMPMetadata metadata, String ownPrefix) {
-		super(metadata, ownPrefix, DCURI);
+		super(metadata, ownPrefix);
 	}
 
 	/**

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PDFAExtensionSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PDFAExtensionSchema.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PDFAExtensionSchema.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PDFAExtensionSchema.java Fri Sep 14 13:11:31 2012
@@ -24,6 +24,7 @@ package org.apache.padaf.xmpbox.schema;
 import org.apache.padaf.xmpbox.XMPMetadata;
 import org.apache.padaf.xmpbox.type.ArrayProperty;
 import org.apache.padaf.xmpbox.type.PropertyType;
+import org.apache.padaf.xmpbox.type.StructuredType;
 
 /**
  * Representation of a PDF/A Extension schema description schema
@@ -31,12 +32,9 @@ import org.apache.padaf.xmpbox.type.Prop
  * @author a183132
  * 
  */
+@StructuredType(preferedPrefix="pdfaExtension",namespace="http://www.aiim.org/pdfa/ns/extension/")
 public class PDFAExtensionSchema extends XMPSchema {
 
-    public static final String PREFERED_PREFIX = "pdfaExtension";
-    public static final String PDFAEXTENSIONURI = "http://www.aiim.org/pdfa/ns/extension/";
-
-
     @PropertyType(propertyType = "bag PDFASchema")
     public static final String SCHEMAS = "schemas";
 
@@ -49,31 +47,13 @@ public class PDFAExtensionSchema extends
      *            The metadata to attach this schema XMPMetadata
      */
     public PDFAExtensionSchema(XMPMetadata metadata) {
-        this(metadata,PREFERED_PREFIX);
+        super(metadata);
     }
 
     public PDFAExtensionSchema(XMPMetadata metadata, String prefix) {
-        super(metadata, prefix, PDFAEXTENSIONURI);
-    }
-
-    /**
-     * Give the prefix of the PDF/A Extension schema
-     * 
-     * @return prefix value
-     */
-    public String getPrefixValue() {
-        return PREFERED_PREFIX;
-
+        super(metadata, prefix);
     }
 
-    /**
-     * Give the namespace URI of the PDF/A Extension schema
-     * 
-     * @return namespace URI
-     */
-    public String getNamespaceValue() {
-        return PDFAEXTENSIONURI;
-    }
 
 	/**
 	 * 

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PDFAIdentificationSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PDFAIdentificationSchema.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PDFAIdentificationSchema.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PDFAIdentificationSchema.java Fri Sep 14 13:11:31 2012
@@ -27,6 +27,7 @@ import org.apache.padaf.xmpbox.type.Attr
 import org.apache.padaf.xmpbox.type.BadFieldValueException;
 import org.apache.padaf.xmpbox.type.IntegerType;
 import org.apache.padaf.xmpbox.type.PropertyType;
+import org.apache.padaf.xmpbox.type.StructuredType;
 import org.apache.padaf.xmpbox.type.TextType;
 
 
@@ -36,12 +37,9 @@ import org.apache.padaf.xmpbox.type.Text
  * @author a183132
  * 
  */
+@StructuredType(preferedPrefix="pdfaid",namespace="http://www.aiim.org/pdfa/ns/id/")
 public class PDFAIdentificationSchema extends XMPSchema {
 
-	public static final String PREFERED_PREFIX = "pdfaid";
-
-	public static final String IDURI = "http://www.aiim.org/pdfa/ns/id/";
-
 	@PropertyType(propertyType = "Integer")
 	public static final String PART = "part";
 
@@ -65,11 +63,11 @@ public class PDFAIdentificationSchema ex
 	 *            The metadata to attach this schema
 	 */
 	public PDFAIdentificationSchema(XMPMetadata metadata) {
-		super(metadata, PREFERED_PREFIX, IDURI);
+		super(metadata);
 	}
 
 	public PDFAIdentificationSchema(XMPMetadata metadata, String prefix) {
-		super(metadata, prefix, IDURI);
+		super(metadata, prefix);
 	}
 
 	/**

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PhotoshopSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PhotoshopSchema.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PhotoshopSchema.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/PhotoshopSchema.java Fri Sep 14 13:11:31 2012
@@ -33,17 +33,19 @@ import org.apache.padaf.xmpbox.type.Inte
 import org.apache.padaf.xmpbox.type.LayerType;
 import org.apache.padaf.xmpbox.type.ProperNameType;
 import org.apache.padaf.xmpbox.type.PropertyType;
+import org.apache.padaf.xmpbox.type.StructuredType;
 import org.apache.padaf.xmpbox.type.TextType;
 import org.apache.padaf.xmpbox.type.URIType;
 
+@StructuredType(preferedPrefix="photoshop",namespace="http://ns.adobe.com/photoshop/1.0/")
 public class PhotoshopSchema extends XMPSchema {
 
 	public PhotoshopSchema(XMPMetadata metadata) {
-		super(metadata, PREFERED_PREFIX, PHOTOSHOPURI);
+		super(metadata);
 	}
 
 	public PhotoshopSchema(XMPMetadata metadata, String ownPrefix) {
-		super(metadata, ownPrefix, PHOTOSHOPURI);
+		super(metadata, ownPrefix);
 	}
 				
 	public static final String PREFERED_PREFIX = "photoshop";

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPBasicJobTicketSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPBasicJobTicketSchema.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPBasicJobTicketSchema.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPBasicJobTicketSchema.java Fri Sep 14 13:11:31 2012
@@ -30,13 +30,11 @@ import org.apache.padaf.xmpbox.type.Arra
 import org.apache.padaf.xmpbox.type.BadFieldValueException;
 import org.apache.padaf.xmpbox.type.JobType;
 import org.apache.padaf.xmpbox.type.PropertyType;
+import org.apache.padaf.xmpbox.type.StructuredType;
 
+@StructuredType(preferedPrefix="xmpBJ",namespace="http://ns.adobe.com/xap/1.0/bj/")
 public class XMPBasicJobTicketSchema extends XMPSchema {
 
-    public static final String PREFERED_PREFIX = "xmpBJ";
-
-    public static final String JOB_TICKET_URI = "http://ns.adobe.com/xap/1.0/bj/"; 
-
     @PropertyType(propertyType = "bag Job")
     public static final String JOB_REF = "JobRef";
 
@@ -44,16 +42,18 @@ public class XMPBasicJobTicketSchema ext
 
 
     public XMPBasicJobTicketSchema(XMPMetadata metadata) {
-        this(metadata, PREFERED_PREFIX);
+        this(metadata,null);
     }
 
     public XMPBasicJobTicketSchema(XMPMetadata metadata, String ownPrefix) {
-        super(metadata, ownPrefix, JOB_TICKET_URI);
-        addNamespace(JobType.ELEMENT_NS, JobType.PREFERED_PREFIX);
+        super(metadata, ownPrefix);
+        // TODO why add this ns ?
+        StructuredType st = JobType.class.getAnnotation(StructuredType.class);
+        addNamespace(st.namespace(), st.preferedPrefix());
     }
 
     public void addJob(String id , String name, String url) {
-    	addJob(id,name,url,JobType.PREFERED_PREFIX);
+    	addJob(id,name,url,null);
     }
     
     public void addJob(String id , String name, String url, String fieldPrefix) {

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPBasicSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPBasicSchema.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPBasicSchema.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPBasicSchema.java Fri Sep 14 13:11:31 2012
@@ -33,6 +33,7 @@ import org.apache.padaf.xmpbox.type.BadF
 import org.apache.padaf.xmpbox.type.DateType;
 import org.apache.padaf.xmpbox.type.IntegerType;
 import org.apache.padaf.xmpbox.type.PropertyType;
+import org.apache.padaf.xmpbox.type.StructuredType;
 import org.apache.padaf.xmpbox.type.TextType;
 import org.apache.padaf.xmpbox.type.ThumbnailType;
 import org.apache.padaf.xmpbox.type.URLType;
@@ -44,12 +45,9 @@ import org.apache.padaf.xmpbox.type.URLT
  * @author a183132
  * 
  */
+@StructuredType(preferedPrefix="xmp",namespace="http://ns.adobe.com/xap/1.0/")
 public class XMPBasicSchema extends XMPSchema {
 
-	public static final String PREFERED_PREFIX = "xmp";
-
-	public static final String XMPBASICURI = "http://ns.adobe.com/xap/1.0/";
-
 	@PropertyType(propertyType = "bag Xpath")
 	public static final String ADVISORY = "Advisory";
 
@@ -92,7 +90,7 @@ public class XMPBasicSchema extends XMPS
 	 *            The metadata to attach this schema
 	 */
 	public XMPBasicSchema(XMPMetadata metadata) {
-		super(metadata, PREFERED_PREFIX, XMPBASICURI);
+		super(metadata);
 
 	}
 
@@ -105,7 +103,7 @@ public class XMPBasicSchema extends XMPS
 	 *            The prefix to assign
 	 */
 	public XMPBasicSchema(XMPMetadata metadata, String ownPrefix) {
-		super(metadata, ownPrefix, XMPBASICURI);
+		super(metadata, ownPrefix);
 
 	}
 

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPMediaManagementSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPMediaManagementSchema.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPMediaManagementSchema.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPMediaManagementSchema.java Fri Sep 14 13:11:31 2012
@@ -29,6 +29,7 @@ import org.apache.padaf.xmpbox.type.Arra
 import org.apache.padaf.xmpbox.type.PropertyType;
 import org.apache.padaf.xmpbox.type.RenditionClassType;
 import org.apache.padaf.xmpbox.type.ResourceRefType;
+import org.apache.padaf.xmpbox.type.StructuredType;
 import org.apache.padaf.xmpbox.type.TextType;
 import org.apache.padaf.xmpbox.type.URIType;
 import org.apache.padaf.xmpbox.type.VersionType;
@@ -40,12 +41,9 @@ import org.apache.padaf.xmpbox.type.Vers
  * @author gbailleul
  * 
  */
+@StructuredType(preferedPrefix="xmpMM",namespace="http://ns.adobe.com/xap/1.0/mm/")
 public class XMPMediaManagementSchema extends XMPSchema {
 
-	public static final String PREFERED_PREFIX = "xmpMM";
-
-	public static final String XMPMMURI = "http://ns.adobe.com/xap/1.0/mm/";
-
 	/**
 	 * Constructor of XMPMediaManagement Schema with preferred prefix
 	 * 
@@ -53,7 +51,7 @@ public class XMPMediaManagementSchema ex
 	 *            The metadata to attach this schema
 	 */
 	public XMPMediaManagementSchema(XMPMetadata metadata) {
-		super(metadata, PREFERED_PREFIX, XMPMMURI);
+		super(metadata);
 
 	}
 
@@ -66,7 +64,7 @@ public class XMPMediaManagementSchema ex
 	 *            The prefix to assign
 	 */
 	public XMPMediaManagementSchema(XMPMetadata metadata, String ownPrefix) {
-		super(metadata, ownPrefix, XMPMMURI);
+		super(metadata, ownPrefix);
 
 	}
 

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPRightsManagementSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPRightsManagementSchema.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPRightsManagementSchema.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPRightsManagementSchema.java Fri Sep 14 13:11:31 2012
@@ -27,6 +27,7 @@ import org.apache.padaf.xmpbox.XMPMetada
 import org.apache.padaf.xmpbox.type.ArrayProperty;
 import org.apache.padaf.xmpbox.type.BooleanType;
 import org.apache.padaf.xmpbox.type.PropertyType;
+import org.apache.padaf.xmpbox.type.StructuredType;
 import org.apache.padaf.xmpbox.type.TextType;
 import org.apache.padaf.xmpbox.type.URLType;
 
@@ -37,10 +38,8 @@ import org.apache.padaf.xmpbox.type.URLT
  * @author a183132
  * 
  */
+@StructuredType(preferedPrefix="xmpRights",namespace="http://ns.adobe.com/xap/1.0/rights/")
 public class XMPRightsManagementSchema extends XMPSchema {
-	public static final String PREFERED_PREFIX = "xmpRights";
-
-	public static final String XMPRIGHTSURI = "http://ns.adobe.com/xap/1.0/rights/";
 
 	@PropertyType(propertyType = "URL")
 	public static final String CERTIFICATE = "Certificate";
@@ -64,7 +63,7 @@ public class XMPRightsManagementSchema e
 	 *            The metadata to attach this schema
 	 */
 	public XMPRightsManagementSchema(XMPMetadata metadata) {
-		super(metadata, PREFERED_PREFIX, XMPRIGHTSURI);
+		super(metadata);
 	}
 
 	/**
@@ -76,7 +75,7 @@ public class XMPRightsManagementSchema e
 	 *            The prefix to assign
 	 */
 	public XMPRightsManagementSchema(XMPMetadata metadata, String ownPrefix) {
-		super(metadata, ownPrefix, XMPRIGHTSURI);
+		super(metadata, ownPrefix);
 	}
 
 	/**

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPSchema.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPSchema.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPSchema.java Fri Sep 14 13:11:31 2012
@@ -66,11 +66,20 @@ public class XMPSchema extends AbstractS
 	 *            The URI of the namespace, ie "http://ns.adobe.com/pdf/1.3/"
 	 * 
 	 */
-	public XMPSchema(XMPMetadata metadata, String namespaceName, String namespaceURI) {
-		super(metadata, namespaceURI, namespaceName);
-		addNamespace(namespaceURI, namespaceName);
+	public XMPSchema(XMPMetadata metadata, String namespaceURI, String prefix) {
+		super(metadata, namespaceURI, prefix);
+		addNamespace(getNamespace(), getPrefix());
 	}
 
+	public XMPSchema(XMPMetadata metadata) {
+		this(metadata, null, null);
+	}
+
+	public XMPSchema(XMPMetadata metadata, String prefix) {
+		this(metadata, null, prefix);
+	}
+
+	
 	/**
 	 * Retrieve a generic simple type property
 	 * 

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPSchemaFactory.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPSchemaFactory.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPSchemaFactory.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/schema/XMPSchemaFactory.java Fri Sep 14 13:11:31 2012
@@ -121,7 +121,7 @@ public class XMPSchemaFactory {
 
 		if (schemaClass == XMPSchema.class) {
 			argsClass = new Class[] { XMPMetadata.class, String.class, String.class };
-			schemaArgs = new Object[] { metadata, nsName, namespace };
+			schemaArgs = new Object[] { metadata, namespace, nsName };
 		} else if (prefix != null && !"".equals(prefix)) {
 			argsClass = new Class[] { XMPMetadata.class, String.class };
 			schemaArgs = new Object[] { metadata, prefix };

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractComplexProperty.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractComplexProperty.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractComplexProperty.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractComplexProperty.java Fri Sep 14 13:11:31 2012
@@ -34,9 +34,8 @@ public abstract class AbstractComplexPro
 	private Map<String,String> namespaceToPrefix;
 
 	
-	public AbstractComplexProperty(XMPMetadata metadata, String namespaceURI,
-			String prefix, String propertyName) {
-		super(metadata, namespaceURI, prefix, propertyName);
+	public AbstractComplexProperty(XMPMetadata metadata, String propertyName) {
+		super(metadata, propertyName);
 		container = new ComplexPropertyContainer();
 		this.namespaceToPrefix = new HashMap<String, String>();
 	}

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractField.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractField.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractField.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractField.java Fri Sep 14 13:11:31 2012
@@ -41,9 +41,9 @@ public abstract class AbstractField {
 
 	private XMPMetadata metadata;
 
-	private String namespaceURI;
+//	private String namespaceURI;
 	
-	private String prefix;
+//	private String prefix;
 	
 	private String propertyName;
 	
@@ -61,34 +61,13 @@ public abstract class AbstractField {
 	 * @param propertyName
 	 *            the local name to set for this field
 	 */
-	public AbstractField(XMPMetadata metadata, String namespaceURI,
-			String prefix, String propertyName) {
-		this.prefix = prefix;
+	public AbstractField(XMPMetadata metadata, String propertyName) {
 		this.metadata = metadata;
-		this.namespaceURI = namespaceURI;
 		this.propertyName = propertyName;
 		attributes = new HashMap<String, Attribute>();
 	}
 
 	/**
-	 * Get the namespace URI of this entity
-	 * 
-	 * @return the namespace URI
-	 */
-	public final String getNamespace() {
-		return namespaceURI;
-	}
-
-	/**
-	 * Get the prefix of this entity
-	 * 
-	 * @return the prefix specified
-	 */
-	public String getPrefix() {
-		return prefix;
-	}
-
-	/**
 	 * Get the propertyName (or localName)
 	 * 
 	 * @return the local Name
@@ -167,5 +146,14 @@ public abstract class AbstractField {
 		return metadata;
 	}
 
+	public abstract String getNamespace();
+
+	/**
+	 * Get the prefix of this entity
+	 * 
+	 * @return the prefix specified
+	 */
+	public abstract String getPrefix();
+
 	
 }

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractSimpleProperty.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractSimpleProperty.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractSimpleProperty.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractSimpleProperty.java Fri Sep 14 13:11:31 2012
@@ -31,6 +31,11 @@ import org.apache.padaf.xmpbox.XMPMetada
  */
 public abstract class AbstractSimpleProperty extends AbstractField {
 
+	
+	private String namespace;
+	
+	private String prefix;
+
 	/**
 	 * Property specific type constructor (namespaceURI is given)
 	 * 
@@ -47,8 +52,10 @@ public abstract class AbstractSimpleProp
 	 */
 	public AbstractSimpleProperty(XMPMetadata metadata, String namespaceURI,
 			String prefix, String propertyName, Object value) {
-		super(metadata, namespaceURI, prefix, propertyName);
+		super(metadata, propertyName);
 		setValue(value);
+		this.namespace = namespaceURI;
+		this.prefix = prefix;
 
 	}
 
@@ -77,5 +84,23 @@ public abstract class AbstractSimpleProp
 		sb.append(getStringValue()).append("]");
 		return sb.toString();
 	}
-	
+
+	/**
+	 * Get the namespace URI of this entity
+	 * 
+	 * @return the namespace URI
+	 */
+	public final String getNamespace() {
+		return namespace;
+	}
+
+	/**
+	 * Get the prefix of this entity
+	 * 
+	 * @return the prefix specified
+	 */
+	public String getPrefix() {
+		return prefix;
+	}
+
 }

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractStructuredType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractStructuredType.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractStructuredType.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/AbstractStructuredType.java Fri Sep 14 13:11:31 2012
@@ -29,12 +29,63 @@ public abstract class AbstractStructured
 
 	
 	protected static final  String STRUCTURE_ARRAY_NAME = "li"; 
+	
+	private String namespace;
+	
+	private String preferedPrefix;
+	
+	private String prefix;
 
+	public AbstractStructuredType(XMPMetadata metadata) {
+		this(metadata,null,null);
+	}
+
+	public AbstractStructuredType(XMPMetadata metadata, String namespaceURI) {
+		this(metadata,namespaceURI,null);
+	}
+	
 	public AbstractStructuredType(XMPMetadata metadata, String namespaceURI,
 			String fieldPrefix) {
-		super(metadata, namespaceURI, fieldPrefix, STRUCTURE_ARRAY_NAME);
+		super(metadata, STRUCTURE_ARRAY_NAME);
+		StructuredType st = this.getClass().getAnnotation(StructuredType.class);
+		if (st!=null) {
+			// init with annotation
+			this.namespace = st.namespace();
+			this.preferedPrefix = st.preferedPrefix();
+		} else {
+			// init with parameters
+			if (namespaceURI==null) {
+				throw new IllegalArgumentException("Both StructuredType annotation and namespace parameter cannot be null");
+			}
+			this.namespace = namespaceURI;
+			this.preferedPrefix = fieldPrefix;
+		}
+		this.prefix = fieldPrefix==null?this.preferedPrefix:fieldPrefix;
 	}
 
+	
+	/**
+	 * Get the namespace URI of this entity
+	 * 
+	 * @return the namespace URI
+	 */
+	public final String getNamespace() {
+		return namespace;
+	}
+
+	/**
+	 * Get the prefix of this entity
+	 * 
+	 * @return the prefix specified
+	 */
+	public final String getPrefix() {
+		return prefix;
+	}
+
+	public final String getPreferedPrefix() {
+		return prefix;
+	}
+	
 	protected void addSimpleProperty (String propertyName, Object value) {
 		TypeMapping tm = getMetadata().getTypeMapping();
 		AbstractSimpleProperty asp = tm.instanciateSimpleField(getClass(), null,getPrefix(),propertyName, value);

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ArrayProperty.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ArrayProperty.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ArrayProperty.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ArrayProperty.java Fri Sep 14 13:11:31 2012
@@ -45,6 +45,10 @@ public class ArrayProperty extends Abstr
 	
 	private String arrayType;
 
+	private String namespace;
+	
+	private String prefix;
+
 	/**
 	 * Contructor of a complex property
 	 * 
@@ -61,8 +65,10 @@ public class ArrayProperty extends Abstr
 	 */
 	public ArrayProperty(XMPMetadata metadata, String namespace,
 			String prefix, String propertyName, String type) {
-		super(metadata, namespace, prefix, propertyName);
+		super(metadata, propertyName);
 		this.arrayType = type;
+		this.namespace = namespace;
+		this.prefix = prefix;
 	}
 
 	public String getArrayType() {
@@ -84,5 +90,23 @@ public class ArrayProperty extends Abstr
 		return retval;
 	}
 
+	/**
+	 * Get the namespace URI of this entity
+	 * 
+	 * @return the namespace URI
+	 */
+	public final String getNamespace() {
+		return namespace;
+	}
+
+	/**
+	 * Get the prefix of this entity
+	 * 
+	 * @return the prefix specified
+	 */
+	public String getPrefix() {
+		return prefix;
+	}
+
 	
 }

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/JobType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/JobType.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/JobType.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/JobType.java Fri Sep 14 13:11:31 2012
@@ -23,12 +23,9 @@ package org.apache.padaf.xmpbox.type;
 
 import org.apache.padaf.xmpbox.XMPMetadata;
 
+@StructuredType(preferedPrefix="stJob",namespace="http://ns.adobe.com/xap/1.0/sType/Job#")
 public class JobType extends AbstractStructuredType {
 
-    public static final String ELEMENT_NS = "http://ns.adobe.com/xap/1.0/sType/Job#";
-
-    public static final String PREFERED_PREFIX = "stJob";
-    
     @PropertyType(propertyType="Text")
     public static final String ID = "id";
 
@@ -40,12 +37,12 @@ public class JobType extends AbstractStr
 
 
     public JobType(XMPMetadata metadata) {
-    	this(metadata, PREFERED_PREFIX);
+    	this(metadata, null);
     }
 
     public JobType(XMPMetadata metadata, String fieldPrefix) {
-        super(metadata, ELEMENT_NS, fieldPrefix);
-        addNamespace(ELEMENT_NS, fieldPrefix);
+        super(metadata, fieldPrefix);
+        addNamespace(getNamespace(), getPrefix());
     }
 
     public void setId(String id) {

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/LayerType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/LayerType.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/LayerType.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/LayerType.java Fri Sep 14 13:11:31 2012
@@ -24,11 +24,8 @@ package org.apache.padaf.xmpbox.type;
 import org.apache.padaf.xmpbox.XMPMetadata;
 import org.apache.padaf.xmpbox.XmpConstants;
 
+@StructuredType(preferedPrefix="photoshop",namespace="http://ns.adobe.com/photoshop/1.0/")
 public class LayerType extends AbstractStructuredType {
-
-	public static final String PREFERED_PREFIX = "photoshop";
-	
-	public static final String ELEMENT_NS = "http://ns.adobe.com/photoshop/1.0/";
 	
 	@PropertyType(propertyType="Text")
 	public static final String LAYER_NAME = "LayerName";
@@ -38,7 +35,7 @@ public class LayerType extends AbstractS
 
 	
 	public LayerType(XMPMetadata metadata) {
-		super(metadata, ELEMENT_NS, PREFERED_PREFIX);
+		super(metadata);
 		setAttribute(new Attribute(XmpConstants.RDF_NAMESPACE, "parseType", "Resource"));
 	}
 	

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFAFieldType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFAFieldType.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFAFieldType.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFAFieldType.java Fri Sep 14 13:11:31 2012
@@ -23,12 +23,9 @@ package org.apache.padaf.xmpbox.type;
 
 import org.apache.padaf.xmpbox.XMPMetadata;
 
+@StructuredType(preferedPrefix="pdfaField",namespace="http://www.aiim.org/pdfa/ns/field#")
 public class PDFAFieldType extends AbstractStructuredType {
 
-    public static final String ELEMENT_NS = "http://www.aiim.org/pdfa/ns/field#";
-
-    public static final String PREFERED_PREFIX = "pdfaField";
-
 	@PropertyType(propertyType = "Text")
 	public static final String NAME = "name";
 
@@ -39,7 +36,7 @@ public class PDFAFieldType extends Abstr
 	public static final String DESCRIPTION = "description";
 
 	public PDFAFieldType(XMPMetadata metadata) {
-		super(metadata, ELEMENT_NS, PREFERED_PREFIX);
+		super(metadata);
 	}
 
 	public String getName () {

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFAPropertyType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFAPropertyType.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFAPropertyType.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFAPropertyType.java Fri Sep 14 13:11:31 2012
@@ -23,12 +23,9 @@ package org.apache.padaf.xmpbox.type;
 
 import org.apache.padaf.xmpbox.XMPMetadata;
 
+@StructuredType(preferedPrefix="pdfaProperty",namespace="http://www.aiim.org/pdfa/ns/property#")
 public class PDFAPropertyType extends AbstractStructuredType {
 
-    public static final String ELEMENT_NS = "http://www.aiim.org/pdfa/ns/property#";
-
-    public static final String PREFERED_PREFIX = "pdfaProperty";
-
 	@PropertyType(propertyType = "Text")
 	public static final String NAME = "name";
 
@@ -43,7 +40,7 @@ public class PDFAPropertyType extends Ab
 
 
 	public PDFAPropertyType(XMPMetadata metadata) {
-		super(metadata, ELEMENT_NS, PREFERED_PREFIX);
+		super(metadata);
 	}
 
 	public String getName () {

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFASchemaType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFASchemaType.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFASchemaType.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFASchemaType.java Fri Sep 14 13:11:31 2012
@@ -23,12 +23,9 @@ package org.apache.padaf.xmpbox.type;
 
 import org.apache.padaf.xmpbox.XMPMetadata;
 
+@StructuredType(preferedPrefix="pdfaSchema",namespace="http://www.aiim.org/pdfa/ns/schema#")
 public class PDFASchemaType extends AbstractStructuredType {
 
-    public static final String ELEMENT_NS = "http://www.aiim.org/pdfa/ns/schema#";
-
-    public static final String PREFERED_PREFIX = "pdfaSchema";
-
 	@PropertyType(propertyType = "Text")
 	public static final String SCHEMA = "schema";
 
@@ -45,7 +42,7 @@ public class PDFASchemaType extends Abst
 	public static final String VALUE_TYPE = "valueType";
 
 	public PDFASchemaType(XMPMetadata metadata) {
-		super(metadata, ELEMENT_NS, PREFERED_PREFIX);
+		super(metadata);
 	}
 
 	public String getNamespaceURI() {
@@ -53,7 +50,7 @@ public class PDFASchemaType extends Abst
 		return tt == null ? null : tt.getStringValue();
 	}
 
-	public String getPrefix() {
+	public String getPrefixValue() {
 		TextType tt = (TextType) getProperty(PREFIX);
 		return tt == null ? null : tt.getStringValue();
 	}

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFATypeType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFATypeType.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFATypeType.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/PDFATypeType.java Fri Sep 14 13:11:31 2012
@@ -23,14 +23,10 @@ package org.apache.padaf.xmpbox.type;
 
 import org.apache.padaf.xmpbox.XMPMetadata;
 
+@StructuredType(preferedPrefix="pdfaType",namespace="http://www.aiim.org/pdfa/ns/type#")
 public class PDFATypeType extends AbstractStructuredType {
 
-    public static final String ELEMENT_NS = "http://www.aiim.org/pdfa/ns/type#";
-
-    public static final String PREFERED_PREFIX = "pdfaType";
-
-
-	@PropertyType(propertyType = "Text")
+ 	@PropertyType(propertyType = "Text")
 	public static final String TYPE = "type";
 
 	@PropertyType(propertyType = "URI")
@@ -46,7 +42,7 @@ public class PDFATypeType extends Abstra
 	public static final String FIELD = "field";
 
 	public PDFATypeType(XMPMetadata metadata) {
-		super(metadata, ELEMENT_NS, PREFERED_PREFIX);
+		super(metadata);
 	}
 
 	public String getNamespaceURI() {
@@ -59,7 +55,7 @@ public class PDFATypeType extends Abstra
 		return tt == null ? null : tt.getStringValue();
 	}
 
-	public String getPrefix() {
+	public String getPrefixValue() {
 		TextType tt = (TextType) getProperty(PREFIX);
 		return tt == null ? null : tt.getStringValue();
 	}

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ResourceEventType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ResourceEventType.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ResourceEventType.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ResourceEventType.java Fri Sep 14 13:11:31 2012
@@ -25,12 +25,9 @@ import java.util.Calendar;
 
 import org.apache.padaf.xmpbox.XMPMetadata;
 
+@StructuredType(preferedPrefix="stEvt",namespace="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#")
 public class ResourceEventType extends AbstractStructuredType {
 
-	public static final String ELEMENT_NS = "http://ns.adobe.com/xap/1.0/sType/ResourceEvent#";
-
-	public static final String PREFERRED_PREFIX = "stEvt";
-	
 	@PropertyType(propertyType="Choice")
 	public static final String ACTION = "action";
 
@@ -62,8 +59,8 @@ public class ResourceEventType extends A
 	 *            The local Name of this thumbnail type
 	 */
 	public ResourceEventType(XMPMetadata metadata) {
-		super(metadata, ELEMENT_NS, PREFERRED_PREFIX);
-		addNamespace(ELEMENT_NS, PREFERRED_PREFIX);
+		super(metadata);
+		addNamespace(getNamespace(), getPreferedPrefix());
 	}
 	
 	

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ResourceRefType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ResourceRefType.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ResourceRefType.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ResourceRefType.java Fri Sep 14 13:11:31 2012
@@ -26,12 +26,9 @@ import java.util.List;
 
 import org.apache.padaf.xmpbox.XMPMetadata;
 
+@StructuredType(preferedPrefix="stRef",namespace="http://ns.adobe.com/xap/1.0/sType/ResourceRef#")
 public class ResourceRefType extends AbstractStructuredType {
 
-	public static final String ELEMENT_NS = "http://ns.adobe.com/xap/1.0/sType/ResourceRef#";
-
-	public static final String PREFERRED_PREFIX = "stRef";
-	
 	@PropertyType(propertyType = "URI")
 	public static final String DOCUMENT_ID = "documentID";
 
@@ -91,8 +88,8 @@ public class ResourceRefType extends Abs
 	 *            The local Name of this thumbnail type
 	 */
 	public ResourceRefType(XMPMetadata metadata) {
-		super(metadata, ELEMENT_NS, PREFERRED_PREFIX);
-		addNamespace(ELEMENT_NS, PREFERRED_PREFIX);
+		super(metadata);
+		addNamespace(getNamespace(), getPreferedPrefix());
 		
 	}
 	
@@ -295,7 +292,7 @@ public class ResourceRefType extends Abs
         ArrayProperty seq = (ArrayProperty) getFirstEquivalentProperty(ALTERNATE_PATHS, ArrayProperty.class);
         if (seq==null) {
         	seq = getMetadata().getTypeMapping().createArrayProperty(null,
-                    PREFERRED_PREFIX, ALTERNATE_PATHS,
+                    getPreferedPrefix(), ALTERNATE_PATHS,
                     ArrayProperty.ORDERED_ARRAY);
         	addProperty(seq);
         }

Added: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/StructuredType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/StructuredType.java?rev=1384755&view=auto
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/StructuredType.java (added)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/StructuredType.java Fri Sep 14 13:11:31 2012
@@ -0,0 +1,16 @@
+package org.apache.padaf.xmpbox.type;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface StructuredType {
+
+	String namespace ();
+	
+	String preferedPrefix();
+	
+}

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ThumbnailType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ThumbnailType.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ThumbnailType.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/ThumbnailType.java Fri Sep 14 13:11:31 2012
@@ -30,12 +30,9 @@ import org.apache.padaf.xmpbox.XmpConsta
  * 
  * @author eric
  */
+@StructuredType(preferedPrefix="xmpGImg",namespace="http://ns.adobe.com/xap/1.0/g/img/")
 public class ThumbnailType extends AbstractStructuredType {
 	
-	public static final String ELEMENT_NS = "http://ns.adobe.com/xap/1.0/g/img/";
-	
-	public static final String PREFERRED_PREFIX = "xmpGImg";
-	
 	@PropertyType(propertyType = "Choice")
 	public static final String FORMAT = "format";
 
@@ -60,7 +57,7 @@ public class ThumbnailType extends Abstr
 	 *            The local Name of this thumbnail type
 	 */
 	public ThumbnailType(XMPMetadata metadata) {
-		super(metadata, ELEMENT_NS, PREFERRED_PREFIX);
+		super(metadata);
 		setAttribute(new Attribute(XmpConstants.RDF_NAMESPACE, "parseType", "Resource"));
 	}
 

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/TypeMapping.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/TypeMapping.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/TypeMapping.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/TypeMapping.java Fri Sep 14 13:11:31 2012
@@ -62,7 +62,7 @@ public final class TypeMapping {
 	private Map<Class<? extends AbstractField>,TypeDescription<AbstractStructuredType>> STRUCTURED_CLASSES;
 
 	private Map<String,TypeDescription<AbstractStructuredType>> STRUCTURED_NAMESPACES;
-	
+
 	private Map<String, String> schemaUriToPrefered;
 
 	private XMPMetadata metadata;
@@ -125,19 +125,19 @@ public final class TypeMapping {
 		addToStructuredMaps(new TypeDescription<AbstractStructuredType>("PDFAProperty",null,PDFAPropertyType.class));
 		addToStructuredMaps(new TypeDescription<AbstractStructuredType>("PDFAType",null,PDFATypeType.class));
 		addToStructuredMaps(new TypeDescription<AbstractStructuredType>("PDFASchema",null,PDFASchemaType.class));
-		
+
 		// schema
 		schemaUriToPrefered = new HashMap<String, String>();
 		schemaMap = new HashMap<String, XMPSchemaFactory>();
-		addNameSpace("http://ns.adobe.com/xap/1.0/", XMPBasicSchema.class);
-		addNameSpace(DublinCoreSchema.DCURI, DublinCoreSchema.class);
-		addNameSpace("http://www.aiim.org/pdfa/ns/extension/", PDFAExtensionSchema.class);
-		addNameSpace("http://ns.adobe.com/xap/1.0/mm/", XMPMediaManagementSchema.class);
-		addNameSpace("http://ns.adobe.com/pdf/1.3/", AdobePDFSchema.class);
-		addNameSpace("http://www.aiim.org/pdfa/ns/id/", PDFAIdentificationSchema.class);
-		addNameSpace("http://ns.adobe.com/xap/1.0/rights/",     XMPRightsManagementSchema.class);
-		addNameSpace(PhotoshopSchema.PHOTOSHOPURI,      PhotoshopSchema.class);
-		addNameSpace(XMPBasicJobTicketSchema.JOB_TICKET_URI,XMPBasicJobTicketSchema.class);
+		addNameSpace(XMPBasicSchema.class);
+		addNameSpace(DublinCoreSchema.class);
+		addNameSpace(PDFAExtensionSchema.class);
+		addNameSpace(XMPMediaManagementSchema.class);
+		addNameSpace(AdobePDFSchema.class);
+		addNameSpace(PDFAIdentificationSchema.class);
+		addNameSpace(XMPRightsManagementSchema.class);
+		addNameSpace(PhotoshopSchema.class);
+		addNameSpace(XMPBasicJobTicketSchema.class);
 
 	}
 
@@ -151,27 +151,21 @@ public final class TypeMapping {
 		DERIVED_CLASSES.put(td.getTypeClass(), td);
 	}
 
-	public void addToStructuredMaps (TypeDescription<AbstractStructuredType> td) {
-		try {
-			String ns = (String)td.getTypeClass().getField("ELEMENT_NS").get(null);
-			Class<? extends AbstractStructuredType> clz = td.getTypeClass();
-			if (clz!=null) {
-				PropMapping pm = ReflectHelper.initializePropMapping(ns, clz);
-				td.setProperties(pm);
-			} else {
-				PropMapping pm = initializePropMapping(ns, null);
-				td.setProperties(pm);
-			}
-			addToStructuredMaps(td, ns);
-		} catch (IllegalArgumentException e) {
-			throw new IllegalArgumentException("Failed to init structured maps for "+td.getTypeClass(), e);
-		} catch (SecurityException e) {
-			throw new IllegalArgumentException("Failed to init structured maps for "+td.getTypeClass(), e);
-		} catch (IllegalAccessException e) {
-			throw new IllegalArgumentException("Failed to init structured maps for "+td.getTypeClass(), e);
-		} catch (NoSuchFieldException e) {
-			throw new IllegalArgumentException("Failed to init structured maps for "+td.getTypeClass(), e);
-		}
+	private void addToStructuredMaps (TypeDescription<AbstractStructuredType> td) {
+		Class<? extends AbstractStructuredType> clz = td.getTypeClass();
+		StructuredType st = clz.getAnnotation(StructuredType.class);
+		if (st==null) {
+			System.err.println(">> "+clz);
+		}
+		String ns = st.namespace();
+//		if (clz!=null) {
+			PropMapping pm = ReflectHelper.initializePropMapping(ns, clz);
+			td.setProperties(pm);
+//		} else {
+//			PropMapping pm = initializePropMapping(ns, null);
+//			td.setProperties(pm);
+//		}
+		addToStructuredMaps(td, ns);
 	}
 
 	public void addToStructuredMaps (TypeDescription<AbstractStructuredType> td, String ns) {
@@ -240,7 +234,7 @@ public final class TypeMapping {
 		return STRUCTURED_TYPES.get(type);
 	}
 
-	
+
 	public AbstractStructuredType instanciateStructuredType (TypeDescription<AbstractStructuredType> td) throws BadFieldValueException {
 		try {
 			Class<? extends AbstractStructuredType> propertyTypeClass = td.getTypeClass();
@@ -361,28 +355,21 @@ public final class TypeMapping {
 		return STRUCTURED_TYPES.containsKey(type);
 	}
 
-	private static PropMapping initializePropMapping(String ns,
-			DefinedStructuredType dst) {
-		PropMapping propMap = new PropMapping(ns);
-		for (Entry<String, String> entry: dst.getDefinedProperties().entrySet()) {
-			propMap.addNewProperty(entry.getKey(), entry.getValue());
-		}
-		return propMap;
-	}
-
-	private void addNameSpace(String ns, Class<? extends XMPSchema> classSchem) {
+//	private static PropMapping initializePropMapping(String ns,
+//			DefinedStructuredType dst) {
+//		PropMapping propMap = new PropMapping(ns);
+//		for (Entry<String, String> entry: dst.getDefinedProperties().entrySet()) {
+//			propMap.addNewProperty(entry.getKey(), entry.getValue());
+//		}
+//		return propMap;
+//	}
+
+	private void addNameSpace(Class<? extends XMPSchema> classSchem) {
+		StructuredType st = classSchem.getAnnotation(StructuredType.class);
+		String ns = st.namespace();
+		String pp = st.preferedPrefix();
 		schemaMap.put(ns, new XMPSchemaFactory(ns, classSchem,	ReflectHelper.initializePropMapping(ns, classSchem)));
-		try {
-			schemaUriToPrefered.put(ns, classSchem.getField("PREFERED_PREFIX").get(null).toString());
-		} catch (IllegalArgumentException e) {
-			throw new IllegalArgumentException("Failed to init '"+ns+"'", e);
-		} catch (SecurityException e) {
-			throw new IllegalArgumentException("Failed to init '"+ns+"'", e);
-		} catch (IllegalAccessException e) {
-			throw new IllegalArgumentException("Failed to init '"+ns+"'", e);
-		} catch (NoSuchFieldException e) {
-			throw new IllegalArgumentException("Failed to init '"+ns+"'", e);
-		}
+		schemaUriToPrefered.put(ns, pp);
 	}
 
 	public void addNewNameSpace(String ns,String prefered) {
@@ -457,32 +444,32 @@ public final class TypeMapping {
 			String propertyName, boolean value) {
 		return new BooleanType(metadata, namespaceURI, prefix,propertyName, value);
 	}
-	
+
 	public DateType createDate (String namespaceURI, String prefix,
 			String propertyName, Calendar value) {
 		return new DateType(metadata, namespaceURI, prefix,propertyName, value);
 	}
-	
+
 	public IntegerType createInteger (String namespaceURI, String prefix,
 			String propertyName, int value) {
 		return new IntegerType(metadata, namespaceURI, prefix,propertyName, value);
 	}
-	
+
 	public RealType createReal (String namespaceURI, String prefix,
 			String propertyName, float value) {
 		return new RealType(metadata, namespaceURI, prefix,propertyName, value);
 	}
-	
+
 	public TextType createText (String namespaceURI, String prefix,
 			String propertyName, String value) {
 		return new TextType(metadata, namespaceURI, prefix,propertyName, value);
 	}
-	
+
 	public ProperNameType createProperName (String namespaceURI, String prefix,
 			String propertyName, String value) {
 		return new ProperNameType(metadata, namespaceURI, prefix,propertyName, value);
 	}
-	
+
 	public URIType createURI (String namespaceURI, String prefix,
 			String propertyName, String value) {
 		return new URIType(metadata, namespaceURI, prefix,propertyName, value);
@@ -536,5 +523,5 @@ public final class TypeMapping {
 	public ArrayProperty createArrayProperty (String namespace, String prefix, String propertyName, String type) {
 		return new ArrayProperty(metadata, namespace, prefix, propertyName, type);
 	}
-	
+
 }

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/VersionType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/VersionType.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/VersionType.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/main/java/org/apache/padaf/xmpbox/type/VersionType.java Fri Sep 14 13:11:31 2012
@@ -25,12 +25,9 @@ import java.util.Calendar;
 
 import org.apache.padaf.xmpbox.XMPMetadata;
 
+@StructuredType(preferedPrefix="stVer",namespace="http://ns.adobe.com/xap/1.0/sType/Version#")
 public class VersionType extends AbstractStructuredType {
 
-	public static final String ELEMENT_NS = "http://ns.adobe.com/xap/1.0/sType/Version#";
-
-	public static final String PREFERRED_PREFIX = "stVer";
-	
 	@PropertyType(propertyType="Text")
 	public static final String COMMENTS = "comments";
 
@@ -59,8 +56,8 @@ public class VersionType extends Abstrac
 	 *            The local Name of this thumbnail type
 	 */
 	public VersionType(XMPMetadata metadata) {
-		super(metadata, ELEMENT_NS, PREFERRED_PREFIX);
-		addNamespace(ELEMENT_NS,PREFERRED_PREFIX);
+		super(metadata);
+		addNamespace(getNamespace(),getPreferedPrefix());
 	}
 	
 	

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/BirthCertificateSchemaWithXMLDescriptions.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/BirthCertificateSchemaWithXMLDescriptions.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/BirthCertificateSchemaWithXMLDescriptions.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/BirthCertificateSchemaWithXMLDescriptions.java Fri Sep 14 13:11:31 2012
@@ -30,15 +30,13 @@ import org.apache.padaf.xmpbox.schema.Sc
 import org.apache.padaf.xmpbox.schema.XMPSchema;
 import org.apache.padaf.xmpbox.type.Attribute;
 import org.apache.padaf.xmpbox.type.PropertyType;
+import org.apache.padaf.xmpbox.type.StructuredType;
 
 
 @SchemaExtensionDefinition(schema = "Birth-Certificate Schema", valueType_description = "/org/apache/padaf/xmpbox/valueTypeDescription.xml", property_descriptions = "propertiesDescription.xml")
+@StructuredType(preferedPrefix="adn",namespace="http://test.apache.com/xap/adn/")
 public class BirthCertificateSchemaWithXMLDescriptions extends XMPSchema {
 
-	public static final String PREFERED_PREFIX = "adn";
-
-	public static final String NAMESPACE = "http://test.apache.com/xap/adn/";
-
 	@PropertyType(propertyType = "Text")
 	@PropertyExtensionDefinition(propertyCategory = "external")
 	public static final String FIRST_NAME = "firstname";
@@ -64,7 +62,7 @@ public class BirthCertificateSchemaWithX
 //	public static final String MAIL_ADR = "mail";
 
 	public BirthCertificateSchemaWithXMLDescriptions(XMPMetadata metadata) {
-		super(metadata, PREFERED_PREFIX, NAMESPACE);
+		super(metadata);
 		this.setAttribute(new Attribute(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "madn",
 				"http://test.withfield.com/vt/"));
 		this.setAboutAsSimple("");

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/DoubleSameTypeSchemaTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/DoubleSameTypeSchemaTest.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/DoubleSameTypeSchemaTest.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/DoubleSameTypeSchemaTest.java Fri Sep 14 13:11:31 2012
@@ -28,6 +28,7 @@ import junit.framework.Assert;
 
 import org.apache.padaf.xmpbox.schema.DublinCoreSchema;
 import org.apache.padaf.xmpbox.schema.XMPSchema;
+import org.apache.padaf.xmpbox.type.StructuredType;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -68,13 +69,15 @@ public class DoubleSameTypeSchemaTest {
 		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(
-				DublinCoreSchema.PREFERED_PREFIX, DublinCoreSchema.DCURI))
+				stDub.preferedPrefix(), stDub.namespace()))
 				.getFormat());
 		Assert.assertEquals(coverage, ((DublinCoreSchema) metadata.getSchema(
-				ownPrefix, DublinCoreSchema.DCURI)).getCoverage());
+				ownPrefix, stDub.namespace())).getCoverage());
 
 		List<XMPSchema> schems = metadata.getAllSchemas();
 		DublinCoreSchema dc;

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/XMPMetaDataTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/XMPMetaDataTest.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/XMPMetaDataTest.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/XMPMetaDataTest.java Fri Sep 14 13:11:31 2012
@@ -48,7 +48,7 @@ public class XMPMetaDataTest {
 	public void init() throws Exception {
 		metadata = XMPMetadata.createXMPMetadata();
 		String tmpNsURI = "http://www.test.org/schem/";
-		tmp = new XMPSchema(metadata, "test", tmpNsURI);
+		tmp = new XMPSchema(metadata, tmpNsURI, "test");
 		tmp.addQualifiedBagValue("BagContainer", "Value1");
 		tmp.addQualifiedBagValue("BagContainer", "Value2");
 		tmp.addQualifiedBagValue("BagContainer", "Value3");
@@ -61,7 +61,7 @@ public class XMPMetaDataTest {
 				.addProperty(metadata.getTypeMapping().createText(null,"test", "simpleProperty",
 						"YEP"));
 
-		tmp2 = new XMPSchema(metadata, "space", "http://www.space.org/schem/");
+		tmp2 = new XMPSchema(metadata, "http://www.space.org/schem/", "space");
 		tmp2.addUnqualifiedSequenceValue("SeqSpContainer", "ValueSpace1");
 		tmp2.addUnqualifiedSequenceValue("SeqSpContainer", "ValueSpace2");
 		tmp2.addUnqualifiedSequenceValue("SeqSpContainer", "ValueSpace3");

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/schema/BasicJobTicketSchemaTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/schema/BasicJobTicketSchemaTest.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/schema/BasicJobTicketSchemaTest.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/schema/BasicJobTicketSchemaTest.java Fri Sep 14 13:11:31 2012
@@ -31,6 +31,7 @@ import org.apache.padaf.xmpbox.XMPMetada
 import org.apache.padaf.xmpbox.parser.XMPDocumentBuilder;
 import org.apache.padaf.xmpbox.parser.XmpSerializer;
 import org.apache.padaf.xmpbox.type.JobType;
+import org.apache.padaf.xmpbox.type.StructuredType;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -99,13 +100,14 @@ public class BasicJobTicketSchemaTest {
 		XMPBasicJobTicketSchema jt = rxmp.getBasicJobTicketSchema();
 		Assert.assertNotNull(jt);
 		Assert.assertEquals(1, jt.getJobs().size());
+		StructuredType stjob = JobType.class.getAnnotation(StructuredType.class);
 		
 		JobType job = jt.getJobs().get(0);
 		Assert.assertEquals("zeid2", job.getId());
 		Assert.assertEquals("zename2", job.getName());
 		Assert.assertEquals("zeurl2", job.getUrl());
-		Assert.assertEquals(JobType.ELEMENT_NS, job.getNamespace());
-		Assert.assertEquals(JobType.PREFERED_PREFIX, job.getPrefix());
+		Assert.assertEquals(stjob.namespace(), job.getNamespace());
+		Assert.assertEquals(stjob.preferedPrefix(), job.getPrefix());
 	
 	}
 
@@ -132,10 +134,12 @@ public class BasicJobTicketSchemaTest {
 		JobType job = jt.getJobs().get(0);
 //		SaveMetadataHelper.serialize(rxmp, System.out);
 
+		StructuredType stjob = JobType.class.getAnnotation(StructuredType.class);
+
 		Assert.assertEquals("zeid2", job.getId());
 		Assert.assertEquals("zename2", job.getName());
 		Assert.assertEquals("zeurl2", job.getUrl());
-		Assert.assertEquals(JobType.ELEMENT_NS, job.getNamespace());
+		Assert.assertEquals(stjob.namespace(), job.getNamespace());
 		Assert.assertEquals("aaa", job.getPrefix());
 	
 	}

Modified: pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/schema/XMPSchemaTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/schema/XMPSchemaTest.java?rev=1384755&r1=1384754&r2=1384755&view=diff
==============================================================================
--- pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/schema/XMPSchemaTest.java (original)
+++ pdfbox/branches/xmpbox-refactoring/xmpbox/src/test/java/org/apache/padaf/xmpbox/schema/XMPSchemaTest.java Fri Sep 14 13:11:31 2012
@@ -50,7 +50,7 @@ public class XMPSchemaTest {
 	@Before
 	public void resetDocument() throws Exception {
 		parent = XMPMetadata.createXMPMetadata();
-		schem = new XMPSchema(parent, "nsSchem", "nsURI");
+		schem = new XMPSchema(parent, "nsURI", "nsSchem");
 
 	}
 
@@ -441,14 +441,12 @@ public class XMPSchemaTest {
 		String valAltSchem2 = "altvalSchem2";
 		String langAltSchem2 = "fr-fr";
 
-		XMPSchema schem1 = new XMPSchema(parent, "test",
-				"http://www.test.org/schem/");
+		XMPSchema schem1 = new XMPSchema(parent,"http://www.test.org/schem/", "test");
 		schem1.addQualifiedBagValue(bagName, valBagSchem1);
 		schem1.addUnqualifiedSequenceValue(seqName, valSeqSchem1);
 		schem1.setUnqualifiedLanguagePropertyValue(altName, langAltSchem1, valAltSchem1);
 
-		XMPSchema schem2 = new XMPSchema(parent, "test",
-				"http://www.test.org/schem/");
+		XMPSchema schem2 = new XMPSchema(parent, "http://www.test.org/schem/", "test");
 		schem2.addQualifiedBagValue(bagName, valBagSchem2);
 		schem2.addUnqualifiedSequenceValue(seqName, valSeqSchem2);
 		schem2.setUnqualifiedLanguagePropertyValue(altName, langAltSchem2, valAltSchem2);