pdfbox-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gbaill...@apache.org
Subject svn commit: r1549002 - 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/test/java/org/apache/xmpbox/ src/test/java/org/apache/xmpbox/schema/ src/test/resource...
Date Sun, 08 Dec 2013 07:47:26 GMT
Author: gbailleul
Date: Sun Dec  8 07:47:26 2013
New Revision: 1549002

URL: http://svn.apache.org/r1549002
Log:
PDFBOX-1343:
* added types missing for EXIF namespace
* defined EXIF namespace, TIFF namespace
* added tests to ensure all expected metadata are accepted now

Added:
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/ExifSchema.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/TiffSchema.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPageTextSchema.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/CFAPatternType.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/DeviceSettingsType.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/DimensionsType.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/FlashType.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/GPSCoordinateType.java
      - copied, changed from r1546696, pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/GUIDType.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/OECFType.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/RationalType.java
      - copied, changed from r1546696, pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/URLType.java
    pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/TestValidatePermitedMetadata.java
    pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/TestExifXmp.java
      - copied, changed from r1546696, pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/TestXMPWithDefinedSchemas.java
    pdfbox/trunk/xmpbox/src/test/resources/permited_metadata.txt
    pdfbox/trunk/xmpbox/src/test/resources/validxmp/exif.xmp
Modified:
    pdfbox/trunk/xmpbox/pom.xml
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/XMPMetadata.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/PhotoshopSchema.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPBasicSchema.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPMediaManagementSchema.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/AbstractStructuredType.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/PropertyType.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/TypeMapping.java
    pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/Types.java
    pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/XMPMediaManagementTest.java

Modified: pdfbox/trunk/xmpbox/pom.xml
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/pom.xml?rev=1549002&r1=1549001&r2=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/pom.xml (original)
+++ pdfbox/trunk/xmpbox/pom.xml Sun Dec  8 07:47:26 2013
@@ -36,7 +36,7 @@
 		<dependency>
 			<groupId>junit</groupId>
 			<artifactId>junit</artifactId>
-			<version>4.8.1</version>
+			<version>4.11</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>

Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/XMPMetadata.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/XMPMetadata.java?rev=1549002&r1=1549001&r2=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/XMPMetadata.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/XMPMetadata.java Sun Dec  8 07:47:26 2013
@@ -68,9 +68,7 @@ public class XMPMetadata
     /**
      * Contructor of an empty default XMPMetaData
      * 
-     * @throws CreateXMPMetadataException
-     *             If DOM Document associated could not be created
-     */
+      */
     protected XMPMetadata()
     {
         this(XmpConstants.DEFAULT_XPACKET_BEGIN, XmpConstants.DEFAULT_XPACKET_ID, XmpConstants.DEFAULT_XPACKET_BYTES,
@@ -80,7 +78,6 @@ public class XMPMetadata
     /**
      * creates blank XMP doc with specified parameters
      * 
-     * @throws CreateXMPMetadataException
      * @param xpacketBegin
      *            Value of xpacketBegin
      * @param xpacketId
@@ -89,8 +86,6 @@ public class XMPMetadata
      *            Value of xpacketBytes
      * @param xpacketEncoding
      *            Value of xpacket encoding
-     * @throws CreateXMPMetadataException
-     *             If DOM Document associated could not be created
      */
     protected XMPMetadata(String xpacketBegin, String xpacketId, String xpacketBytes, String xpacketEncoding)
     {
@@ -411,16 +406,19 @@ public class XMPMetadata
         return (XMPRightsManagementSchema) getSchema(XMPRightsManagementSchema.class);
     }
 
-    /**
+
+    /*
      * Get the Photoshop schema This method return null if not found
-     * 
+     *
      * @return The PhotoshopSchema schema or null if not declared
      */
     public PhotoshopSchema getPhotoshopSchema()
     {
-        return (PhotoshopSchema) getSchema(PhotoshopSchema.PHOTOSHOPURI);
+        return (PhotoshopSchema) getSchema(PhotoshopSchema.class);
     }
 
+
+
     /**
      * Create and add a XMP Basic schema to this metadata This method return the created schema to enter information
      * 

Added: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/ExifSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/ExifSchema.java?rev=1549002&view=auto
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/ExifSchema.java (added)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/ExifSchema.java Sun Dec  8 07:47:26 2013
@@ -0,0 +1,328 @@
+/*****************************************************************************
+ *
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+package org.apache.xmpbox.schema;
+
+import org.apache.xmpbox.XMPMetadata;
+import org.apache.xmpbox.type.*;
+
+import java.util.List;
+
+/**
+ * Representation of a Exif Schema
+ *
+ */
+
+@StructuredType(preferedPrefix = "exif", namespace = "http://ns.adobe.com/exif/1.0/")
+public class ExifSchema extends XMPSchema {
+
+    @PropertyType(type = Types.LangAlt, card = Cardinality.Simple)
+    public static final String USER_COMMENT = "UserComment";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String EXIF_VERSION = "ExifVersion";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String FLASH_PIX_VERSION = "FlashpixVersion";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String COLOR_SPACE = "ColorSpace";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Seq)
+    public static final String COMPONENTS_CONFIGURATION = "ComponentsConfiguration";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String COMPRESSED_BPP = "CompressedBitsPerPixel";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String PIXEL_X_DIMENSION = "PixelXDimension";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String PIXEL_Y_DIMENSION = "PixelYDimension";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String RELATED_SOUND_FILE = "RelatedSoundFile";
+
+    @PropertyType(type=Types.Date, card= Cardinality.Simple)
+    public static final String DATE_TIME_ORIGINAL = "DateTimeOriginal";
+
+    @PropertyType(type=Types.Date, card= Cardinality.Simple)
+    public static final String DATE_TIME_DIGITIZED = "DateTimeDigitized";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String EXPOSURE_TIME = "ExposureTime";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String F_NUMBER = "FNumber";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String EXPOSURE_PROGRAM = "ExposureProgram";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String SPECTRAL_SENSITIVITY = "SpectralSensitivity";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Seq)
+    public static final String ISO_SPEED_RATINGS = "ISOSpeedRatings";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String SHUTTER_SPEED_VALUE = "ShutterSpeedValue";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String APERTURE_VALUE = "ApertureValue";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String BRIGHTNESS_VALUE = "BrightnessValue";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String EXPOSURE_BIAS_VALUE = "ExposureBiasValue";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String MAX_APERTURE_VALUE = "MaxApertureValue";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String SUBJECT_DISTANCE = "SubjectDistance";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String METERING_MODE = "MeteringMode";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String LIGHT_SOURCE = "LightSource";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String FLASH_ENERGY = "FlashEnergy";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String FOCAL_LENGTH = "FocalLength";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String FOCAL_PLANE_XRESOLUTION = "FocalPlaneXResolution";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String FOCAL_PLANE_YRESOLUTION = "FocalPlaneYResolution";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Seq)
+    public static final String SUBJECT_AREA = "SubjectArea";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String FOCAL_PLANE_RESOLUTION_UNIT = "FocalPlaneResolutionUnit";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Seq)
+    public static final String SUBJECT_LOCATION = "SubjectLocation";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String EXPOSURE_INDEX = "ExposureIndex";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String SENSING_METHOD = "SensingMethod";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String FILE_SOURCE = "FileSource";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String SCENE_TYPE = "SceneType";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String CUSTOM_RENDERED = "CustomRendered";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String WHITE_BALANCE = "WhiteBalance";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String EXPOSURE_MODE = "ExposureMode";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String DIGITAL_ZOOM_RATIO = "DigitalZoomRatio";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String FOCAL_LENGTH_IN_3_5MM_FILM = "FocalLengthIn35mmFilm";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String SCENE_CAPTURE_TYPE = "SceneCaptureType";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String GAIN_CONTROL = "GainControl";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String CONTRAST = "Contrast";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String SATURATION = "Saturation";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String SHARPNESS = "Sharpness";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String SUBJECT_DISTANCE_RANGE = "SubjectDistanceRange";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String IMAGE_UNIQUE_ID = "ImageUniqueID";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String GPSVERSION_ID = "GPSVersionID";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String GPS_SATELLITES = "GPSSatellites";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String GPS_STATUS = "GPSStatus";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String GPS_MEASURE_MODE = "GPSMeasureMode";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String GPS_MAP_DATUM = "GPSMapDatum";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String GPS_SPEED_REF = "GPSSpeedRef";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String GPS_TRACK_REF = "GPSTrackRef";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String GPS_IMG_DIRECTION_REF = "GPSImgDirectionRef";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String GPS_DEST_BEARING_REF = "GPSDestBearingRef";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String GPS_DEST_DISTANCE_REF = "GPSDestDistanceRef";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String GPS_PROCESSING_METHOD = "GPSProcessingMethod";
+
+    @PropertyType(type=Types.Text, card= Cardinality.Simple)
+    public static final String GPS_AREA_INFORMATION = "GPSAreaInformation";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String GPS_ALTITUDE = "GPSAltitude";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String GPS_DOP = "GPSDOP";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String GPS_SPEED = "GPSSpeed";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String GPS_TRACK = "GPSTrack";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String GPS_IMG_DIRECTION = "GPSImgDirection";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String GPS_DEST_BEARING = "GPSDestBearing";
+
+    @PropertyType(type=Types.Rational, card= Cardinality.Simple)
+    public static final String GPS_DEST_DISTANCE = "GPSDestDistance";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String GPS_ALTITUDE_REF = "GPSAltitudeRef";
+
+    @PropertyType(type=Types.Integer, card= Cardinality.Simple)
+    public static final String GPS_DIFFERENTIAL = "GPSDifferential";
+
+    @PropertyType(type=Types.Date, card= Cardinality.Simple)
+    public static final String GPS_TIME_STAMP = "GPSTimeStamp";
+
+    @PropertyType(type=Types.OECF)
+    public static final String OECF = "OECF";
+
+    @PropertyType(type=Types.OECF)
+    public static final String SPATIAL_FREQUENCY_RESPONSE = "SpatialFrequencyResponse";
+
+    @PropertyType(type=Types.GPSCoordinate)
+    public static final String GPS_LATITUDE = "GPSLatitude";
+
+    @PropertyType(type=Types.GPSCoordinate)
+    public static final String GPS_LONGITUDE = "GPSLongitude";
+
+    @PropertyType(type=Types.GPSCoordinate)
+    public static final String GPS_DEST_LATITUDE = "GPSDestLatitude";
+
+    @PropertyType(type=Types.GPSCoordinate)
+    public static final String GPS_DEST_LONGITUDE = "GPSDestLongitude";
+
+    @PropertyType(type = Types.CFAPattern)
+    public static final String CFA_PATTERN = "CFAPattern";
+
+    @PropertyType(type = Types.Flash)
+    public static final String FLASH = "Flash";
+
+    @PropertyType(type = Types.CFAPattern)
+    public static final String CFA_PATTERN_TYPE = "CFAPatternType";
+
+    @PropertyType(type = Types.DeviceSettings)
+    public static final String DEVICE_SETTING_DESCRIPTION = "DeviceSettingDescription";
+
+    public ExifSchema(XMPMetadata metadata)
+    {
+        super(metadata);
+    }
+
+    public ExifSchema(XMPMetadata metadata, String ownPrefix)
+    {
+        super(metadata, ownPrefix);
+    }
+
+
+    /**
+     * Return the Lang Alt UserComment property
+     *
+     * @return user comment property
+     */
+    public ArrayProperty getUserCommentProperty()
+    {
+        return (ArrayProperty) getProperty(USER_COMMENT);
+    }
+
+    /**
+     * Return a list of languages defined in UserComment property
+     *
+     * @return list of UserComment languages values defined
+     */
+    public List<String> getUserCommentLanguages()
+    {
+        return getUnqualifiedLanguagePropertyLanguagesValue(USER_COMMENT);
+    }
+
+    /**
+     * Return a language value for UserComment property
+     *
+     * @param lang
+     *            language concerned
+     * @return the UserComment value for specified language
+     */
+    public String getUserComment(String lang)
+    {
+        return getUnqualifiedLanguagePropertyValue(USER_COMMENT, lang);
+    }
+
+    /**
+     * Return the default value for UserComment property
+     *
+     * @see ExifSchema#getUserComment(String)
+     */
+    public String getUserComment()
+    {
+        return getUserComment(null);
+    }
+
+
+}

Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/PhotoshopSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/PhotoshopSchema.java?rev=1549002&r1=1549001&r2=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/PhotoshopSchema.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/PhotoshopSchema.java Sun Dec  8 07:47:26 2013
@@ -53,10 +53,6 @@ public class PhotoshopSchema extends XMP
         super(metadata, ownPrefix);
     }
 
