You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by dc...@apache.org on 2010/04/22 18:04:22 UTC

svn commit: r936922 [11/18] - in /incubator/chemistry/opencmis/trunk/chemistry-opencmis-client: chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/ chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/...

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/VersioningServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/VersioningServiceImpl.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/VersioningServiceImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/VersioningServiceImpl.java Thu Apr 22 16:04:19 2010
@@ -48,128 +48,128 @@ import org.apache.chemistry.opencmis.com
  */
 public class VersioningServiceImpl extends AbstractWebServicesService implements VersioningService {
 
-	private final PortProvider fPortProvider;
+    private final PortProvider fPortProvider;
 
-	/**
-	 * Constructor.
-	 */
-	public VersioningServiceImpl(Session session, PortProvider portProvider) {
-		setSession(session);
-		fPortProvider = portProvider;
-	}
-
-	public void checkOut(String repositoryId, Holder<String> objectId, ExtensionsData extension,
-			Holder<Boolean> contentCopied) {
-		VersioningServicePort port = fPortProvider.getVersioningServicePort();
-
-		try {
-			javax.xml.ws.Holder<String> portObjectId = convertHolder(objectId);
-			javax.xml.ws.Holder<Boolean> portContentCopied = new javax.xml.ws.Holder<Boolean>();
-			javax.xml.ws.Holder<CmisExtensionType> portExtension = convertExtensionHolder(extension);
-
-			port.checkOut(repositoryId, portObjectId, portExtension, portContentCopied);
-
-			setHolderValue(portObjectId, objectId);
-			setHolderValue(portContentCopied, contentCopied);
-			setExtensionValues(portExtension, extension);
-		} catch (CmisException e) {
-			throw convertException(e);
-		} catch (Exception e) {
-			throw new CmisRuntimeException("Error: " + e.getMessage(), e);
-		}
-	}
-
-	public void cancelCheckOut(String repositoryId, String objectId, ExtensionsData extension) {
-		VersioningServicePort port = fPortProvider.getVersioningServicePort();
-
-		try {
-			javax.xml.ws.Holder<CmisExtensionType> portExtension = convertExtensionHolder(extension);
-
-			port.cancelCheckOut(repositoryId, objectId, portExtension);
-
-			setExtensionValues(portExtension, extension);
-		} catch (CmisException e) {
-			throw convertException(e);
-		} catch (Exception e) {
-			throw new CmisRuntimeException("Error: " + e.getMessage(), e);
-		}
-	}
-
-	public void checkIn(String repositoryId, Holder<String> objectId, Boolean major, Properties properties,
-			ContentStream contentStream, String checkinComment, List<String> policies, Acl addACEs, Acl removeACEs,
-			ExtensionsData extension) {
-		VersioningServicePort port = fPortProvider.getVersioningServicePort();
-
-		try {
-			javax.xml.ws.Holder<String> portObjectId = convertHolder(objectId);
-			javax.xml.ws.Holder<CmisExtensionType> portExtension = convertExtensionHolder(extension);
-
-			port.checkIn(repositoryId, portObjectId, major, convert(properties), convert(contentStream),
-					checkinComment, policies, convert(addACEs), convert(removeACEs), portExtension);
-
-			setHolderValue(portObjectId, objectId);
-			setExtensionValues(portExtension, extension);
-		} catch (CmisException e) {
-			throw convertException(e);
-		} catch (Exception e) {
-			throw new CmisRuntimeException("Error: " + e.getMessage(), e);
-		}
-	}
-
-	public List<ObjectData> getAllVersions(String repositoryId, String objectId, String versionSeriesId, String filter,
-			Boolean includeAllowableActions, ExtensionsData extension) {
-		VersioningServicePort port = fPortProvider.getVersioningServicePort();
-
-		try {
-			List<CmisObjectType> versionList = port.getAllVersions(repositoryId, versionSeriesId, filter,
-					includeAllowableActions, convert(extension));
-
-			// no list?
-			if (versionList == null) {
-				return null;
-			}
-
-			// convert list
-			List<ObjectData> result = new ArrayList<ObjectData>();
-			for (CmisObjectType version : versionList) {
-				result.add(convert(version));
-			}
-
-			return result;
-		} catch (CmisException e) {
-			throw convertException(e);
-		} catch (Exception e) {
-			throw new CmisRuntimeException("Error: " + e.getMessage(), e);
-		}
-	}
-
-	public ObjectData getObjectOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
-			Boolean major, String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
-			String renditionFilter, Boolean includePolicyIds, Boolean includeACL, ExtensionsData extension) {
-		VersioningServicePort port = fPortProvider.getVersioningServicePort();
-
-		try {
-			return convert(port.getObjectOfLatestVersion(repositoryId, versionSeriesId, major, filter,
-					includeAllowableActions, convert(EnumIncludeRelationships.class, includeRelationships),
-					renditionFilter, includePolicyIds, includeACL, convert(extension)));
-		} catch (CmisException e) {
-			throw convertException(e);
-		} catch (Exception e) {
-			throw new CmisRuntimeException("Error: " + e.getMessage(), e);
-		}
-	}
-
-	public Properties getPropertiesOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
-			Boolean major, String filter, ExtensionsData extension) {
-		VersioningServicePort port = fPortProvider.getVersioningServicePort();
-
-		try {
-			return convert(port.getPropertiesOfLatestVersion(repositoryId, versionSeriesId, major, filter,
-					convert(extension)));
-		} catch (CmisException e) {
-			throw convertException(e);
-		} catch (Exception e) {
-			throw new CmisRuntimeException("Error: " + e.getMessage(), e);
-		}
-	}
+    /**
+     * Constructor.
+     */
+    public VersioningServiceImpl(Session session, PortProvider portProvider) {
+        setSession(session);
+        fPortProvider = portProvider;
+    }
+
+    public void checkOut(String repositoryId, Holder<String> objectId, ExtensionsData extension,
+            Holder<Boolean> contentCopied) {
+        VersioningServicePort port = fPortProvider.getVersioningServicePort();
+
+        try {
+            javax.xml.ws.Holder<String> portObjectId = convertHolder(objectId);
+            javax.xml.ws.Holder<Boolean> portContentCopied = new javax.xml.ws.Holder<Boolean>();
+            javax.xml.ws.Holder<CmisExtensionType> portExtension = convertExtensionHolder(extension);
+
+            port.checkOut(repositoryId, portObjectId, portExtension, portContentCopied);
+
+            setHolderValue(portObjectId, objectId);
+            setHolderValue(portContentCopied, contentCopied);
+            setExtensionValues(portExtension, extension);
+        } catch (CmisException e) {
+            throw convertException(e);
+        } catch (Exception e) {
+            throw new CmisRuntimeException("Error: " + e.getMessage(), e);
+        }
+    }
+
+    public void cancelCheckOut(String repositoryId, String objectId, ExtensionsData extension) {
+        VersioningServicePort port = fPortProvider.getVersioningServicePort();
+
+        try {
+            javax.xml.ws.Holder<CmisExtensionType> portExtension = convertExtensionHolder(extension);
+
+            port.cancelCheckOut(repositoryId, objectId, portExtension);
+
+            setExtensionValues(portExtension, extension);
+        } catch (CmisException e) {
+            throw convertException(e);
+        } catch (Exception e) {
+            throw new CmisRuntimeException("Error: " + e.getMessage(), e);
+        }
+    }
+
+    public void checkIn(String repositoryId, Holder<String> objectId, Boolean major, Properties properties,
+            ContentStream contentStream, String checkinComment, List<String> policies, Acl addACEs, Acl removeACEs,
+            ExtensionsData extension) {
+        VersioningServicePort port = fPortProvider.getVersioningServicePort();
+
+        try {
+            javax.xml.ws.Holder<String> portObjectId = convertHolder(objectId);
+            javax.xml.ws.Holder<CmisExtensionType> portExtension = convertExtensionHolder(extension);
+
+            port.checkIn(repositoryId, portObjectId, major, convert(properties), convert(contentStream),
+                    checkinComment, policies, convert(addACEs), convert(removeACEs), portExtension);
+
+            setHolderValue(portObjectId, objectId);
+            setExtensionValues(portExtension, extension);
+        } catch (CmisException e) {
+            throw convertException(e);
+        } catch (Exception e) {
+            throw new CmisRuntimeException("Error: " + e.getMessage(), e);
+        }
+    }
+
+    public List<ObjectData> getAllVersions(String repositoryId, String objectId, String versionSeriesId, String filter,
+            Boolean includeAllowableActions, ExtensionsData extension) {
+        VersioningServicePort port = fPortProvider.getVersioningServicePort();
+
+        try {
+            List<CmisObjectType> versionList = port.getAllVersions(repositoryId, versionSeriesId, filter,
+                    includeAllowableActions, convert(extension));
+
+            // no list?
+            if (versionList == null) {
+                return null;
+            }
+
+            // convert list
+            List<ObjectData> result = new ArrayList<ObjectData>();
+            for (CmisObjectType version : versionList) {
+                result.add(convert(version));
+            }
+
+            return result;
+        } catch (CmisException e) {
+            throw convertException(e);
+        } catch (Exception e) {
+            throw new CmisRuntimeException("Error: " + e.getMessage(), e);
+        }
+    }
+
+    public ObjectData getObjectOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
+            Boolean major, String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
+            String renditionFilter, Boolean includePolicyIds, Boolean includeACL, ExtensionsData extension) {
+        VersioningServicePort port = fPortProvider.getVersioningServicePort();
+
+        try {
+            return convert(port.getObjectOfLatestVersion(repositoryId, versionSeriesId, major, filter,
+                    includeAllowableActions, convert(EnumIncludeRelationships.class, includeRelationships),
+                    renditionFilter, includePolicyIds, includeACL, convert(extension)));
+        } catch (CmisException e) {
+            throw convertException(e);
+        } catch (Exception e) {
+            throw new CmisRuntimeException("Error: " + e.getMessage(), e);
+        }
+    }
+
+    public Properties getPropertiesOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
+            Boolean major, String filter, ExtensionsData extension) {
+        VersioningServicePort port = fPortProvider.getVersioningServicePort();
+
+        try {
+            return convert(port.getPropertiesOfLatestVersion(repositoryId, versionSeriesId, major, filter,
+                    convert(extension)));
+        } catch (CmisException e) {
+            throw convertException(e);
+        } catch (Exception e) {
+            throw new CmisRuntimeException("Error: " + e.getMessage(), e);
+        }
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/AclMergeTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/AclMergeTest.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/AclMergeTest.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/AclMergeTest.java Thu Apr 22 16:04:19 2010
@@ -41,105 +41,105 @@ import org.apache.chemistry.opencmis.com
  */
 public class AclMergeTest extends TestCase {
 
-	public void testIsACLMergeRequired() throws Exception {
-		AtomPubService service = new AtomPubService();
+    public void testIsACLMergeRequired() throws Exception {
+        AtomPubService service = new AtomPubService();
 
-		assertFalse(service.publicIsACLMergeRequired(null, null));
-		assertFalse(service.publicIsACLMergeRequired(new AccessControlListImpl(), null));
-		assertFalse(service.publicIsACLMergeRequired(null, new AccessControlListImpl()));
-		assertFalse(service.publicIsACLMergeRequired(new AccessControlListImpl(), new AccessControlListImpl()));
-	}
-
-	public void testAclMerge() throws Exception {
-		AtomPubService service = new AtomPubService();
-
-		// original
-		Map<String, String[]> originalAceData = new HashMap<String, String[]>();
-
-		originalAceData.put("p1", new String[] { "perm:read", "perm:write", "perm:delete" });
-		originalAceData.put("p2", new String[] { "perm:read" });
-		originalAceData.put("p3", new String[] { "perm:all" });
-
-		Acl originalACEs = createACL(originalAceData);
-
-		// add
-		Map<String, String[]> addAceData = new HashMap<String, String[]>();
-
-		addAceData.put("p2", new String[] { "perm:write" });
-		addAceData.put("p4", new String[] { "perm:all" });
-
-		Acl addACEs = createACL(addAceData);
-
-		// remove
-		Map<String, String[]> removeAceData = new HashMap<String, String[]>();
-
-		removeAceData.put("p1", new String[] { "perm:write" });
-		removeAceData.put("p3", new String[] { "perm:all" });
-
-		Acl removeACEs = createACL(removeAceData);
-
-		Acl newACL = service.publicMergeACLs(originalACEs, addACEs, removeACEs);
-
-		assertEquals(3, newACL.getAces().size());
-
-		for (Ace ace : newACL.getAces()) {
-			String principal = ace.getPrincipal().getId();
-			assertNotNull(principal);
-
-			if (principal.equals("p1")) {
-				assertEquals(2, ace.getPermissions().size());
-				assertTrue(ace.getPermissions().contains("perm:read"));
-				assertTrue(ace.getPermissions().contains("perm:delete"));
-				assertFalse(ace.getPermissions().contains("perm:write"));
-			} else if (principal.equals("p2")) {
-				assertEquals(2, ace.getPermissions().size());
-				assertTrue(ace.getPermissions().contains("perm:read"));
-				assertTrue(ace.getPermissions().contains("perm:write"));
-			} else if (principal.equals("p3")) {
-				fail("Principal should be deleted!");
-			} else if (principal.equals("p4")) {
-				assertEquals(1, ace.getPermissions().size());
-				assertTrue(ace.getPermissions().contains("perm:all"));
-			}
-		}
-	}
-
-	/**
-	 * Creates an ACL structure from a Map.
-	 */
-	private Acl createACL(Map<String, String[]> aceData) {
-		AccessControlListImpl result = new AccessControlListImpl();
-
-		List<Ace> aces = new ArrayList<Ace>();
-
-		for (Map.Entry<String, String[]> e : aceData.entrySet()) {
-			ArrayList<String> permissions = new ArrayList<String>();
-
-			for (String s : e.getValue()) {
-				permissions.add(s);
-			}
-
-			AccessControlEntryImpl ace = new AccessControlEntryImpl(new AccessControlPrincipalDataImpl(e.getKey()),
-					permissions);
-
-			aces.add(ace);
-		}
-
-		result.setAces(aces);
-
-		return result;
-	}
-
-	/**
-	 * A class to make a few protected methods publicly available.
-	 */
-	private static class AtomPubService extends AbstractAtomPubService {
-		public Acl publicMergeACLs(Acl originalACEs, Acl addACEs, Acl removeACEs) {
-			return mergeAcls(originalACEs, addACEs, removeACEs);
-		}
-
-		public boolean publicIsACLMergeRequired(Acl addACEs, Acl removeACEs) {
-			return isAclMergeRequired(addACEs, removeACEs);
-		}
-	}
+        assertFalse(service.publicIsACLMergeRequired(null, null));
+        assertFalse(service.publicIsACLMergeRequired(new AccessControlListImpl(), null));
+        assertFalse(service.publicIsACLMergeRequired(null, new AccessControlListImpl()));
+        assertFalse(service.publicIsACLMergeRequired(new AccessControlListImpl(), new AccessControlListImpl()));
+    }
+
+    public void testAclMerge() throws Exception {
+        AtomPubService service = new AtomPubService();
+
+        // original
+        Map<String, String[]> originalAceData = new HashMap<String, String[]>();
+
+        originalAceData.put("p1", new String[] { "perm:read", "perm:write", "perm:delete" });
+        originalAceData.put("p2", new String[] { "perm:read" });
+        originalAceData.put("p3", new String[] { "perm:all" });
+
+        Acl originalACEs = createACL(originalAceData);
+
+        // add
+        Map<String, String[]> addAceData = new HashMap<String, String[]>();
+
+        addAceData.put("p2", new String[] { "perm:write" });
+        addAceData.put("p4", new String[] { "perm:all" });
+
+        Acl addACEs = createACL(addAceData);
+
+        // remove
+        Map<String, String[]> removeAceData = new HashMap<String, String[]>();
+
+        removeAceData.put("p1", new String[] { "perm:write" });
+        removeAceData.put("p3", new String[] { "perm:all" });
+
+        Acl removeACEs = createACL(removeAceData);
+
+        Acl newACL = service.publicMergeACLs(originalACEs, addACEs, removeACEs);
+
+        assertEquals(3, newACL.getAces().size());
+
+        for (Ace ace : newACL.getAces()) {
+            String principal = ace.getPrincipal().getId();
+            assertNotNull(principal);
+
+            if (principal.equals("p1")) {
+                assertEquals(2, ace.getPermissions().size());
+                assertTrue(ace.getPermissions().contains("perm:read"));
+                assertTrue(ace.getPermissions().contains("perm:delete"));
+                assertFalse(ace.getPermissions().contains("perm:write"));
+            } else if (principal.equals("p2")) {
+                assertEquals(2, ace.getPermissions().size());
+                assertTrue(ace.getPermissions().contains("perm:read"));
+                assertTrue(ace.getPermissions().contains("perm:write"));
+            } else if (principal.equals("p3")) {
+                fail("Principal should be deleted!");
+            } else if (principal.equals("p4")) {
+                assertEquals(1, ace.getPermissions().size());
+                assertTrue(ace.getPermissions().contains("perm:all"));
+            }
+        }
+    }
+
+    /**
+     * Creates an ACL structure from a Map.
+     */
+    private Acl createACL(Map<String, String[]> aceData) {
+        AccessControlListImpl result = new AccessControlListImpl();
+
+        List<Ace> aces = new ArrayList<Ace>();
+
+        for (Map.Entry<String, String[]> e : aceData.entrySet()) {
+            ArrayList<String> permissions = new ArrayList<String>();
+
+            for (String s : e.getValue()) {
+                permissions.add(s);
+            }
+
+            AccessControlEntryImpl ace = new AccessControlEntryImpl(new AccessControlPrincipalDataImpl(e.getKey()),
+                    permissions);
+
+            aces.add(ace);
+        }
+
+        result.setAces(aces);
+
+        return result;
+    }
+
+    /**
+     * A class to make a few protected methods publicly available.
+     */
+    private static class AtomPubService extends AbstractAtomPubService {
+        public Acl publicMergeACLs(Acl originalACEs, Acl addACEs, Acl removeACEs) {
+            return mergeAcls(originalACEs, addACEs, removeACEs);
+        }
+
+        public boolean publicIsACLMergeRequired(Acl addACEs, Acl removeACEs) {
+            return isAclMergeRequired(addACEs, removeACEs);
+        }
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/AtomParserTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/AtomParserTest.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/AtomParserTest.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/AtomParserTest.java Thu Apr 22 16:04:19 2010
@@ -48,113 +48,113 @@ import org.apache.chemistry.opencmis.com
  */
 public class AtomParserTest extends TestCase {
 
-	private static final byte[] CONTENT = "This is my test content!".getBytes();
-	private static final String CONTENT_TYPE = "text/plain";
+    private static final byte[] CONTENT = "This is my test content!".getBytes();
+    private static final String CONTENT_TYPE = "text/plain";
 
-	public void testParser() throws Exception {
-		ByteArrayOutputStream bao = new ByteArrayOutputStream();
+    public void testParser() throws Exception {
+        ByteArrayOutputStream bao = new ByteArrayOutputStream();
 
-		// set up an object
-		CmisPropertiesType properties = new CmisPropertiesType();
+        // set up an object
+        CmisPropertiesType properties = new CmisPropertiesType();
 
-		CmisPropertyString propName = new CmisPropertyString();
-		propName.setPropertyDefinitionId(PropertyIds.NAME);
-		propName.getValue().add("TestName");
-		properties.getProperty().add(propName);
-
-		CmisPropertyInteger propInt = new CmisPropertyInteger();
-		propInt.setPropertyDefinitionId("IntProp");
-		propInt.getValue().add(BigInteger.valueOf(1));
-		propInt.getValue().add(BigInteger.valueOf(2));
-		propInt.getValue().add(BigInteger.valueOf(3));
-		properties.getProperty().add(propInt);
-
-		CmisPropertyDecimal propDec = new CmisPropertyDecimal();
-		propDec.setPropertyDefinitionId("DecProp");
-		propDec.getValue().add(
-				new BigDecimal("3.14159253589793238462643383279502884197"
-						+ "169399375105820974944592307816406286208998628034825342117067982148086513"));
-		properties.getProperty().add(propDec);
-
-		CmisObjectType object1 = new CmisObjectType();
-		object1.setProperties(properties);
-
-		// write the entry
-		AtomEntryWriter aew = new AtomEntryWriter(object1, CONTENT_TYPE, new ByteArrayInputStream(CONTENT));
-		aew.write(bao);
-
-		byte[] entryContent = bao.toByteArray();
-		assertTrue(entryContent.length > 0);
-
-		String entryContentStr = new String(entryContent, "UTF-8");
-		System.out.println(entryContentStr);
-
-		// parse it
-		AtomPubParser parser = new AtomPubParser(new ByteArrayInputStream(entryContent));
-		parser.parse();
-		AtomBase parseResult = parser.getResults();
-
-		assertTrue(parseResult instanceof AtomEntry);
-		AtomEntry entry = (AtomEntry) parseResult;
-
-		assertNotNull(entry);
-		assertTrue(entry.getElements().size() > 0);
-
-		// find the object
-		CmisObjectType object2 = null;
-		for (AtomElement element : entry.getElements()) {
-			if (element.getObject() instanceof CmisObjectType) {
-				assertNull(object2);
-				object2 = (CmisObjectType) element.getObject();
-			}
-		}
-
-		assertNotNull(object2);
-		assertNotNull(object2.getProperties());
-
-		// compare properteis
-		for (CmisProperty property1 : object1.getProperties().getProperty()) {
-			boolean found = false;
-
-			for (CmisProperty property2 : object2.getProperties().getProperty()) {
-				if (property1.getPropertyDefinitionId().equals(property2.getPropertyDefinitionId())) {
-					found = true;
-
-					assertEquals(property1, property2);
-					break;
-				}
-			}
-
-			assertTrue(found);
-		}
-	}
-
-	protected void assertEquals(CmisProperty expected, CmisProperty actual) throws Exception {
-		if ((expected == null) && (actual == null)) {
-			return;
-		}
-
-		if ((expected == null) || (actual == null)) {
-			fail("Property is null!");
-		}
-
-		assertEquals(expected.getPropertyDefinitionId(), actual.getPropertyDefinitionId());
-		assertEquals(expected.getClass(), actual.getClass());
-
-		Method m1 = expected.getClass().getMethod("getValue", new Class<?>[0]);
-		List<?> values1 = (List<?>) m1.invoke(expected, new Object[0]);
-		assertNotNull(values1);
-		assertFalse(values1.isEmpty());
-
-		Method m2 = actual.getClass().getMethod("getValue", new Class<?>[0]);
-		List<?> values2 = (List<?>) m2.invoke(actual, new Object[0]);
-		assertNotNull(values2);
-		assertFalse(values2.isEmpty());
-
-		assertEquals(values1.size(), values2.size());
-
-		for (int i = 0; i < values1.size(); i++) {
-			assertEquals(values1.get(i), values2.get(i));
-		}
-	}
+        CmisPropertyString propName = new CmisPropertyString();
+        propName.setPropertyDefinitionId(PropertyIds.NAME);
+        propName.getValue().add("TestName");
+        properties.getProperty().add(propName);
+
+        CmisPropertyInteger propInt = new CmisPropertyInteger();
+        propInt.setPropertyDefinitionId("IntProp");
+        propInt.getValue().add(BigInteger.valueOf(1));
+        propInt.getValue().add(BigInteger.valueOf(2));
+        propInt.getValue().add(BigInteger.valueOf(3));
+        properties.getProperty().add(propInt);
+
+        CmisPropertyDecimal propDec = new CmisPropertyDecimal();
+        propDec.setPropertyDefinitionId("DecProp");
+        propDec.getValue().add(
+                new BigDecimal("3.14159253589793238462643383279502884197"
+                        + "169399375105820974944592307816406286208998628034825342117067982148086513"));
+        properties.getProperty().add(propDec);
+
+        CmisObjectType object1 = new CmisObjectType();
+        object1.setProperties(properties);
+
+        // write the entry
+        AtomEntryWriter aew = new AtomEntryWriter(object1, CONTENT_TYPE, new ByteArrayInputStream(CONTENT));
+        aew.write(bao);
+
+        byte[] entryContent = bao.toByteArray();
+        assertTrue(entryContent.length > 0);
+
+        String entryContentStr = new String(entryContent, "UTF-8");
+        System.out.println(entryContentStr);
+
+        // parse it
+        AtomPubParser parser = new AtomPubParser(new ByteArrayInputStream(entryContent));
+        parser.parse();
+        AtomBase parseResult = parser.getResults();
+
+        assertTrue(parseResult instanceof AtomEntry);
+        AtomEntry entry = (AtomEntry) parseResult;
+
+        assertNotNull(entry);
+        assertTrue(entry.getElements().size() > 0);
+
+        // find the object
+        CmisObjectType object2 = null;
+        for (AtomElement element : entry.getElements()) {
+            if (element.getObject() instanceof CmisObjectType) {
+                assertNull(object2);
+                object2 = (CmisObjectType) element.getObject();
+            }
+        }
+
+        assertNotNull(object2);
+        assertNotNull(object2.getProperties());
+
+        // compare properteis
+        for (CmisProperty property1 : object1.getProperties().getProperty()) {
+            boolean found = false;
+
+            for (CmisProperty property2 : object2.getProperties().getProperty()) {
+                if (property1.getPropertyDefinitionId().equals(property2.getPropertyDefinitionId())) {
+                    found = true;
+
+                    assertEquals(property1, property2);
+                    break;
+                }
+            }
+
+            assertTrue(found);
+        }
+    }
+
+    protected void assertEquals(CmisProperty expected, CmisProperty actual) throws Exception {
+        if ((expected == null) && (actual == null)) {
+            return;
+        }
+
+        if ((expected == null) || (actual == null)) {
+            fail("Property is null!");
+        }
+
+        assertEquals(expected.getPropertyDefinitionId(), actual.getPropertyDefinitionId());
+        assertEquals(expected.getClass(), actual.getClass());
+
+        Method m1 = expected.getClass().getMethod("getValue", new Class<?>[0]);
+        List<?> values1 = (List<?>) m1.invoke(expected, new Object[0]);
+        assertNotNull(values1);
+        assertFalse(values1.isEmpty());
+
+        Method m2 = actual.getClass().getMethod("getValue", new Class<?>[0]);
+        List<?> values2 = (List<?>) m2.invoke(actual, new Object[0]);
+        assertNotNull(values2);
+        assertFalse(values2.isEmpty());
+
+        assertEquals(values1.size(), values2.size());
+
+        for (int i = 0; i < values1.size(); i++) {
+            assertEquals(values1.get(i), values2.get(i));
+        }
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/AtomPubTestBindingFactory.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/AtomPubTestBindingFactory.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/AtomPubTestBindingFactory.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/AtomPubTestBindingFactory.java Thu Apr 22 16:04:19 2010
@@ -31,18 +31,18 @@ import org.apache.chemistry.opencmis.com
  */
 public class AtomPubTestBindingFactory {
 
-	public static CmisBinding createBinding(String atomPubUrl, String user, String password) {
-		// gather parameters
-		Map<String, String> parameters = new HashMap<String, String>();
-		parameters.put(SessionParameter.USER, user);
-		parameters.put(SessionParameter.PASSWORD, password);
+    public static CmisBinding createBinding(String atomPubUrl, String user, String password) {
+        // gather parameters
+        Map<String, String> parameters = new HashMap<String, String>();
+        parameters.put(SessionParameter.USER, user);
+        parameters.put(SessionParameter.PASSWORD, password);
 
-		parameters.put(SessionParameter.ATOMPUB_URL, atomPubUrl);
+        parameters.put(SessionParameter.ATOMPUB_URL, atomPubUrl);
 
-		// get factory and create provider
-		CmisBindingFactory factory = CmisBindingFactory.newInstance();
-		CmisBinding binding = factory.createCmisAtomPubBinding(parameters);
+        // get factory and create provider
+        CmisBindingFactory factory = CmisBindingFactory.newInstance();
+        CmisBinding binding = factory.createCmisAtomPubBinding(parameters);
 
-		return binding;
-	}
+        return binding;
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/SimpleReadOnlyTests.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/SimpleReadOnlyTests.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/SimpleReadOnlyTests.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/SimpleReadOnlyTests.java Thu Apr 22 16:04:19 2010
@@ -30,36 +30,36 @@ import org.apache.chemistry.opencmis.com
  */
 public class SimpleReadOnlyTests extends AbstractSimpleReadOnlyTests {
 
-	private Set<String> fTests;
+    private Set<String> fTests;
 
-	public SimpleReadOnlyTests() {
-		fTests = new HashSet<String>();
-		fTests.add(TEST_REPOSITORY_INFO);
-		fTests.add(TEST_TYPES);
-		fTests.add(TEST_NAVIGATION);
-		fTests.add(TEST_CONTENT_STREAM);
-		fTests.add(TEST_QUERY);
-		fTests.add(TEST_CHECKEDOUT);
-		fTests.add(TEST_CONTENT_CHANGES);
-	}
+    public SimpleReadOnlyTests() {
+        fTests = new HashSet<String>();
+        fTests.add(TEST_REPOSITORY_INFO);
+        fTests.add(TEST_TYPES);
+        fTests.add(TEST_NAVIGATION);
+        fTests.add(TEST_CONTENT_STREAM);
+        fTests.add(TEST_QUERY);
+        fTests.add(TEST_CHECKEDOUT);
+        fTests.add(TEST_CONTENT_CHANGES);
+    }
 
-	@Override
-	protected CmisBinding createBinding() {
-		// Add the default Java cookie manager from Java 1.6 to optimize
-		// authentication
-		// by reusing the common case where a token is stored in a cookie.
-		// Note: Enable cookie management requires Java 1.6, uncomment the
-		// following two lines to
-		// enable cookie management for the tests.
-		// java.net.CookieManager cm = new java.net.CookieManager(null,
-		// CookiePolicy.ACCEPT_ALL);
-		// java.net.CookieHandler.setDefault(cm);
+    @Override
+    protected CmisBinding createBinding() {
+        // Add the default Java cookie manager from Java 1.6 to optimize
+        // authentication
+        // by reusing the common case where a token is stored in a cookie.
+        // Note: Enable cookie management requires Java 1.6, uncomment the
+        // following two lines to
+        // enable cookie management for the tests.
+        // java.net.CookieManager cm = new java.net.CookieManager(null,
+        // CookiePolicy.ACCEPT_ALL);
+        // java.net.CookieHandler.setDefault(cm);
 
-		return AtomPubTestBindingFactory.createBinding(getAtomPubURL(), getUsername(), getPassword());
-	}
+        return AtomPubTestBindingFactory.createBinding(getAtomPubURL(), getUsername(), getPassword());
+    }
 
-	@Override
-	protected Set<String> getEnabledTests() {
-		return fTests;
-	}
+    @Override
+    protected Set<String> getEnabledTests() {
+        return fTests;
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/SimpleReadWriteTests.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/SimpleReadWriteTests.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/SimpleReadWriteTests.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/atompub/SimpleReadWriteTests.java Thu Apr 22 16:04:19 2010
@@ -30,36 +30,36 @@ import org.apache.chemistry.opencmis.com
  */
 public class SimpleReadWriteTests extends AbstractSimpleReadWriteTests {
 
-	private Set<String> fTests;
+    private Set<String> fTests;
 
-	public SimpleReadWriteTests() {
-		fTests = new HashSet<String>();
-		fTests.add(TEST_CREATE_FOLDER);
-		fTests.add(TEST_CREATE_DOCUMENT);
-		fTests.add(TEST_SET_AND_DELETE_CONTENT);
-		fTests.add(TEST_UPDATE_PROPERTIES);
-		fTests.add(TEST_DELETE_TREE);
-		fTests.add(TEST_MOVE_OBJECT);
-		fTests.add(TEST_VERSIONING);
-	}
+    public SimpleReadWriteTests() {
+        fTests = new HashSet<String>();
+        fTests.add(TEST_CREATE_FOLDER);
+        fTests.add(TEST_CREATE_DOCUMENT);
+        fTests.add(TEST_SET_AND_DELETE_CONTENT);
+        fTests.add(TEST_UPDATE_PROPERTIES);
+        fTests.add(TEST_DELETE_TREE);
+        fTests.add(TEST_MOVE_OBJECT);
+        fTests.add(TEST_VERSIONING);
+    }
 
-	@Override
-	protected CmisBinding createBinding() {
-		// Add the default Java cookie manager from Java 1.6 to optimize
-		// authentication
-		// by reusing the common case where a token is stored in a cookie.
-		// Note: Enable cookie management requires Java 1.6, uncomment the
-		// following two lines to
-		// enable cookie management for the tests.
-		// java.net.CookieManager cm = new java.net.CookieManager(null,
-		// CookiePolicy.ACCEPT_ALL);
-		// java.net.CookieHandler.setDefault(cm);
+    @Override
+    protected CmisBinding createBinding() {
+        // Add the default Java cookie manager from Java 1.6 to optimize
+        // authentication
+        // by reusing the common case where a token is stored in a cookie.
+        // Note: Enable cookie management requires Java 1.6, uncomment the
+        // following two lines to
+        // enable cookie management for the tests.
+        // java.net.CookieManager cm = new java.net.CookieManager(null,
+        // CookiePolicy.ACCEPT_ALL);
+        // java.net.CookieHandler.setDefault(cm);
 
-		return AtomPubTestBindingFactory.createBinding(getAtomPubURL(), getUsername(), getPassword());
-	}
+        return AtomPubTestBindingFactory.createBinding(getAtomPubURL(), getUsername(), getPassword());
+    }
 
-	@Override
-	protected Set<String> getEnabledTests() {
-		return fTests;
-	}
+    @Override
+    protected Set<String> getEnabledTests() {
+        return fTests;
+    }
 }

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/cache/CacheTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/cache/CacheTest.java?rev=936922&r1=936921&r2=936922&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/cache/CacheTest.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/test/java/org/apache/chemistry/opencmis/client/bindings/cache/CacheTest.java Thu Apr 22 16:04:19 2010
@@ -34,180 +34,180 @@ import org.apache.chemistry.opencmis.cli
  */
 public class CacheTest extends TestCase {
 
-	public final static String MAP_CACHE_LEVEL = "org.apache.chemistry.opencmis.client.bindings.cache.impl.MapCacheLevelImpl";
-	public final static String LRU_CACHE_LEVEL = "org.apache.chemistry.opencmis.client.bindings.cache.impl.LruCacheLevelImpl";
+    public final static String MAP_CACHE_LEVEL = "org.apache.chemistry.opencmis.client.bindings.cache.impl.MapCacheLevelImpl";
+    public final static String LRU_CACHE_LEVEL = "org.apache.chemistry.opencmis.client.bindings.cache.impl.LruCacheLevelImpl";
 
-	public void testCache() throws Exception {
-		Cache cache;
+    public void testCache() throws Exception {
+        Cache cache;
 
-		cache = new CacheImpl();
-		cache.initialize(new String[] { MAP_CACHE_LEVEL, LRU_CACHE_LEVEL, MAP_CACHE_LEVEL, MAP_CACHE_LEVEL });
+        cache = new CacheImpl();
+        cache.initialize(new String[] { MAP_CACHE_LEVEL, LRU_CACHE_LEVEL, MAP_CACHE_LEVEL, MAP_CACHE_LEVEL });
 
-		String value1 = "value1";
-		String value2 = "value2";
-		String value3 = "value3";
-		Object valueObj;
-
-		// put and get
-		cache.put(value1, "l1", "l2a", "l3", "l4");
-		cache.put(value2, "l1", "l2b", "l3", "l4");
-		cache.put(value3, "l1", "l2c", "l3", "l4");
-
-		valueObj = cache.get("l1", "l2a", "l3", "l4");
-		assertTrue(valueObj instanceof String);
-		assertTrue(value1 == valueObj);
-
-		valueObj = cache.get("l1", "l2b", "l3", "l4");
-		assertTrue(valueObj instanceof String);
-		assertTrue(value2 == valueObj);
-
-		valueObj = cache.get("l1", "l2c", "l3", "l4");
-		assertTrue(valueObj instanceof String);
-		assertTrue(value3 == valueObj);
-
-		// remove leaf
-		cache.remove("l1", "l2", "l3", "l4");
-		valueObj = cache.get("l1", "l2", "l3", "l4");
-		assertNull(valueObj);
-
-		// put and get
-		cache.put(value1, "l1", "l2", "l3", "l4");
-		valueObj = cache.get("l1", "l2", "l3", "l4");
-		assertTrue(valueObj instanceof String);
-		assertTrue(value1 == valueObj);
-
-		// remove branch
-		cache.remove("l1", "l2");
-		valueObj = cache.get("l1", "l2", "l3", "l4");
-		assertNull(valueObj);
-	}
-
-	public void testCacheBadUsage() throws Exception {
-		Cache cache;
-
-		cache = new CacheImpl();
-		cache.initialize(new String[] { MAP_CACHE_LEVEL, LRU_CACHE_LEVEL, MAP_CACHE_LEVEL, MAP_CACHE_LEVEL });
-
-		// insufficient number of keys
-		try {
-			cache.put("value", "l1", "l2", "l3");
-		} catch (IllegalArgumentException e) {
-		}
-
-		// too many number of keys
-		try {
-			cache.put("value", "l1", "l2", "l3", "l4", "l5");
-		} catch (IllegalArgumentException e) {
-		}
-
-		// no keys
-		assertNull(cache.get((String[]) null));
-	}
-
-	public void testCacheConfig() throws Exception {
-		Cache cache;
-
-		// empty config
-		try {
-			cache = new CacheImpl();
-			cache.initialize(new String[] {});
-		} catch (IllegalArgumentException e) {
-		}
-
-		// null config
-		try {
-			cache = new CacheImpl();
-			cache.initialize(null);
-		} catch (IllegalArgumentException e) {
-		}
-
-		// unknown class
-		try {
-			cache = new CacheImpl();
-			cache.initialize(new String[] { "this.is.not.a.valid.class" });
-		} catch (IllegalArgumentException e) {
-		}
-
-		// not a CacheLevel class
-		try {
-			cache = new CacheImpl();
-			cache.initialize(new String[] { "org.apache.chemistry.opencmis.client.provider.cache.CacheTest" });
-		} catch (IllegalArgumentException e) {
-		}
-	}
-
-	public void testMapCache() throws Exception {
-		Cache cache;
-
-		cache = new CacheImpl();
-		cache.initialize(new String[] { MAP_CACHE_LEVEL + " " + MapCacheLevelImpl.CAPACITY + "=10,"
-				+ MapCacheLevelImpl.LOAD_FACTOR + "=0.5" });
-
-		for (int i = 0; i < 100; i++) {
-			cache.put("value" + i, "key" + i);
-		}
-
-		for (int i = 0; i < 100; i++) {
-			Object valueObj = cache.get("key" + i);
-			assertTrue(valueObj instanceof String);
-			assertEquals("value" + i, valueObj);
-		}
-	}
-
-	public void testURLCache() throws Exception {
-		Cache cache;
-
-		cache = new CacheImpl();
-		cache.initialize(new String[] { LRU_CACHE_LEVEL + " " + LruCacheLevelImpl.MAX_ENTRIES + "=10" });
-
-		for (int i = 0; i < 100; i++) {
-			cache.put("value" + i, "key" + i);
-		}
-
-		for (int i = 0; i < 90; i++) {
-			Object valueObj = cache.get("key" + i);
-			assertNull(valueObj);
-		}
-
-		for (int i = 90; i < 100; i++) {
-			Object valueObj = cache.get("key" + i);
-			assertTrue(valueObj instanceof String);
-			assertEquals("value" + i, valueObj);
-		}
-	}
-
-	public void XtestFallback() throws Exception {
-		Cache cache;
-
-		cache = new CacheImpl();
-		cache.initialize(new String[] { MAP_CACHE_LEVEL + " " + MapCacheLevelImpl.CAPACITY + "=10,"
-				+ MapCacheLevelImpl.LOAD_FACTOR + "=0.5" });
-
-		cache.put("value1", new String[] { null });
-		cache.put("value2", "key2");
-
-		assertEquals("value1", cache.get(new String[] { null }));
-		assertEquals("value2", cache.get("key2"));
-		assertEquals("value1", cache.get("key3"));
-	}
-
-	public void testContentTypeCache() throws Exception {
-		ContentTypeCacheLevelImpl cl = new ContentTypeCacheLevelImpl();
-		cl.initialize(null);
-
-		String type1 = "type1";
-
-		cl.put(type1, "text/plain; param1=test; charset=UTF-8");
-
-		assertEquals(type1, cl.get("text/plain; param1=test; charset=UTF-8"));
-		assertEquals(type1, cl.get("text/plain; param1=test; charset=utf-8"));
-		assertEquals(type1, cl.get("text/plain; charset=utf-8; param1=test"));
-		assertEquals(type1, cl.get("text/plain; charset=utf-8; param1=test;"));
-		assertEquals(type1, cl.get("text/plain;charset=utf-8;param1=test"));
-		assertEquals(type1, cl.get("text/plain;\tcharset=utf-8;     param1=test"));
-		assertEquals(type1, cl.get("text/plain; charset=\"utf-8\"; param1=test;"));
-
-		assertNull(cl.get("text/plain; param1=blah; charset=UTF-8"));
-		assertNull(cl.get("text/plain; param1=test; charset=us-ascii"));
-	}
+        String value1 = "value1";
+        String value2 = "value2";
+        String value3 = "value3";
+        Object valueObj;
+
+        // put and get
+        cache.put(value1, "l1", "l2a", "l3", "l4");
+        cache.put(value2, "l1", "l2b", "l3", "l4");
+        cache.put(value3, "l1", "l2c", "l3", "l4");
+
+        valueObj = cache.get("l1", "l2a", "l3", "l4");
+        assertTrue(valueObj instanceof String);
+        assertTrue(value1 == valueObj);
+
+        valueObj = cache.get("l1", "l2b", "l3", "l4");
+        assertTrue(valueObj instanceof String);
+        assertTrue(value2 == valueObj);
+
+        valueObj = cache.get("l1", "l2c", "l3", "l4");
+        assertTrue(valueObj instanceof String);
+        assertTrue(value3 == valueObj);
+
+        // remove leaf
+        cache.remove("l1", "l2", "l3", "l4");
+        valueObj = cache.get("l1", "l2", "l3", "l4");
+        assertNull(valueObj);
+
+        // put and get
+        cache.put(value1, "l1", "l2", "l3", "l4");
+        valueObj = cache.get("l1", "l2", "l3", "l4");
+        assertTrue(valueObj instanceof String);
+        assertTrue(value1 == valueObj);
+
+        // remove branch
+        cache.remove("l1", "l2");
+        valueObj = cache.get("l1", "l2", "l3", "l4");
+        assertNull(valueObj);
+    }
+
+    public void testCacheBadUsage() throws Exception {
+        Cache cache;
+
+        cache = new CacheImpl();
+        cache.initialize(new String[] { MAP_CACHE_LEVEL, LRU_CACHE_LEVEL, MAP_CACHE_LEVEL, MAP_CACHE_LEVEL });
+
+        // insufficient number of keys
+        try {
+            cache.put("value", "l1", "l2", "l3");
+        } catch (IllegalArgumentException e) {
+        }
+
+        // too many number of keys
+        try {
+            cache.put("value", "l1", "l2", "l3", "l4", "l5");
+        } catch (IllegalArgumentException e) {
+        }
+
+        // no keys
+        assertNull(cache.get((String[]) null));
+    }
+
+    public void testCacheConfig() throws Exception {
+        Cache cache;
+
+        // empty config
+        try {
+            cache = new CacheImpl();
+            cache.initialize(new String[] {});
+        } catch (IllegalArgumentException e) {
+        }
+
+        // null config
+        try {
+            cache = new CacheImpl();
+            cache.initialize(null);
+        } catch (IllegalArgumentException e) {
+        }
+
+        // unknown class
+        try {
+            cache = new CacheImpl();
+            cache.initialize(new String[] { "this.is.not.a.valid.class" });
+        } catch (IllegalArgumentException e) {
+        }
+
+        // not a CacheLevel class
+        try {
+            cache = new CacheImpl();
+            cache.initialize(new String[] { "org.apache.chemistry.opencmis.client.provider.cache.CacheTest" });
+        } catch (IllegalArgumentException e) {
+        }
+    }
+
+    public void testMapCache() throws Exception {
+        Cache cache;
+
+        cache = new CacheImpl();
+        cache.initialize(new String[] { MAP_CACHE_LEVEL + " " + MapCacheLevelImpl.CAPACITY + "=10,"
+                + MapCacheLevelImpl.LOAD_FACTOR + "=0.5" });
+
+        for (int i = 0; i < 100; i++) {
+            cache.put("value" + i, "key" + i);
+        }
+
+        for (int i = 0; i < 100; i++) {
+            Object valueObj = cache.get("key" + i);
+            assertTrue(valueObj instanceof String);
+            assertEquals("value" + i, valueObj);
+        }
+    }
+
+    public void testURLCache() throws Exception {
+        Cache cache;
+
+        cache = new CacheImpl();
+        cache.initialize(new String[] { LRU_CACHE_LEVEL + " " + LruCacheLevelImpl.MAX_ENTRIES + "=10" });
+
+        for (int i = 0; i < 100; i++) {
+            cache.put("value" + i, "key" + i);
+        }
+
+        for (int i = 0; i < 90; i++) {
+            Object valueObj = cache.get("key" + i);
+            assertNull(valueObj);
+        }
+
+        for (int i = 90; i < 100; i++) {
+            Object valueObj = cache.get("key" + i);
+            assertTrue(valueObj instanceof String);
+            assertEquals("value" + i, valueObj);
+        }
+    }
+
+    public void XtestFallback() throws Exception {
+        Cache cache;
+
+        cache = new CacheImpl();
+        cache.initialize(new String[] { MAP_CACHE_LEVEL + " " + MapCacheLevelImpl.CAPACITY + "=10,"
+                + MapCacheLevelImpl.LOAD_FACTOR + "=0.5" });
+
+        cache.put("value1", new String[] { null });
+        cache.put("value2", "key2");
+
+        assertEquals("value1", cache.get(new String[] { null }));
+        assertEquals("value2", cache.get("key2"));
+        assertEquals("value1", cache.get("key3"));
+    }
+
+    public void testContentTypeCache() throws Exception {
+        ContentTypeCacheLevelImpl cl = new ContentTypeCacheLevelImpl();
+        cl.initialize(null);
+
+        String type1 = "type1";
+
+        cl.put(type1, "text/plain; param1=test; charset=UTF-8");
+
+        assertEquals(type1, cl.get("text/plain; param1=test; charset=UTF-8"));
+        assertEquals(type1, cl.get("text/plain; param1=test; charset=utf-8"));
+        assertEquals(type1, cl.get("text/plain; charset=utf-8; param1=test"));
+        assertEquals(type1, cl.get("text/plain; charset=utf-8; param1=test;"));
+        assertEquals(type1, cl.get("text/plain;charset=utf-8;param1=test"));
+        assertEquals(type1, cl.get("text/plain;\tcharset=utf-8;     param1=test"));
+        assertEquals(type1, cl.get("text/plain; charset=\"utf-8\"; param1=test;"));
+
+        assertNull(cl.get("text/plain; param1=blah; charset=UTF-8"));
+        assertNull(cl.get("text/plain; param1=test; charset=us-ascii"));
+    }
 }