Index: xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractSchemaTester.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractSchemaTester.java	(revision 1645856)
+++ xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractSchemaTester.java	(revision )
@@ -23,18 +23,20 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.List;
+import java.util.Random;
+
 import org.apache.xmpbox.XMPMetadata;
 import org.apache.xmpbox.type.AbstractSimpleProperty;
 import org.apache.xmpbox.type.ArrayProperty;
 import org.apache.xmpbox.type.Cardinality;
 import org.apache.xmpbox.type.TypeMapping;
-import org.apache.xmpbox.type.TypeTestingHelper;
+import org.apache.xmpbox.type.AbstractTypeTester;
 import org.apache.xmpbox.type.Types;
 import org.apache.xmpbox.xml.DomXmpParser;
 import org.junit.Assert;
 import org.junit.Test;
 
-public abstract class AbstractSchemaTester
+public abstract class AbstractSchemaTester extends AbstractTypeTester
 {
 
     protected XMPMetadata xmp;
@@ -73,22 +75,23 @@
     @Test
     public void testInitializedToNull() throws Exception
     {
+        XMPSchema schema = getSchema();
         // default method
-        Assert.assertNull(getSchema().getProperty(fieldName));
+        Assert.assertNull(schema.getProperty(fieldName));
         // accessor
         if (cardinality == Cardinality.Simple)
         {
-            String getter = TypeTestingHelper.calculateSimpleGetter(fieldName);
+            String getter = calculateSimpleGetter(fieldName);
             Method get = getSchemaClass().getMethod(getter, new Class[0]);
-            Object result = get.invoke(getSchema(), new Object[0]);
+            Object result = get.invoke(schema, new Object[0]);
             Assert.assertNull(result);
         }
         else
         {
             // arrays
-            String getter = TypeTestingHelper.calculateArrayGetter(fieldName);
+            String getter = calculateArrayGetter(fieldName);
             Method get = getSchemaClass().getMethod(getter, new Class[0]);
-            Object result = get.invoke(getSchema(), new Object[0]);
+            Object result = get.invoke(schema, new Object[0]);
             Assert.assertNull(result);
         }
 
@@ -97,23 +100,37 @@
     @Test
     public void testSettingValue() throws Exception
     {
+        internalTestSettingValue();
+    }
+
+    @Test
+    public void testRandomSettingValue() throws Exception
+    {
+        initializeSeed(new Random());
+        for (int i=0; i < RAND_LOOP_COUNT;i++) {
+            internalTestSettingValue();
+        }
+    }
+
+    private void internalTestSettingValue() throws Exception {
         if (cardinality != Cardinality.Simple)
             return;
+        XMPSchema schema = getSchema();
         // only test simple properties
-        Object value = TypeTestingHelper.getJavaValue(type);
-        AbstractSimpleProperty property = getSchema().instanciateSimple(fieldName, value);
-        getSchema().addProperty(property);
+        Object value = getJavaValue(type);
+        AbstractSimpleProperty property = schema.instanciateSimple(fieldName, value);
+        schema.addProperty(property);
         String qn = getPropertyQualifiedName(fieldName);
-        Assert.assertNotNull(getSchema().getProperty(fieldName));
+        Assert.assertNotNull(schema.getProperty(fieldName));
         // check other properties not modified
-        List<Field> fields = TypeTestingHelper.getXmpFields(getSchemaClass());
+        List<Field> fields = getXmpFields(getSchemaClass());
         for (Field field : fields)
         {
             // do not check the current name
             String fqn = getPropertyQualifiedName(field.get(null).toString());
             if (!fqn.equals(qn))
             {
-                Assert.assertNull(getSchema().getProperty(fqn));
+                Assert.assertNull(schema.getProperty(fqn));
             }
         }
     }
@@ -121,33 +138,47 @@
     @Test
     public void testSettingValueInArray() throws Exception
     {
+        internalTestSettingValueInArray();
+    }
+
+    @Test
+    public void testRandomSettingValueInArray() throws Exception
+    {
+        initializeSeed(new Random());
+        for (int i=0; i < RAND_LOOP_COUNT;i++) {
+            internalTestSettingValueInArray();
+        }
+    }
+
+    private void internalTestSettingValueInArray() throws Exception {
         if (cardinality == Cardinality.Simple)
             return;
+        XMPSchema schema = getSchema();
         // only test array properties
-        Object value = TypeTestingHelper.getJavaValue(type);
-        AbstractSimpleProperty property = getSchema().instanciateSimple(fieldName, value);
+        Object value = getJavaValue(type);
+        AbstractSimpleProperty property = schema.instanciateSimple(fieldName, value);
         switch (cardinality)
         {
-        case Seq:
+            case Seq:
-            getSchema().addUnqualifiedSequenceValue(property.getPropertyName(), property);
+                schema.addUnqualifiedSequenceValue(property.getPropertyName(), property);
-            break;
-        case Bag:
+                break;
+            case Bag:
-            getSchema().addBagValue(property.getPropertyName(), property);
+                schema.addBagValue(property.getPropertyName(), property);
-            break;
-        default:
-            throw new Exception("Unexpected case in test : " + cardinality.name());
+                break;
+            default:
+                throw new Exception("Unexpected case in test : " + cardinality.name());
         }
         String qn = getPropertyQualifiedName(fieldName);
-        Assert.assertNotNull(getSchema().getProperty(fieldName));
+        Assert.assertNotNull(schema.getProperty(fieldName));
         // check other properties not modified
-        List<Field> fields = TypeTestingHelper.getXmpFields(getSchemaClass());
+        List<Field> fields = getXmpFields(getSchemaClass());
         for (Field field : fields)
         {
             // do not check the current name
             String fqn = getPropertyQualifiedName(field.get(null).toString());
             if (!fqn.equals(qn))
             {
-                Assert.assertNull(getSchema().getProperty(fqn));
+                Assert.assertNull(schema.getProperty(fqn));
             }
         }
     }
@@ -155,53 +186,80 @@
     @Test
     public void testPropertySetterSimple() throws Exception
     {
+        internalTestPropertySetterSimple();
+    }
+
+    @Test
+    public void testRandomPropertySetterSimple() throws Exception
+    {
+        initializeSeed(new Random());
+        for (int i=0; i < RAND_LOOP_COUNT;i++) {
+            internalTestPropertySetterSimple();
+        }
+    }
+
+    private void internalTestPropertySetterSimple() throws Exception {
         if (cardinality != Cardinality.Simple)
             return;
-        String setter = TypeTestingHelper.calculateSimpleSetter(fieldName) + "Property";
-        Object value = TypeTestingHelper.getJavaValue(type);
-        AbstractSimpleProperty asp = typeMapping.instanciateSimpleProperty(getSchema().getNamespace(), getSchema()
+        XMPSchema schema = getSchema();
+        String setter = calculateSimpleSetter(fieldName) + "Property";
+        Object value = getJavaValue(type);
+        AbstractSimpleProperty asp = typeMapping.instanciateSimpleProperty(schema.getNamespace(), schema
                 .getPrefix(), fieldName, value, type);
         Method set = getSchemaClass().getMethod(setter, new Class<?>[] { type.getImplementingClass() });
-        set.invoke(getSchema(), new Object[] { asp });
+        set.invoke(schema, new Object[] { asp });
         // check property set
-        AbstractSimpleProperty stored = (AbstractSimpleProperty) getSchema().getProperty(fieldName);
+        AbstractSimpleProperty stored = (AbstractSimpleProperty) schema.getProperty(fieldName);
         Assert.assertEquals(value, stored.getValue());
         // check getter
-        String getter = TypeTestingHelper.calculateSimpleGetter(fieldName) + "Property";
+        String getter = calculateSimpleGetter(fieldName) + "Property";
         Method get = getSchemaClass().getMethod(getter, new Class[0]);
-        Object result = get.invoke(getSchema(), new Object[0]);
+        Object result = get.invoke(schema, new Object[0]);
         Assert.assertTrue(type.getImplementingClass().isAssignableFrom(result.getClass()));
         Assert.assertEquals(asp, result);
     }
 
     @Test
-    public void testPropertySetterInArray() throws Exception
+    public void testPropertySetterInArray() throws Exception {
+        internalTestPropertySetterInArray();
+    }
+
+    @Test
+    public void testRandomPropertySetterInArray() throws Exception
     {
+        initializeSeed(new Random());
+        for (int i=0; i < RAND_LOOP_COUNT;i++) {
+            internalTestPropertySetterInArray();
+        }
+    }
+
+    private void internalTestPropertySetterInArray() throws Exception {
         if (cardinality == Cardinality.Simple)
             return;
+        XMPSchema schema = getSchema();
         // add value
-        String setter = "add" + TypeTestingHelper.calculateFieldNameForMethod(fieldName);
+        String setter = "add" + calculateFieldNameForMethod(fieldName);
         // TypeDescription<AbstractSimpleProperty> td =
         // typeMapping.getSimpleDescription(type);
-        Object value1 = TypeTestingHelper.getJavaValue(type);
-        Method set = getSchemaClass().getMethod(setter, new Class<?>[] { TypeTestingHelper.getJavaType(type) });
-        set.invoke(getSchema(), new Object[] { value1 });
+        Object value1 = getJavaValue(type);
+        Method set = getSchemaClass().getMethod(setter, new Class<?>[] { getJavaType(type) });
+        set.invoke(schema, new Object[] { value1 });
         // retrieve complex property
-        String getter = TypeTestingHelper.calculateArrayGetter(fieldName) + "Property";
+        String getter = calculateArrayGetter(fieldName) + "Property";
         Method getcp = getSchemaClass().getMethod(getter, new Class[0]);
-        Object ocp = getcp.invoke(getSchema(), new Object[0]);
+        Object ocp = getcp.invoke(schema, new Object[0]);
         Assert.assertTrue(ocp instanceof ArrayProperty);
         ArrayProperty cp = (ArrayProperty) ocp;
         // check size is ok (1)
         Assert.assertEquals(1, cp.getContainer().getAllProperties().size());
         // add a new one
-        Object value2 = TypeTestingHelper.getJavaValue(type);
-        set.invoke(getSchema(), new Object[] { value2 });
+        Object value2 = getJavaValue(type);
+        set.invoke(schema, new Object[] { value2 });
         Assert.assertEquals(2, cp.getContainer().getAllProperties().size());
         // remove the first
-        String remover = "remove" + TypeTestingHelper.calculateFieldNameForMethod(fieldName);
-        Method remove = getSchemaClass().getMethod(remover, new Class<?>[] { TypeTestingHelper.getJavaType(type) });
-        remove.invoke(getSchema(), value1);
+        String remover = "remove" + calculateFieldNameForMethod(fieldName);
+        Method remove = getSchemaClass().getMethod(remover, new Class<?>[] { getJavaType(type) });
+        remove.invoke(schema, value1);
         Assert.assertEquals(1, cp.getContainer().getAllProperties().size());
 
     }
Index: xmpbox/src/test/java/org/apache/xmpbox/type/AbstractStructuredTypeTester.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- xmpbox/src/test/java/org/apache/xmpbox/type/AbstractStructuredTypeTester.java	(revision 1645856)
+++ xmpbox/src/test/java/org/apache/xmpbox/type/AbstractStructuredTypeTester.java	(revision )
@@ -24,12 +24,14 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.List;
+import java.util.Random;
+
 import org.apache.xmpbox.XMPMetadata;
 import org.apache.xmpbox.xml.DomXmpParser;
 import org.junit.Assert;
 import org.junit.Test;
 
-public abstract class AbstractStructuredTypeTester
+public abstract class AbstractStructuredTypeTester extends AbstractTypeTester
 {
 
     protected XMPMetadata xmp;
@@ -63,11 +65,12 @@
     @Test
     public void testInitializedToNull() throws Exception
     {
+        AbstractStructuredType structured = getStructured();
         // default method
-        Assert.assertNull(getStructured().getProperty(fieldName));
+        Assert.assertNull(structured.getProperty(fieldName));
         // accessor
-        Method get = clz.getMethod(TypeTestingHelper.calculateSimpleGetter(fieldName), new Class[0]);
-        Object result = get.invoke(getStructured(), new Object[0]);
+        Method get = clz.getMethod(calculateSimpleGetter(fieldName), new Class[0]);
+        Object result = get.invoke(structured, new Object[0]);
         Assert.assertNull(result);
 
     }
@@ -75,49 +78,94 @@
     @Test
     public void testSettingValue() throws Exception
     {
-        Object value = TypeTestingHelper.getJavaValue(type);
-        getStructured().addSimpleProperty(fieldName, value);
-        Assert.assertNotNull(getStructured().getProperty(fieldName));
+        internalTestSettingValue();
+    }
+
+    @Test
+    public void testRandomSettingValue() throws Exception
+    {
+        initializeSeed(new Random());
+        for (int i=0; i < RAND_LOOP_COUNT;i++) {
+            internalTestSettingValue();
+        }
+    }
+
+    private void internalTestSettingValue () throws Exception
+    {
+        AbstractStructuredType structured = getStructured();
+        Object value = getJavaValue(type);
+        structured.addSimpleProperty(fieldName, value);
+        Assert.assertNotNull(structured.getProperty(fieldName));
         // check other properties not modified
-        List<Field> fields = TypeTestingHelper.getXmpFields(clz);
+        List<Field> fields = getXmpFields(clz);
         for (Field field : fields)
         {
             // do not check the current name
             String name = field.get(null).toString();
             if (!name.equals(fieldName))
             {
-                Assert.assertNull(getStructured().getProperty(name));
+                Assert.assertNull(structured.getProperty(name));
             }
         }
     }
 
+
     @Test
     public void testPropertyType() throws Exception
     {
-        Object value = TypeTestingHelper.getJavaValue(type);
-        getStructured().addSimpleProperty(fieldName, value);
-        Assert.assertNotNull(getStructured().getProperty(fieldName));
+        internalTestPropertyType();
+    }
+
+    @Test
+    public void testRandomPropertyType() throws Exception
+    {
+        initializeSeed(new Random());
+        for (int i=0; i < RAND_LOOP_COUNT;i++) {
+            internalTestPropertyType();
+        }
+    }
+
+
+    private void internalTestPropertyType () throws Exception
+    {
+        AbstractStructuredType structured = getStructured();
+        Object value = getJavaValue(type);
+        structured.addSimpleProperty(fieldName, value);
+        Assert.assertNotNull(structured.getProperty(fieldName));
         // check property type
-        AbstractSimpleProperty asp = (AbstractSimpleProperty) getStructured().getProperty(fieldName);
+        AbstractSimpleProperty asp = (AbstractSimpleProperty) structured.getProperty(fieldName);
         Assert.assertEquals(type.getImplementingClass(), asp.getClass());
     }
 
+
     @Test
     public void testSetter() throws Exception
     {
-        String setter = TypeTestingHelper.calculateSimpleSetter(fieldName);
-        Object value = TypeTestingHelper.getJavaValue(type);
-        Method set = clz.getMethod(setter, new Class<?>[] { TypeTestingHelper.getJavaType(type) });
-        set.invoke(getStructured(), new Object[] { value });
+        internalTestSetter();
+    }
+
+    @Test
+    public void testRandomSetter() throws Exception
+    {
+        initializeSeed(new Random());
+        for (int i=0; i < RAND_LOOP_COUNT;i++) {
+            internalTestSetter();
+        }
+    }
+
+    private void internalTestSetter () throws Exception
+    {
+        AbstractStructuredType structured = getStructured();
+        String setter = calculateSimpleSetter(fieldName);
+        Object value = getJavaValue(type);
+        Method set = clz.getMethod(setter, new Class<?>[] { getJavaType(type) });
+        set.invoke(structured, new Object[] { value });
         // check property set
-        Assert.assertEquals(value, ((AbstractSimpleProperty) getStructured().getProperty(fieldName)).getValue());
+        Assert.assertEquals(value, ((AbstractSimpleProperty) structured.getProperty(fieldName)).getValue());
         // check getter
-        Method get = clz.getMethod(TypeTestingHelper.calculateSimpleGetter(fieldName), new Class[0]);
-        Object result = get.invoke(getStructured(), new Object[0]);
-        // Assert.assertEquals(getJavaType(td),result.getClass());
-        Assert.assertTrue(TypeTestingHelper.getJavaType(type).isAssignableFrom(result.getClass()));
+        Method get = clz.getMethod(calculateSimpleGetter(fieldName), new Class[0]);
+        Object result = get.invoke(structured, new Object[0]);
+        Assert.assertTrue(getJavaType(type).isAssignableFrom(result.getClass()));
         Assert.assertEquals(value, result);
-
     }
-
 }
Index: xmpbox/src/test/java/org/apache/xmpbox/type/TestLayerType.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- xmpbox/src/test/java/org/apache/xmpbox/type/TestLayerType.java	(revision 1645856)
+++ xmpbox/src/test/java/org/apache/xmpbox/type/TestLayerType.java	(revision )
@@ -33,13 +33,10 @@
 public class TestLayerType extends AbstractStructuredTypeTester
 {
 
-    protected LayerType structured = null;
-
     @Before
     public void before() throws Exception
     {
         super.before();
-        structured = new LayerType(xmp);
     }
 
     public TestLayerType(Class<? extends AbstractStructuredType> clz, String field, Types type)
@@ -50,7 +47,7 @@
     @Override
     protected AbstractStructuredType getStructured()
     {
-        return structured;
+        return new LayerType(xmp);
     }
 
     @Parameters
Index: xmpbox/src/test/java/org/apache/xmpbox/schema/DublinCoreTest.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- xmpbox/src/test/java/org/apache/xmpbox/schema/DublinCoreTest.java	(revision 1645856)
+++ xmpbox/src/test/java/org/apache/xmpbox/schema/DublinCoreTest.java	(revision )
@@ -34,18 +34,15 @@
 public class DublinCoreTest extends AbstractSchemaTester
 {
 
-    protected DublinCoreSchema schema = null;
-
     public DublinCoreSchema getSchema()
     {
-        return schema;
+        return xmp.createAndAddDublinCoreSchema();
     }
 
     @Before
     public void before() throws Exception
     {
         super.before();
-        schema = xmp.createAndAddDublinCoreSchema();
     }
 
     public DublinCoreTest(String fieldName, Types type, Cardinality card)
Index: xmpbox/src/test/java/org/apache/xmpbox/type/TestVersionType.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- xmpbox/src/test/java/org/apache/xmpbox/type/TestVersionType.java	(revision 1645856)
+++ xmpbox/src/test/java/org/apache/xmpbox/type/TestVersionType.java	(revision )
@@ -33,13 +33,10 @@
 public class TestVersionType extends AbstractStructuredTypeTester
 {
 
-    protected VersionType structured = null;
-
     @Before
     public void before() throws Exception
     {
         super.before();
-        structured = new VersionType(xmp);
     }
 
     public TestVersionType(Class<? extends AbstractStructuredType> clz, String field, Types type)
@@ -50,7 +47,7 @@
     @Override
     protected AbstractStructuredType getStructured()
     {
-        return structured;
+        return new VersionType(xmp);
     }
 
     @Parameters
@@ -58,10 +55,6 @@
     {
         Collection<Object[]> result = new ArrayList<Object[]>();
 
-        // result.add(new Object [] {VersionType.class,"version",Types.Text});
-        // result.add(new Object [] {VersionType.class,"comments",Types.Text});
-        // result.add(new Object []
-        // {VersionType.class,"modifyDate",Types.Date});
         result.add(new Object[] { VersionType.class, "modifier", Types.ProperName });
 
         return result;
Index: xmpbox/src/test/java/org/apache/xmpbox/type/TestResourceEventType.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- xmpbox/src/test/java/org/apache/xmpbox/type/TestResourceEventType.java	(revision 1645856)
+++ xmpbox/src/test/java/org/apache/xmpbox/type/TestResourceEventType.java	(revision )
@@ -33,13 +33,10 @@
 public class TestResourceEventType extends AbstractStructuredTypeTester
 {
 
-    protected ResourceEventType structured = null;
-
     @Before
     public void before() throws Exception
     {
         super.before();
-        structured = new ResourceEventType(xmp);
     }
 
     public TestResourceEventType(Class<? extends AbstractStructuredType> clz, String field, Types type)
@@ -50,7 +47,7 @@
     @Override
     protected AbstractStructuredType getStructured()
     {
-        return structured;
+        return new ResourceEventType(xmp);
     }
 
     @Parameters
Index: xmpbox/src/test/java/org/apache/xmpbox/type/TestResourceRefType.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- xmpbox/src/test/java/org/apache/xmpbox/type/TestResourceRefType.java	(revision 1645856)
+++ xmpbox/src/test/java/org/apache/xmpbox/type/TestResourceRefType.java	(revision )
@@ -33,13 +33,10 @@
 public class TestResourceRefType extends AbstractStructuredTypeTester
 {
 
-    protected ResourceRefType structured = null;
-
     @Before
     public void before() throws Exception
     {
         super.before();
-        structured = new ResourceRefType(xmp);
     }
 
     public TestResourceRefType(Class<? extends AbstractStructuredType> clz, String field, Types type)
@@ -50,7 +47,7 @@
     @Override
     protected AbstractStructuredType getStructured()
     {
-        return structured;
+        return new ResourceRefType(xmp);
     }
 
     @Parameters
Index: xmpbox/src/test/java/org/apache/xmpbox/type/TypeTestingHelper.java
===================================================================
--- xmpbox/src/test/java/org/apache/xmpbox/type/TypeTestingHelper.java	(revision 1645856)
+++ xmpbox/src/test/java/org/apache/xmpbox/type/AbstractTypeTester.java	(revision )
@@ -1,4 +1,5 @@
 /*****************************************************************************
+/*****************************************************************************
  * 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
@@ -25,19 +26,31 @@
 import java.util.Calendar;
 import java.util.List;
 import java.util.Random;
-import java.util.UUID;
 
-public final class TypeTestingHelper
+public abstract class AbstractTypeTester
 {
 
-    public static String calculateSimpleGetter(String name)
+    private static final long COUNTER_SEED = 0;
+
+    private static final long MAX_COUNTER = Long.MAX_VALUE;
+
+    public static final int RAND_LOOP_COUNT = 50;
+
+
+    private Random counterRandom = new Random(COUNTER_SEED);
+
+    protected void initializeSeed (Random rand) {
+        this.counterRandom = rand;
+    }
+
+    public String calculateSimpleGetter(String name)
     {
         StringBuilder sb = new StringBuilder(3 + name.length());
         sb.append("get").append(calculateFieldNameForMethod(name));
         return sb.toString();
     }
 
-    public static String calculateArrayGetter(String name)
+    public String calculateArrayGetter(String name)
     {
         StringBuilder sb = new StringBuilder(4 + name.length());
         String fn = calculateFieldNameForMethod(name);
@@ -49,21 +62,21 @@
         return sb.toString();
     }
 
-    public static String calculateSimpleSetter(String name)
+    public String calculateSimpleSetter(String name)
     {
         StringBuilder sb = new StringBuilder(3 + name.length());
         sb.append("set").append(calculateFieldNameForMethod(name));
         return sb.toString();
     }
 
-    public static String calculateFieldNameForMethod(String name)
+    public String calculateFieldNameForMethod(String name)
     {
         StringBuilder sb = new StringBuilder(name.length());
         sb.append(name.substring(0, 1).toUpperCase()).append(name.substring(1));
         return sb.toString();
     }
 
-    public static Class<?> getJavaType(Types type)
+    public Class<?> getJavaType(Types type)
     {
         if (type.getImplementingClass() == TextType.class)
         {
@@ -87,37 +100,29 @@
         }
     }
 
-    public static Object getJavaValue(Types type)
+    public Object getJavaValue(Types type)
     {
-        if (type.getImplementingClass() == TextType.class)
+        if (TextType.class.isAssignableFrom(type.getImplementingClass()))
         {
-            return UUID.randomUUID().toString();
+            return "Text_String_"+ counterRandom.nextLong()%MAX_COUNTER;
         }
         else if (type.getImplementingClass() == DateType.class)
         {
-            // use random because test are too fast (generate same calendar
-            // twice)
             Calendar calendar = Calendar.getInstance();
-            Random rand = new Random();
-            calendar.setTimeInMillis(rand.nextLong());
+            calendar.setTimeInMillis(counterRandom.nextLong()%MAX_COUNTER);
             return calendar;
         }
         else if (type.getImplementingClass() == IntegerType.class)
         {
-            return new Integer(14);
+            return new Integer(counterRandom.nextInt());
         }
-        else if (TextType.class.isAssignableFrom(type.getImplementingClass()))
-        {
-            // all derived from TextType
-            return UUID.randomUUID().toString();
-        }
         else
         {
             throw new IllegalArgumentException("Type not expected in test : " + type.getImplementingClass());
         }
     }
 
-    public static List<Field> getXmpFields(Class<?> clz)
+    public List<Field> getXmpFields(Class<?> clz)
     {
         Field[] fields = clz.getFields();
         List<Field> result = new ArrayList<Field>(fields.length);
Index: xmpbox/src/test/java/org/apache/xmpbox/type/TestJobType.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- xmpbox/src/test/java/org/apache/xmpbox/type/TestJobType.java	(revision 1645856)
+++ xmpbox/src/test/java/org/apache/xmpbox/type/TestJobType.java	(revision )
@@ -33,13 +33,10 @@
 public class TestJobType extends AbstractStructuredTypeTester
 {
 
-    protected JobType structured = null;
-
     @Before
     public void before() throws Exception
     {
         super.before();
-        structured = new JobType(xmp, "job");
     }
 
     public TestJobType(Class<? extends AbstractStructuredType> clz, String field, Types type)
@@ -50,7 +47,7 @@
     @Override
     protected AbstractStructuredType getStructured()
     {
-        return structured;
+        return new JobType(xmp, "job");
     }
 
     @Parameters
Index: xmpbox/src/test/java/org/apache/xmpbox/type/TestThumbnailType.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- xmpbox/src/test/java/org/apache/xmpbox/type/TestThumbnailType.java	(revision 1645856)
+++ xmpbox/src/test/java/org/apache/xmpbox/type/TestThumbnailType.java	(revision )
@@ -33,13 +33,10 @@
 public class TestThumbnailType extends AbstractStructuredTypeTester
 {
 
-    protected ThumbnailType structured = null;
-
     @Before
     public void before() throws Exception
     {
         super.before();
-        structured = new ThumbnailType(xmp);
     }
 
     public TestThumbnailType(Class<? extends AbstractStructuredType> clz, String field, Types type)
@@ -50,7 +47,7 @@
     @Override
     protected AbstractStructuredType getStructured()
     {
-        return structured;
+        return new ThumbnailType(xmp);
     }
 
     @Parameters
Index: xmpbox/src/test/java/org/apache/xmpbox/schema/PhotoshopSchemaTest.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- xmpbox/src/test/java/org/apache/xmpbox/schema/PhotoshopSchemaTest.java	(revision 1645856)
+++ xmpbox/src/test/java/org/apache/xmpbox/schema/PhotoshopSchemaTest.java	(revision )
@@ -34,18 +34,15 @@
 public class PhotoshopSchemaTest extends AbstractSchemaTester
 {
 
-    protected PhotoshopSchema schema = null;
-
     public PhotoshopSchema getSchema()
     {
-        return schema;
+        return xmp.createAndAddPhotoshopSchema();
     }
 
     @Before
     public void before() throws Exception
     {
         super.before();
-        schema = xmp.createAndAddPhotoshopSchema();
     }
 
     public PhotoshopSchemaTest(String fieldName, Types type, Cardinality card)