-    public static final String PREFERED_PREFIX = "photoshop";
-
-    public static final String PHOTOSHOPURI = "http://ns.adobe.com/photoshop/1.0/";
-
     @PropertyType(type = Types.URI, card = Cardinality.Simple)
     public static final String ANCESTORID = "AncestorID";
 

Added: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/TiffSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/TiffSchema.java?rev=1549002&view=auto
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/TiffSchema.java (added)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/TiffSchema.java Sun Dec  8 07:47:26 2013
@@ -0,0 +1,240 @@
+/*****************************************************************************
+ *
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+package org.apache.xmpbox.schema;
+
+import org.apache.xmpbox.XMPMetadata;
+import org.apache.xmpbox.type.*;
+
+import java.util.List;
+
+@StructuredType(preferedPrefix = "tiff", namespace = "http://ns.adobe.com/tiff/1.0/")
+public class TiffSchema extends XMPSchema{
+
+    @PropertyType(type = Types.LangAlt, card = Cardinality.Simple)
+    public static final String IMAGE_DESCRIPTION = "ImageDescription";
+
+    @PropertyType(type = Types.LangAlt, card = Cardinality.Simple)
+    public static final String COPYRIGHT = "Copyright";
+
+    @PropertyType(type = Types.ProperName, card = Cardinality.Simple)
+    public static final String ARTIST = "Artist";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Simple)
+    public static final String IMAGE_WIDTH = "ImageWidth";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Simple)
+    public static final String IMAGE_LENGHT = "ImageLength";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Seq)
+    public static final String  BITS_PER_SAMPLE= "BitsPerSample";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Simple)
+    public static final String COMPRESSION = "Compression";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Simple)
+    public static final String PHOTOMETRIC_INTERPRETATION = "PhotometricInterpretation";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Simple)
+    public static final String ORIENTATION = "Orientation";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Simple)
+    public static final String SAMPLES_PER_PIXEL = "SamplesPerPixel";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Simple)
+    public static final String PLANAR_CONFIGURATION = "PlanarConfiguration";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Simple)
+    public static final String YCB_CR_SUB_SAMPLING = "YCbCrSubSampling";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Seq)
+    public static final String YCB_CR_POSITIONING = "YCbCrPositioning";
+
+    @PropertyType(type = Types.Rational, card = Cardinality.Simple)
+    public static final String XResolution = "XResolution";
+
+    @PropertyType(type = Types.Rational, card = Cardinality.Simple)
+    public static final String YRESOLUTION = "YResolution";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Simple)
+    public static final String RESOLUTION_UNIT = "ResolutionUnit";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Seq)
+    public static final String TRANSFER_FUNCTION = "TransferFunction";
+
+    @PropertyType(type = Types.Rational, card = Cardinality.Seq)
+    public static final String WHITE_POINT = "WhitePoint";
+
+    @PropertyType(type = Types.Rational, card = Cardinality.Seq)
+    public static final String PRIMARY_CHROMATICITIES = "PrimaryChromaticities";
+
+    @PropertyType(type = Types.Rational, card = Cardinality.Seq)
+    public static final String YCB_CR_COEFFICIENTS = "YCbCrCoefficients";
+
+    @PropertyType(type = Types.Rational, card = Cardinality.Seq)
+    public static final String REFERENCE_BLACK_WHITE = "ReferenceBlackWhite";
+
+    @PropertyType(type = Types.Date, card = Cardinality.Simple)
+    public static final String DATE_TIME = "DateTime";
+
+    @PropertyType(type = Types.AgentName, card = Cardinality.Simple)
+    public static final String SOFTWARE = "Software";
+
+    @PropertyType(type = Types.ProperName, card = Cardinality.Simple)
+    public static final String MAKE = "Make";
+
+    @PropertyType(type = Types.ProperName, card = Cardinality.Simple)
+    public static final String MODEL = "Model";
+
+    public TiffSchema(XMPMetadata metadata) {
+        super(metadata);
+    }
+
+    public TiffSchema(XMPMetadata metadata, String prefix) {
+        super(metadata, prefix);
+    }
+
+    /**
+     * Return the artist property
+     * @return artist ProperNameType
+     */
+    public ProperNameType getArtistProperty()
+    {
+        return (ProperNameType) getProperty(ARTIST);
+    }
+
+    /**
+     * Return the artist property as String
+     * @return string
+     */
+    public String getArtist()
+    {
+        ProperNameType tt = (ProperNameType) getProperty(ARTIST);
+        return tt == null ? null : tt.getStringValue();
+    }
+
+    /**
+     * Set the name of the artist
+     * @param text
+     */
+    public void setArtist(String text)
+    {
+        addProperty(createTextType(ARTIST, text));
+    }
+
+
+    /**
+     * Return the image description property object
+     * @return the image description property
+     */
+    public ArrayProperty getImageDescriptionProperty()
+    {
+        return (ArrayProperty) getProperty(IMAGE_DESCRIPTION);
+    }
+
+    /**
+     * Return the list of language existing for image description
+     * @return a list of languages
+     */
+    public List<String> getImageDescriptionLanguages()
+    {
+        return getUnqualifiedLanguagePropertyLanguagesValue(IMAGE_DESCRIPTION);
+    }
+
+    /**
+     * Return the image description value as String in expected language
+     *
+     * @param lang expected language
+     * @return image description value
+     */
+    public String getImageDescription(String lang)
+    {
+        return getUnqualifiedLanguagePropertyValue(IMAGE_DESCRIPTION, lang);
+    }
+
+    /**
+     * Return the image description as String in default language
+     * @return image description value
+     */
+    public String getImageDescription()
+    {
+        return getImageDescription(null);
+    }
+
+    /**
+     * Add a image description value for a specified language
+     * @param lang language of the image description
+     * @param value image description text
+     */
+    public void addImageDescription(String lang, String value)
+    {
+        setUnqualifiedLanguagePropertyValue(IMAGE_DESCRIPTION, lang, value);
+    }
+
+    /**
+     * Return the copyright property object
+     * @return the copyright property
+     */
+    public ArrayProperty getCopyRightProperty()
+    {
+        return (ArrayProperty) getProperty(COPYRIGHT);
+    }
+
+    /**
+     * Return the list of language existing for copyright
+     * @return a list of languages
+     */
+    public List<String> getCopyRightLanguages()
+    {
+        return getUnqualifiedLanguagePropertyLanguagesValue(COPYRIGHT);
+    }
+
+    /**
+     * Return the copyright value as String in expected language
+     *
+     * @param lang expected language
+     * @return copyright value
+     */
+    public String getCopyRight(String lang)
+    {
+        return getUnqualifiedLanguagePropertyValue(COPYRIGHT, lang);
+    }
+
+    /**
+     * Return the copyright value as String in default language
+     * @return copyright value
+     */
+    public String getCopyRight()
+    {
+        return getCopyRight(null);
+    }
+
+    /**
+     * Add a copyright value for a specified language
+     * @param lang language of the copyright
+     * @param value copyright text
+     */
+    public void addCopyright(String lang, String value)
+    {
+        setUnqualifiedLanguagePropertyValue(COPYRIGHT, lang, value);
+    }
+
+
+}

Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPBasicSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPBasicSchema.java?rev=1549002&r1=1549001&r2=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPBasicSchema.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPBasicSchema.java Sun Dec  8 07:47:26 2013
@@ -83,6 +83,9 @@ public class XMPBasicSchema extends XMPS
     @PropertyType(type = Types.Thumbnail, card = Cardinality.Alt)
     public static final String THUMBNAILS = "Thumbnails";
 
+    @PropertyType(type= Types.Date, card = Cardinality.Simple)
+    public static final String MODIFIER_DATE = "ModifierDate";
+
     private ArrayProperty altThumbs;
 
     /**
@@ -298,6 +301,12 @@ public class XMPBasicSchema extends XMPS
         setModifyDateProperty(tt);
     }
 
+    public void setModifierDate(Calendar date)
+    {
+        DateType tt = (DateType) instanciateSimple(MODIFIER_DATE, date);
+        setModifierDateProperty(tt);
+    }
+
     /**
      * Set the ModifyDate property
      * 
@@ -309,6 +318,11 @@ public class XMPBasicSchema extends XMPS
         addProperty(date);
     }
 
+    public void setModifierDateProperty(DateType date)
+    {
+        addProperty(date);
+    }
+
     /**
      * Set a short informal name for the resource
      * 
@@ -528,6 +542,11 @@ public class XMPBasicSchema extends XMPS
         return (DateType) getProperty(MODIFYDATE);
     }
 
+    public DateType getModifierDateProperty()
+    {
+        return (DateType) getProperty(MODIFIER_DATE);
+    }
+
     /**
      * Get the ModifyDate property value
      * 
@@ -544,6 +563,17 @@ public class XMPBasicSchema extends XMPS
 
     }
 
+    public Calendar getModifierDate()
+    {
+        DateType modifierDate = (DateType) getProperty(MODIFIER_DATE);
+        if (modifierDate != null)
+        {
+            return modifierDate.getValue();
+        }
+        return null;
+
+    }
+
     /**
      * Get the Nickname property
      * 

Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPMediaManagementSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPMediaManagementSchema.java?rev=1549002&r1=1549001&r2=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPMediaManagementSchema.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPMediaManagementSchema.java Sun Dec  8 07:47:26 2013
@@ -24,16 +24,7 @@ package org.apache.xmpbox.schema;
 import java.util.List;
 
 import org.apache.xmpbox.XMPMetadata;
-import org.apache.xmpbox.type.AgentNameType;
-import org.apache.xmpbox.type.ArrayProperty;
-import org.apache.xmpbox.type.Cardinality;
-import org.apache.xmpbox.type.PropertyType;
-import org.apache.xmpbox.type.RenditionClassType;
-import org.apache.xmpbox.type.ResourceRefType;
-import org.apache.xmpbox.type.StructuredType;
-import org.apache.xmpbox.type.TextType;
-import org.apache.xmpbox.type.Types;
-import org.apache.xmpbox.type.URIType;
+import org.apache.xmpbox.type.*;
 
 /**
  * Representation of XMPMediaManagement Schema
@@ -45,6 +36,16 @@ import org.apache.xmpbox.type.URIType;
 public class XMPMediaManagementSchema extends XMPSchema
 {
 
+    @PropertyType(type = Types.URL, card = Cardinality.Simple)
+    public static final String LAST_URL = "LastURL";
+
+
+    @PropertyType(type = Types.ResourceRef, card = Cardinality.Simple)
+    public static final String RENDITION_OF = "RenditionOf";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Simple)
+    public static final String SAVE_ID = "SaveID";
+
     /**
      * Constructor of XMPMediaManagement Schema with preferred prefix
      * 
@@ -126,6 +127,8 @@ public class XMPMediaManagementSchema ex
         addProperty(tt);
     }
 
+
+
     /**
      * Get DocumentId property
      * 
@@ -147,6 +150,98 @@ public class XMPMediaManagementSchema ex
         return tt != null ? tt.getStringValue() : null;
     }
 
+    /**
+     * Set DocumentId value
+     *
+     * @param url
+     *            DocumentId value to set
+     */
+    public void setLastURL(String url)
+    {
+        URLType tt = (URLType) instanciateSimple(LAST_URL, url);
+        setLastURLProperty(tt);
+    }
+
+    /**
+     * Set DocumentId Property
+     *
+     * @param tt
+     *            DocumentId Property to set
+     */
+    public void setLastURLProperty(URLType tt)
+    {
+        addProperty(tt);
+    }
+
+
+
+    /**
+     * Get DocumentId property
+     *
+     * @return DocumentId property
+     */
+    public URLType getLastURLProperty()
+    {
+        return (URLType) getProperty(LAST_URL);
+    }
+
+    /**
+     * Get DocumentId value
+     *
+     * @return DocumentId value
+     */
+    public String getLastURL()
+    {
+        URLType tt = getLastURLProperty();
+        return tt != null ? tt.getStringValue() : null;
+    }
+
+    /**
+     * Set DocumentId value
+     *
+     * @param url
+     *            DocumentId value to set
+     */
+    public void setSaveId(Integer url)
+    {
+        IntegerType tt = (IntegerType) instanciateSimple(SAVE_ID, url);
+        setSaveIDProperty(tt);
+    }
+
+    /**
+     * Set DocumentId Property
+     *
+     * @param tt
+     *            DocumentId Property to set
+     */
+    public void setSaveIDProperty(IntegerType tt)
+    {
+        addProperty(tt);
+    }
+
+
+
+    /**
+     * Get DocumentId property
+     *
+     * @return DocumentId property
+     */
+    public IntegerType getSaveIDProperty()
+    {
+        return (IntegerType) getProperty(SAVE_ID);
+    }
+
+    /**
+     * Get DocumentId value
+     *
+     * @return DocumentId value
+     */
+    public Integer getSaveID()
+    {
+        IntegerType tt = getSaveIDProperty();
+        return tt != null ? tt.getValue() : null;
+    }
+
     // --------------------------------------- Manager
     // ----------------------------
 
@@ -156,7 +251,7 @@ public class XMPMediaManagementSchema ex
     /**
      * Set Manager value
      * 
-     * @param url
+     * @param value
      *            Manager value to set
      */
     public void setManager(String value)
@@ -256,7 +351,7 @@ public class XMPMediaManagementSchema ex
     /**
      * Set ManageUI value
      * 
-     * @param url
+     * @param value
      *            ManageUI value to set
      */
     public void setManageUI(String value)
@@ -306,7 +401,7 @@ public class XMPMediaManagementSchema ex
     /**
      * Set ManagerVariant value
      * 
-     * @param url
+     * @param value
      *            ManagerVariant value to set
      */
     public void setManagerVariant(String value)
@@ -356,7 +451,7 @@ public class XMPMediaManagementSchema ex
     /**
      * Set InstanceId value
      * 
-     * @param url
+     * @param value
      *            InstanceId value to set
      */
     public void setInstanceID(String value)
@@ -418,7 +513,7 @@ public class XMPMediaManagementSchema ex
     /**
      * set ManageFrom Property
      * 
-     * @param tt
+     * @param resourceRef
      *            ManageFrom Property to set
      */
     public void setManagedFromProperty(ResourceRefType resourceRef)
@@ -505,7 +600,7 @@ public class XMPMediaManagementSchema ex
     /**
      * Set renditionClass Value
      * 
-     * @param url
+     * @param value
      *            renditionClass Value to set
      */
     public void setRenditionClass(String value)
@@ -605,7 +700,7 @@ public class XMPMediaManagementSchema ex
     /**
      * Set VersionId value
      * 
-     * @param url
+     * @param value
      *            VersionId value to set
      */
     public void setVersionID(String value)

Added: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPageTextSchema.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPageTextSchema.java?rev=1549002&view=auto
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPageTextSchema.java (added)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/schema/XMPageTextSchema.java Sun Dec  8 07:47:26 2013
@@ -0,0 +1,52 @@
+/*****************************************************************************
+ *
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+package org.apache.xmpbox.schema;
+
+import org.apache.xmpbox.XMPMetadata;
+import org.apache.xmpbox.type.PropertyType;
+import org.apache.xmpbox.type.StructuredType;
+import org.apache.xmpbox.type.Types;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: yugui
+ * Date: 07/12/13
+ * Time: 10:53
+ * To change this template use File | Settings | File Templates.
+ */
+@StructuredType(preferedPrefix = "xmpTPg",namespace = "http://ns.adobe.com/xap/1.0/t/pg/")
+public class XMPageTextSchema extends XMPSchema {
+
+    @PropertyType(type = Types.Dimensions)
+    public static final String MAX_PAGE_SIZE = "MaxPageSize";
+
+    @PropertyType(type = Types.Integer)
+    public static final String N_PAGES = "NPages";
+
+
+    public XMPageTextSchema(XMPMetadata metadata) {
+        super(metadata);
+    }
+
+    public XMPageTextSchema(XMPMetadata metadata, String prefix) {
+        super(metadata, prefix);
+    }
+}

Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/AbstractStructuredType.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/AbstractStructuredType.java?rev=1549002&r1=1549001&r2=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/AbstractStructuredType.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/AbstractStructuredType.java Sun Dec  8 07:47:26 2013
@@ -114,7 +114,7 @@ public abstract class AbstractStructured
 
     public final String getPreferedPrefix()
     {
-        return prefix;
+        return preferedPrefix;
     }
 
     protected void addSimpleProperty(String propertyName, Object value)

Added: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/CFAPatternType.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/CFAPatternType.java?rev=1549002&view=auto
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/CFAPatternType.java (added)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/CFAPatternType.java Sun Dec  8 07:47:26 2013
@@ -0,0 +1,43 @@
+/*****************************************************************************
+ *
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+package org.apache.xmpbox.type;
+
+import org.apache.xmpbox.XMPMetadata;
+
+/**
+ */
+@StructuredType(preferedPrefix = "exif",namespace = "http://ns.adobe.com/exif/1.0/")
+public class CFAPatternType extends AbstractStructuredType{
+
+    @PropertyType(type = Types.Integer)
+    public static final String COLUMNS = "Columns";
+
+    @PropertyType(type = Types.Integer)
+    public static final String ROWS = "Rows";
+
+    @PropertyType(type = Types.Integer, card = Cardinality.Seq)
+    public static final String VALUES = "Values";
+
+    public CFAPatternType(XMPMetadata metadata) {
+        super(metadata);
+    }
+
+}

Added: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/DeviceSettingsType.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/DeviceSettingsType.java?rev=1549002&view=auto
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/DeviceSettingsType.java (added)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/DeviceSettingsType.java Sun Dec  8 07:47:26 2013
@@ -0,0 +1,43 @@
+/*****************************************************************************
+ *
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+package org.apache.xmpbox.type;
+
+import org.apache.xmpbox.XMPMetadata;
+
+/**
+ */
+@StructuredType(preferedPrefix = "exif",namespace = "http://ns.adobe.com/exif/1.0/")
+public class DeviceSettingsType extends AbstractStructuredType{
+
+    @PropertyType(type = Types.Integer)
+    public static final String COLUMNS = "Columns";
+
+    @PropertyType(type = Types.Integer)
+    public static final String ROWS = "Rows";
+
+    @PropertyType(type = Types.Text, card = Cardinality.Seq)
+    public static final String SETTINGS = "Settings";
+
+    public DeviceSettingsType(XMPMetadata metadata) {
+        super(metadata);
+    }
+
+}

Added: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/DimensionsType.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/DimensionsType.java?rev=1549002&view=auto
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/DimensionsType.java (added)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/DimensionsType.java Sun Dec  8 07:47:26 2013
@@ -0,0 +1,43 @@
+/*****************************************************************************
+ *
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+package org.apache.xmpbox.type;
+
+import org.apache.xmpbox.XMPMetadata;
+
+/**
+ */
+@StructuredType(preferedPrefix = "stDim",namespace = "http://ns.adobe.com/xap/1.0/sType/Dimensions#")
+public class DimensionsType extends AbstractStructuredType{
+
+    @PropertyType(type = Types.Real)
+    public static final String H = "h";
+
+    @PropertyType(type = Types.Real)
+    public static final String W = "w";
+
+    @PropertyType(type = Types.Text)
+    public static final String UNIT = "unit";
+
+    public DimensionsType(XMPMetadata metadata) {
+        super(metadata);
+    }
+
+}

Added: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/FlashType.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/FlashType.java?rev=1549002&view=auto
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/FlashType.java (added)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/FlashType.java Sun Dec  8 07:47:26 2013
@@ -0,0 +1,49 @@
+/*****************************************************************************
+ *
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+package org.apache.xmpbox.type;
+
+import org.apache.xmpbox.XMPMetadata;
+
+/**
+ */
+@StructuredType(preferedPrefix = "exif",namespace = "http://ns.adobe.com/exif/1.0/")
+public class FlashType extends AbstractStructuredType{
+
+    @PropertyType(type = Types.Boolean)
+    public static final String FIRED = "Fired";
+
+    @PropertyType(type = Types.Boolean)
+    public static final String FUNCTION = "Function";
+
+    @PropertyType(type = Types.Boolean)
+    public static final String RED_EYE_MODE = "RedEyeMode";
+
+    @PropertyType(type = Types.Integer)
+    public static final String MODE = "Mode";
+
+    @PropertyType(type = Types.Integer)
+    public static final String RETURN = "Return";
+
+    public FlashType(XMPMetadata metadata) {
+        super(metadata);
+    }
+
+}

Copied: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/GPSCoordinateType.java (from r1546696, pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/GUIDType.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/GPSCoordinateType.java?p2=pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/GPSCoordinateType.java&p1=pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/GUIDType.java&r1=1546696&r2=1549002&rev=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/GUIDType.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/GPSCoordinateType.java Sun Dec  8 07:47:26 2013
@@ -23,10 +23,10 @@ package org.apache.xmpbox.type;
 
 import org.apache.xmpbox.XMPMetadata;
 
-public class GUIDType extends TextType
+public class GPSCoordinateType extends TextType
 {
 
-    public GUIDType(XMPMetadata metadata, String namespaceURI, String prefix, String propertyName, Object value)
+    public GPSCoordinateType(XMPMetadata metadata, String namespaceURI, String prefix, String propertyName, Object value)
     {
         super(metadata, namespaceURI, prefix, propertyName, value);
     }

Added: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/OECFType.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/OECFType.java?rev=1549002&view=auto
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/OECFType.java (added)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/OECFType.java Sun Dec  8 07:47:26 2013
@@ -0,0 +1,47 @@
+/*****************************************************************************
+ *
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+package org.apache.xmpbox.type;
+
+import org.apache.xmpbox.XMPMetadata;
+
+/**
+ */
+@StructuredType(preferedPrefix = "exif",namespace = "http://ns.adobe.com/exif/1.0/")
+public class OECFType extends AbstractStructuredType {
+
+    @PropertyType(type = Types.Integer)
+    public static final String COLUMNS = "Columns";
+
+    @PropertyType(type = Types.Text,card = Cardinality.Seq)
+    public static final String NAMES = "Names";
+
+    @PropertyType(type = Types.Integer)
+    public static final String ROWS = "Rows";
+
+    @PropertyType(type = Types.Real,card = Cardinality.Seq)
+    public static final String VALUES = "Values";
+
+
+    public OECFType(XMPMetadata metadata) {
+        super(metadata);
+    }
+
+}

Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/PropertyType.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/PropertyType.java?rev=1549002&r1=1549001&r2=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/PropertyType.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/PropertyType.java Sun Dec  8 07:47:26 2013
@@ -47,6 +47,6 @@ public @interface PropertyType
 
     Types type();
 
-    Cardinality card();
+    Cardinality card() default Cardinality.Simple;
 
 }

Copied: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/RationalType.java (from r1546696, pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/URLType.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/RationalType.java?p2=pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/RationalType.java&p1=pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/URLType.java&r1=1546696&r2=1549002&rev=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/URLType.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/RationalType.java Sun Dec  8 07:47:26 2013
@@ -23,10 +23,10 @@ package org.apache.xmpbox.type;
 
 import org.apache.xmpbox.XMPMetadata;
 
-public class URLType extends TextType
+public class RationalType extends TextType
 {
 
-    public URLType(XMPMetadata metadata, String namespaceURI, String prefix, String propertyName, Object value)
+    public RationalType(XMPMetadata metadata, String namespaceURI, String prefix, String propertyName, Object value)
     {
         super(metadata, namespaceURI, prefix, propertyName, value);
     }

Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/TypeMapping.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/TypeMapping.java?rev=1549002&r1=1549001&r2=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/TypeMapping.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/TypeMapping.java Sun Dec  8 07:47:26 2013
@@ -32,18 +32,7 @@ import java.util.Map;
 import javax.xml.namespace.QName;
 
 import org.apache.xmpbox.XMPMetadata;
-import org.apache.xmpbox.schema.AdobePDFSchema;
-import org.apache.xmpbox.schema.DublinCoreSchema;
-import org.apache.xmpbox.schema.PDFAExtensionSchema;
-import org.apache.xmpbox.schema.PDFAIdentificationSchema;
-import org.apache.xmpbox.schema.PhotoshopSchema;
-import org.apache.xmpbox.schema.XMPBasicJobTicketSchema;
-import org.apache.xmpbox.schema.XMPBasicSchema;
-import org.apache.xmpbox.schema.XMPMediaManagementSchema;
-import org.apache.xmpbox.schema.XMPRightsManagementSchema;
-import org.apache.xmpbox.schema.XMPSchema;
-import org.apache.xmpbox.schema.XMPSchemaFactory;
-import org.apache.xmpbox.schema.XmpSchemaException;
+import org.apache.xmpbox.schema.*;
 
 public final class TypeMapping
 {
@@ -105,6 +94,9 @@ public final class TypeMapping
         addNameSpace(XMPRightsManagementSchema.class);
         addNameSpace(PhotoshopSchema.class);
         addNameSpace(XMPBasicJobTicketSchema.class);
+        addNameSpace(ExifSchema.class);
+        addNameSpace(TiffSchema.class);
+        addNameSpace(XMPageTextSchema.class);
 
     }
 
@@ -318,7 +310,7 @@ public final class TypeMapping
     /**
      * Give type of specified property in specified schema (given by its namespaceURI)
      * 
-     * @param prop
+     * @param name
      *            the property Qualified Name
      * @return Property type declared for namespace specified, null if unknown
      */

Modified: pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/Types.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/Types.java?rev=1549002&r1=1549001&r2=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/Types.java (original)
+++ pdfbox/trunk/xmpbox/src/main/java/org/apache/xmpbox/type/Types.java Sun Dec  8 07:47:26 2013
@@ -28,19 +28,22 @@ public enum Types
 
     // basic
     Text(true, null, TextType.class), Date(true, null, DateType.class), Boolean(true, null, BooleanType.class), Integer(
-            true, null, IntegerType.class), Real(true, null, RealType.class),
+            true, null, IntegerType.class), Real(true, null, RealType.class),GPSCoordinate(true,Text,TextType.class),
 
     ProperName(true, Text, ProperNameType.class), Locale(true, Text, LocaleType.class), AgentName(true, Text,
             AgentNameType.class), GUID(true, Text, GUIDType.class), XPath(true, Text, XPathType.class), Part(true,
             Text, PartType.class), URL(true, Text, URLType.class), URI(true, Text, URIType.class), Choice(true, Text,
             ChoiceType.class), MIMEType(true, Text, MIMEType.class), LangAlt(true, Text, TextType.class), RenditionClass(
-            true, Text, RenditionClassType.class),
+            true, Text, RenditionClassType.class), Rational(true,Text,RationalType.class),
 
     Layer(false, Structured, LayerType.class), Thumbnail(false, Structured, ThumbnailType.class), ResourceEvent(false,
             Structured, ResourceEventType.class), ResourceRef(false, Structured, ResourceRefType.class), Version(false,
             Structured, VersionType.class), PDFASchema(false, Structured, PDFASchemaType.class), PDFAField(false,
             Structured, PDFAFieldType.class), PDFAProperty(false, Structured, PDFAPropertyType.class), PDFAType(false,
-            Structured, PDFATypeType.class), Job(false, Structured, JobType.class);
+            Structured, PDFATypeType.class), Job(false, Structured, JobType.class),OECF(false,Structured,
+            OECFType.class), CFAPattern(false,Structured, CFAPatternType.class),DeviceSettings(false,Structured,
+            DeviceSettingsType.class),Flash(false,Structured,FlashType.class),Dimensions(false,Structured,
+            DimensionsType.class);
 
     // For defined types
 

Added: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/TestValidatePermitedMetadata.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/TestValidatePermitedMetadata.java?rev=1549002&view=auto
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/TestValidatePermitedMetadata.java (added)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/TestValidatePermitedMetadata.java Sun Dec  8 07:47:26 2013
@@ -0,0 +1,115 @@
+/*****************************************************************************
+ *
+ * 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
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+package org.apache.xmpbox;
+
+import org.apache.xmpbox.schema.XMPSchema;
+import static org.junit.Assert.*;
+
+import org.apache.xmpbox.schema.XMPSchemaFactory;
+import org.apache.xmpbox.type.PropertyType;
+import org.apache.xmpbox.type.TypeMapping;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+@RunWith(Parameterized.class)
+public class TestValidatePermitedMetadata {
+
+    @Parameters(name="{0} {1} {2}")
+    public static Collection<Object[]> initializeParameters() throws Exception
+    {
+        List<Object[]> params = new ArrayList<Object[]>();
+        InputStream is =  TestValidatePermitedMetadata.class.getResourceAsStream("/permited_metadata.txt");
+        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+        String line = reader.readLine();
+        while (line!=null) {
+            if (line.startsWith("http://")) {
+                // this is a line to handle
+                int pos = line.lastIndexOf(':');
+                int spos = line.lastIndexOf('/',pos);
+                String namespace = line.substring(0,spos+1);
+                String preferred = line.substring(spos+1,pos);
+                String fieldname = line.substring(pos+1);
+                params.add(new String [] {namespace, preferred, fieldname});
+            } // else skip line
+            // next line
+            line = reader.readLine();
+        }
+        return params;
+    }
+
+    private String namespace;
+
+    private String fieldname;
+
+    private String preferred;
+
+    public TestValidatePermitedMetadata (String ns, String prf, String fn) {
+        this.namespace = ns;
+        this.preferred = prf;
+        this.fieldname = fn;
+    }
+    @Test
+    public void checkExistence () throws Exception {
+        // ensure schema exists
+        XMPMetadata xmpmd = new XMPMetadata();
+        TypeMapping mapping = new TypeMapping(xmpmd);
+        XMPSchemaFactory factory = mapping.getSchemaFactory(namespace);
+        assertNotNull("Schema not existing: " + namespace, factory);
+        // ensure preferred is as expected
+        XMPSchema schema = factory.createXMPSchema(xmpmd,"aa");
+        assertEquals(preferred,schema.getPreferedPrefix());
+        // ensure field is defined
+        boolean found = false;
+        Class<?> clz  = schema.getClass();
+        for (Field dfield : clz.getDeclaredFields()) {
+            PropertyType ptype = dfield.getAnnotation(PropertyType.class);
+            if (ptype!=null) {
+                // is a field definition
+                if (String.class.equals(dfield.getType())) {
+                    String value = (String) dfield.get(clz);
+                    if (fieldname.equals(value)) {
+                        // found the field defining
+                        found = true;
+                        break;
+                    }
+                } else {
+                    // All field declaration are string
+                    throw new IllegalArgumentException("Should be a string : "+dfield.getName());
+                }
+
+
+            }
+        }
+        String msg = String.format("Did not find field definition for '%s' in %s (%s)",fieldname,clz.getSimpleName(),namespace);
+        assertTrue(msg,found);
+    }
+
+}

Copied: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/TestExifXmp.java (from r1546696, 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/schema/TestExifXmp.java?p2=pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/TestExifXmp.java&p1=pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/TestXMPWithDefinedSchemas.java&r1=1546696&r2=1549002&rev=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/TestXMPWithDefinedSchemas.java (original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/TestExifXmp.java Sun Dec  8 07:47:26 2013
@@ -19,51 +19,56 @@
  * 
  ****************************************************************************/
 
-package org.apache.xmpbox;
-
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
+package org.apache.xmpbox.schema;
 
+import org.apache.xmpbox.XMPMetadata;
+import org.apache.xmpbox.type.JobType;
+import org.apache.xmpbox.type.OECFType;
+import org.apache.xmpbox.type.TextType;
+import org.apache.xmpbox.type.TypeMapping;
 import org.apache.xmpbox.xml.DomXmpParser;
+import org.apache.xmpbox.xml.XmpParsingException;
+import org.apache.xmpbox.xml.XmpSerializer;
+import org.junit.Assert;
+import org.junit.Ignore;
 import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
 
-@RunWith(Parameterized.class)
-public class TestXMPWithDefinedSchemas
+import java.io.InputStream;
+
+public class TestExifXmp
 {
 
-    @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)
+    @Test
+    public void testNonStrict() throws Exception
     {
-        this.path = path;
+        InputStream is = this.getClass().getResourceAsStream("/validxmp/exif.xmp");
+
+        DomXmpParser builder = new DomXmpParser();
+        builder.setStrictParsing(false);
+        XMPMetadata rxmp = builder.parse(is);
+        ExifSchema schema = (ExifSchema)rxmp.getSchema(ExifSchema.class);
+        TextType ss = (TextType)schema.getProperty(ExifSchema.SPECTRAL_SENSITIVITY);
+        Assert.assertNotNull(ss);
+        Assert.assertEquals("spectral sens value",ss.getValue());
     }
 
     @Test
-    public void main() throws Exception
-    {
+    public void testGenerate () throws Exception {
+        XMPMetadata metadata = XMPMetadata.createXMPMetadata();
+        TypeMapping tmapping = metadata.getTypeMapping();
+        ExifSchema exif = new ExifSchema(metadata);
+        metadata.addSchema(exif);
+        OECFType oecf = new OECFType(metadata);
+        oecf.addProperty(tmapping.createInteger(oecf.getNamespace(), oecf.getPrefix(), OECFType.COLUMNS, 14));
+        oecf.setPropertyName(ExifSchema.OECF);
+        exif.addProperty(oecf);
 
-        InputStream is = this.getClass().getResourceAsStream(path);
+        XmpSerializer serializer = new XmpSerializer();
+        serializer.serialize(metadata,System.out,false);
 
-        DomXmpParser builder = new DomXmpParser();
-        XMPMetadata rxmp = builder.parse(is);
 
-    }
 
+    }
 }

Modified: pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/XMPMediaManagementTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/XMPMediaManagementTest.java?rev=1549002&r1=1549001&r2=1549002&view=diff
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/XMPMediaManagementTest.java (original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/XMPMediaManagementTest.java Sun Dec  8 07:47:26 2013
@@ -46,7 +46,7 @@ public class XMPMediaManagementTest exte
         schemaClass = XMPMediaManagementSchema.class;
     }
 
-    @Parameters
+    @Parameters(name = "{0} {1} '{2}'")
     public static Collection<Object[]> initializeParameters() throws Exception
     {
         List<Object[]> data = new ArrayList<Object[]>();

Added: pdfbox/trunk/xmpbox/src/test/resources/permited_metadata.txt
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/resources/permited_metadata.txt?rev=1549002&view=auto
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/resources/permited_metadata.txt (added)
+++ pdfbox/trunk/xmpbox/src/test/resources/permited_metadata.txt Sun Dec  8 07:47:26 2013
@@ -0,0 +1,205 @@
+# 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
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# creation of this file based on :
+# http://www.adobe.com/content/dam/Adobe/en/devnet/livecycle/pdfs/readercomp_pdfa.pdf
+
+
+# Not managed MD
+# http://ns.adobe.com/xmp/Identifier/qual/1.0/xmpidq:Scheme
+# http://ns.adobe.com/exif/1.0/exif:MakerNote
+
+
+# managed MD
+http://purl.org/dc/elements/1.1/dc:contributor
+http://purl.org/dc/elements/1.1/dc:coverage
+http://purl.org/dc/elements/1.1/dc:creator
+http://purl.org/dc/elements/1.1/dc:date
+http://purl.org/dc/elements/1.1/dc:description
+http://purl.org/dc/elements/1.1/dc:format
+http://purl.org/dc/elements/1.1/dc:identifier
+http://purl.org/dc/elements/1.1/dc:language
+http://purl.org/dc/elements/1.1/dc:publisher
+http://purl.org/dc/elements/1.1/dc:relation
+http://purl.org/dc/elements/1.1/dc:rights
+http://purl.org/dc/elements/1.1/dc:source
+http://purl.org/dc/elements/1.1/dc:subject
+http://purl.org/dc/elements/1.1/dc:title
+http://purl.org/dc/elements/1.1/dc:type
+http://ns.adobe.com/xap/1.0/xmp:Advisory
+http://ns.adobe.com/xap/1.0/xmp:BaseURL
+http://ns.adobe.com/xap/1.0/xmp:CreateDate
+http://ns.adobe.com/xap/1.0/xmp:CreatorTool
+http://ns.adobe.com/xap/1.0/xmp:Identifier
+http://ns.adobe.com/xap/1.0/xmp:MetadataDate
+http://ns.adobe.com/xap/1.0/xmp:ModifierDate
+http://ns.adobe.com/xap/1.0/xmp:Nickname
+http://ns.adobe.com/xap/1.0/xmp:Thumbnails
+http://ns.adobe.com/xap/1.0/rights/xmpRights:Certificate
+http://ns.adobe.com/xap/1.0/rights/xmpRights:Marked
+http://ns.adobe.com/xap/1.0/rights/xmpRights:Owner
+http://ns.adobe.com/xap/1.0/rights/xmpRights:UsageTerms
+http://ns.adobe.com/xap/1.0/rights/xmpRights:WebStatement
+
+http://ns.adobe.com/xap/1.0/mm/xmpMM:DerivedFrom
+http://ns.adobe.com/xap/1.0/mm/xmpMM:DocumentID
+http://ns.adobe.com/xap/1.0/mm/xmpMM:History
+http://ns.adobe.com/xap/1.0/mm/xmpMM:ManagedFrom
+http://ns.adobe.com/xap/1.0/mm/xmpMM:Manager
+http://ns.adobe.com/xap/1.0/mm/xmpMM:ManageTo
+http://ns.adobe.com/xap/1.0/mm/xmpMM:ManageUI
+http://ns.adobe.com/xap/1.0/mm/xmpMM:ManagerVariant
+http://ns.adobe.com/xap/1.0/mm/xmpMM:RenditionClass
+http://ns.adobe.com/xap/1.0/mm/xmpMM:RenditionParams
+http://ns.adobe.com/xap/1.0/mm/xmpMM:VersionID
+http://ns.adobe.com/xap/1.0/mm/xmpMM:Versions
+http://ns.adobe.com/xap/1.0/mm/xmpMM:LastURL
+http://ns.adobe.com/xap/1.0/mm/xmpMM:RenditionOf
+http://ns.adobe.com/xap/1.0/mm/xmpMM:SaveID
+http://ns.adobe.com/xap/1.0/bj/xmpBJ:JobRef
+http://ns.adobe.com/pdf/1.3/pdf:Keywords
+http://ns.adobe.com/pdf/1.3/pdf:PDFVersion
+http://ns.adobe.com/pdf/1.3/pdf:Producer
+
+http://ns.adobe.com/xap/1.0/t/pg/xmpTPg:MaxPageSize
+http://ns.adobe.com/xap/1.0/t/pg/xmpTPg:NPages
+
+
+# in original file ns was http://ns.adobe.com/pdf/photoshop/1.0/
+# replaced by http://ns.adobe.com/photoshop/1.0/
+http://ns.adobe.com/photoshop/1.0/photoshop:AuthorsPosition
+http://ns.adobe.com/photoshop/1.0/photoshop:CaptionWriter
+http://ns.adobe.com/photoshop/1.0/photoshop:Category
+http://ns.adobe.com/photoshop/1.0/photoshop:City
+http://ns.adobe.com/photoshop/1.0/photoshop:Country
+http://ns.adobe.com/photoshop/1.0/photoshop:Credit
+http://ns.adobe.com/photoshop/1.0/photoshop:DateCreated
+http://ns.adobe.com/photoshop/1.0/photoshop:Headline
+http://ns.adobe.com/photoshop/1.0/photoshop:Instructions
+http://ns.adobe.com/photoshop/1.0/photoshop:Source
+http://ns.adobe.com/photoshop/1.0/photoshop:State
+http://ns.adobe.com/photoshop/1.0/photoshop:SupplementalCategories
+http://ns.adobe.com/photoshop/1.0/photoshop:TransmissionReference
+http://ns.adobe.com/photoshop/1.0/photoshop:Urgency
+
+# Tiff namespace
+http://ns.adobe.com/tiff/1.0/tiff:ImageWidth
+http://ns.adobe.com/tiff/1.0/tiff:ImageLength
+http://ns.adobe.com/tiff/1.0/tiff:BitsPerSample
+http://ns.adobe.com/tiff/1.0/tiff:Compression
+http://ns.adobe.com/tiff/1.0/tiff:PhotometricInterpretation
+http://ns.adobe.com/tiff/1.0/tiff:Orientation
+http://ns.adobe.com/tiff/1.0/tiff:SamplesPerPixel
+http://ns.adobe.com/tiff/1.0/tiff:PlanarConfiguration
+http://ns.adobe.com/tiff/1.0/tiff:YCbCrSubSampling
+http://ns.adobe.com/tiff/1.0/tiff:YCbCrPositioning
+http://ns.adobe.com/tiff/1.0/tiff:XResolution
+http://ns.adobe.com/tiff/1.0/tiff:YResolution
+http://ns.adobe.com/tiff/1.0/tiff:ResolutionUnit
+http://ns.adobe.com/tiff/1.0/tiff:TransferFunction
+http://ns.adobe.com/tiff/1.0/tiff:WhitePoint
+http://ns.adobe.com/tiff/1.0/tiff:PrimaryChromaticities
+http://ns.adobe.com/tiff/1.0/tiff:YCbCrCoefficients
+http://ns.adobe.com/tiff/1.0/tiff:ReferenceBlackWhite
+http://ns.adobe.com/tiff/1.0/tiff:DateTime
+http://ns.adobe.com/tiff/1.0/tiff:ImageDescription
+http://ns.adobe.com/tiff/1.0/tiff:Make
+http://ns.adobe.com/tiff/1.0/tiff:Model
+http://ns.adobe.com/tiff/1.0/tiff:Software
+http://ns.adobe.com/tiff/1.0/tiff:Artist
+http://ns.adobe.com/tiff/1.0/tiff:Copyright
+
+# Exif namespace
+http://ns.adobe.com/exif/1.0/exif:ExifVersion
+http://ns.adobe.com/exif/1.0/exif:FlashpixVersion
+http://ns.adobe.com/exif/1.0/exif:ColorSpace
+http://ns.adobe.com/exif/1.0/exif:ComponentsConfiguration
+http://ns.adobe.com/exif/1.0/exif:CompressedBitsPerPixel
+http://ns.adobe.com/exif/1.0/exif:PixelXDimension
+http://ns.adobe.com/exif/1.0/exif:PixelYDimension
+http://ns.adobe.com/exif/1.0/exif:UserComment
+http://ns.adobe.com/exif/1.0/exif:RelatedSoundFile
+http://ns.adobe.com/exif/1.0/exif:DateTimeOriginal
+http://ns.adobe.com/exif/1.0/exif:DateTimeDigitized
+http://ns.adobe.com/exif/1.0/exif:ExposureTime
+http://ns.adobe.com/exif/1.0/exif:FNumber
+http://ns.adobe.com/exif/1.0/exif:ExposureProgram
+http://ns.adobe.com/exif/1.0/exif:SpectralSensitivity
+http://ns.adobe.com/exif/1.0/exif:ISOSpeedRatings
+http://ns.adobe.com/exif/1.0/exif:OECF
+http://ns.adobe.com/exif/1.0/exif:ShutterSpeedValue
+http://ns.adobe.com/exif/1.0/exif:ApertureValue
+http://ns.adobe.com/exif/1.0/exif:BrightnessValue
+http://ns.adobe.com/exif/1.0/exif:ExposureBiasValue
+http://ns.adobe.com/exif/1.0/exif:MaxApertureValue
+http://ns.adobe.com/exif/1.0/exif:SubjectDistance
+http://ns.adobe.com/exif/1.0/exif:MeteringMode
+http://ns.adobe.com/exif/1.0/exif:LightSource
+http://ns.adobe.com/exif/1.0/exif:FocalLength
+http://ns.adobe.com/exif/1.0/exif:SubjectArea
+http://ns.adobe.com/exif/1.0/exif:FlashEnergy
+http://ns.adobe.com/exif/1.0/exif:FocalPlaneXResolution
+http://ns.adobe.com/exif/1.0/exif:FocalPlaneYResolution
+http://ns.adobe.com/exif/1.0/exif:FocalPlaneResolutionUnit
+http://ns.adobe.com/exif/1.0/exif:SubjectLocation
+http://ns.adobe.com/exif/1.0/exif:ExposureIndex
+http://ns.adobe.com/exif/1.0/exif:SensingMethod
+http://ns.adobe.com/exif/1.0/exif:FileSource
+http://ns.adobe.com/exif/1.0/exif:SceneType
+http://ns.adobe.com/exif/1.0/exif:CustomRendered
+http://ns.adobe.com/exif/1.0/exif:ExposureMode
+http://ns.adobe.com/exif/1.0/exif:WhiteBalance
+http://ns.adobe.com/exif/1.0/exif:DigitalZoomRatio
+http://ns.adobe.com/exif/1.0/exif:FocalLengthIn35mmFilm
+http://ns.adobe.com/exif/1.0/exif:SceneCaptureType
+http://ns.adobe.com/exif/1.0/exif:GainControl
+http://ns.adobe.com/exif/1.0/exif:Contrast
+http://ns.adobe.com/exif/1.0/exif:Saturation
+http://ns.adobe.com/exif/1.0/exif:Sharpness
+http://ns.adobe.com/exif/1.0/exif:SubjectDistanceRange
+http://ns.adobe.com/exif/1.0/exif:ImageUniqueID
+http://ns.adobe.com/exif/1.0/exif:GPSVersionID
+http://ns.adobe.com/exif/1.0/exif:GPSAltitudeRef
+http://ns.adobe.com/exif/1.0/exif:GPSAltitude
+http://ns.adobe.com/exif/1.0/exif:GPSTimeStamp
+http://ns.adobe.com/exif/1.0/exif:GPSSatellites
+http://ns.adobe.com/exif/1.0/exif:GPSStatus
+http://ns.adobe.com/exif/1.0/exif:GPSMeasureMode
+http://ns.adobe.com/exif/1.0/exif:GPSDOP
+http://ns.adobe.com/exif/1.0/exif:GPSSpeedRef
+http://ns.adobe.com/exif/1.0/exif:GPSSpeed
+http://ns.adobe.com/exif/1.0/exif:GPSTrackRef
+http://ns.adobe.com/exif/1.0/exif:GPSTrack
+http://ns.adobe.com/exif/1.0/exif:GPSImgDirectionRef
+http://ns.adobe.com/exif/1.0/exif:GPSImgDirection
+http://ns.adobe.com/exif/1.0/exif:GPSMapDatum
+http://ns.adobe.com/exif/1.0/exif:GPSDestBearingRef
+http://ns.adobe.com/exif/1.0/exif:GPSDestBearing
+http://ns.adobe.com/exif/1.0/exif:GPSDestDistanceRef
+http://ns.adobe.com/exif/1.0/exif:GPSDestDistance
+http://ns.adobe.com/exif/1.0/exif:GPSProcessingMethod
+http://ns.adobe.com/exif/1.0/exif:GPSAreaInformation
+http://ns.adobe.com/exif/1.0/exif:GPSDifferential
+http://ns.adobe.com/exif/1.0/exif:SpatialFrequencyResponse
+http://ns.adobe.com/exif/1.0/exif:CFAPattern
+http://ns.adobe.com/exif/1.0/exif:DeviceSettingDescription
+http://ns.adobe.com/exif/1.0/exif:Flash
+http://ns.adobe.com/exif/1.0/exif:GPSLatitude
+http://ns.adobe.com/exif/1.0/exif:GPSLongitude
+http://ns.adobe.com/exif/1.0/exif:GPSDestLatitude
+http://ns.adobe.com/exif/1.0/exif:GPSDestLongitude
+

Added: pdfbox/trunk/xmpbox/src/test/resources/validxmp/exif.xmp
URL: http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/resources/validxmp/exif.xmp?rev=1549002&view=auto
==============================================================================
--- pdfbox/trunk/xmpbox/src/test/resources/validxmp/exif.xmp (added)
+++ pdfbox/trunk/xmpbox/src/test/resources/validxmp/exif.xmp Sun Dec  8 07:47:26 2013
@@ -0,0 +1,46 @@
+<!-- ! 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 regarding copyright ownership. ! The 
+	ASF licenses this file to You under the Apache License, Version 2.0 ! (the 
+	"License"); you may not use this file except in compliance with ! the License. 
+	You may obtain a copy of the License at ! ! http://www.apache.org/licenses/LICENSE-2.0 
+	! ! Unless required by applicable law or agreed to in writing, software ! 
+	distributed under the License is distributed on an "AS IS" BASIS, ! WITHOUT 
+	WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ! See the 
+	License for the specific language governing permissions and ! limitations 
+	under the License. ! -->
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" >
+    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+        <rdf:Description rdf:about=""
+                         xmlns:dc="http://purl.org/dc/elements/1.1/">
+            <dc:format>application/pdf</dc:format>
+            <dc:description>
+                <rdf:Alt>
+                    <rdf:li xml:lang="x-default"/>
+                </rdf:Alt>
+            </dc:description>
+            <dc:title>
+                <rdf:Alt>
+                    <rdf:li xml:lang="x-default"/>
+                </rdf:Alt>
+            </dc:title>
+            <dc:creator>
+                <rdf:Seq>
+                    <rdf:li/>
+                </rdf:Seq>
+            </dc:creator>
+        </rdf:Description>
+        <rdf:Description rdf:about=""
+                         xmlns:exif="http://ns.adobe.com/exif/1.0/">
+            <exif:UserComment>
+                <rdf:Alt>
+                    <rdf:li xml:lang="x-default">One user comment</rdf:li>
+                </rdf:Alt>
+            </exif:UserComment>
+            <exif:SpectralSensitivity>spectral sens value</exif:SpectralSensitivity>
+        </rdf:Description>
+    </rdf:RDF>
+</x:xmpmeta>
+
+ <?xpacket end="w"?>



Mime
View raw message