You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2011/11/24 20:18:53 UTC
svn commit: r1205962 [1/2] - in /chemistry/opencmis/trunk:
chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/
chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/ma...
Author: fmui
Date: Thu Nov 24 19:18:48 2011
New Revision: 1205962
URL: http://svn.apache.org/viewvc?rev=1205962&view=rev
Log:
reorganized code in order to start browser binding client implementation
Added:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/LinkAccess.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/http/
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/http/HttpUtils.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/JSONConstants.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/JSONConverter.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/TypeCache.java
Removed:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/HttpUtils.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/LinkAccess.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/TypeCache.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/json/
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AbstractAtomPubService.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AclServiceImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/DiscoveryServiceImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/MultiFilingServiceImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/NavigationServiceImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/ObjectServiceImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/PolicyServiceImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/RelationshipServiceImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/RepositoryServiceImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/VersioningServiceImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/browser/AbstractBrowserBindingService.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/browser/RepositoryServiceImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/pom.xml
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/Constants.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/pom.xml
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/AclService.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/BrowserBindingUtils.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/CmisBrowserBindingServlet.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/DiscoveryService.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/MultiFilingService.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/NavigationService.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/PolicyService.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/RelationshipService.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/RepositoryService.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/VersioningService.java
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java
Added: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/LinkAccess.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/LinkAccess.java?rev=1205962&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/LinkAccess.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/LinkAccess.java Thu Nov 24 19:18:48 2011
@@ -0,0 +1,38 @@
+/*
+ * 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.chemistry.opencmis.client.bindings.spi;
+
+/**
+ * Provides access to internal links. It bypasses the CMIS domain model. Use
+ * with care!
+ */
+public interface LinkAccess {
+
+ /**
+ * Gets a link from the cache if it is there or loads it into the cache if
+ * it is not there.
+ */
+ String loadLink(String repositoryId, String objectId, String rel, String type);
+
+ /**
+ * Gets the content link from the cache if it is there or loads it into the
+ * cache if it is not there.
+ */
+ String loadContentLink(String repositoryId, String documentId);
+}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AbstractAtomPubService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AbstractAtomPubService.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AbstractAtomPubService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AbstractAtomPubService.java Thu Nov 24 19:18:48 2011
@@ -31,6 +31,7 @@ import java.util.Map;
import java.util.Set;
import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
+import org.apache.chemistry.opencmis.client.bindings.spi.LinkAccess;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomAcl;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomBase;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomElement;
@@ -38,6 +39,7 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomLink;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.RepositoryWorkspace;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.ServiceDoc;
+import org.apache.chemistry.opencmis.client.bindings.spi.http.HttpUtils;
import org.apache.chemistry.opencmis.commons.PropertyIds;
import org.apache.chemistry.opencmis.commons.SessionParameter;
import org.apache.chemistry.opencmis.commons.data.Ace;
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AclServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AclServiceImpl.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AclServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AclServiceImpl.java Thu Nov 24 19:18:48 2011
@@ -22,6 +22,7 @@ import static org.apache.chemistry.openc
import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomAcl;
+import org.apache.chemistry.opencmis.client.bindings.spi.http.HttpUtils;
import org.apache.chemistry.opencmis.commons.data.Acl;
import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
import org.apache.chemistry.opencmis.commons.enums.AclPropagation;
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/DiscoveryServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/DiscoveryServiceImpl.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/DiscoveryServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/DiscoveryServiceImpl.java Thu Nov 24 19:18:48 2011
@@ -29,6 +29,7 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomEntry;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomFeed;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomLink;
+import org.apache.chemistry.opencmis.client.bindings.spi.http.HttpUtils;
import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
import org.apache.chemistry.opencmis.commons.data.ObjectData;
import org.apache.chemistry.opencmis.commons.data.ObjectList;
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/MultiFilingServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/MultiFilingServiceImpl.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/MultiFilingServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/MultiFilingServiceImpl.java Thu Nov 24 19:18:48 2011
@@ -21,6 +21,7 @@ package org.apache.chemistry.opencmis.cl
import java.io.OutputStream;
import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
+import org.apache.chemistry.opencmis.client.bindings.spi.http.HttpUtils;
import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/NavigationServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/NavigationServiceImpl.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/NavigationServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/NavigationServiceImpl.java Thu Nov 24 19:18:48 2011
@@ -30,6 +30,7 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomEntry;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomFeed;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomLink;
+import org.apache.chemistry.opencmis.client.bindings.spi.http.HttpUtils;
import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
import org.apache.chemistry.opencmis.commons.data.ObjectData;
import org.apache.chemistry.opencmis.commons.data.ObjectInFolderContainer;
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/ObjectServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/ObjectServiceImpl.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/ObjectServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/ObjectServiceImpl.java Thu Nov 24 19:18:48 2011
@@ -35,6 +35,7 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomEntry;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomFeed;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomLink;
+import org.apache.chemistry.opencmis.client.bindings.spi.http.HttpUtils;
import org.apache.chemistry.opencmis.commons.PropertyIds;
import org.apache.chemistry.opencmis.commons.data.Acl;
import org.apache.chemistry.opencmis.commons.data.AllowableActions;
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/PolicyServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/PolicyServiceImpl.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/PolicyServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/PolicyServiceImpl.java Thu Nov 24 19:18:48 2011
@@ -29,6 +29,7 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomEntry;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomFeed;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomLink;
+import org.apache.chemistry.opencmis.client.bindings.spi.http.HttpUtils;
import org.apache.chemistry.opencmis.commons.PropertyIds;
import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
import org.apache.chemistry.opencmis.commons.data.ObjectData;
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/RelationshipServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/RelationshipServiceImpl.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/RelationshipServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/RelationshipServiceImpl.java Thu Nov 24 19:18:48 2011
@@ -28,6 +28,7 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomEntry;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomFeed;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomLink;
+import org.apache.chemistry.opencmis.client.bindings.spi.http.HttpUtils;
import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
import org.apache.chemistry.opencmis.commons.data.ObjectData;
import org.apache.chemistry.opencmis.commons.data.ObjectList;
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/RepositoryServiceImpl.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/RepositoryServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/RepositoryServiceImpl.java Thu Nov 24 19:18:48 2011
@@ -29,6 +29,7 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomEntry;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomFeed;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomLink;
+import org.apache.chemistry.opencmis.client.bindings.spi.http.HttpUtils;
import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/VersioningServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/VersioningServiceImpl.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/VersioningServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/VersioningServiceImpl.java Thu Nov 24 19:18:48 2011
@@ -31,6 +31,7 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomEntry;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomFeed;
import org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomLink;
+import org.apache.chemistry.opencmis.client.bindings.spi.http.HttpUtils;
import org.apache.chemistry.opencmis.commons.data.Acl;
import org.apache.chemistry.opencmis.commons.data.ContentStream;
import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/browser/AbstractBrowserBindingService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/browser/AbstractBrowserBindingService.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/browser/AbstractBrowserBindingService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/browser/AbstractBrowserBindingService.java Thu Nov 24 19:18:48 2011
@@ -18,8 +18,41 @@
*/
package org.apache.chemistry.opencmis.client.bindings.spi.browser;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
-import org.apache.chemistry.opencmis.client.bindings.spi.atompub.LinkAccess;
+import org.apache.chemistry.opencmis.client.bindings.spi.LinkAccess;
+import org.apache.chemistry.opencmis.client.bindings.spi.http.HttpUtils;
+import org.apache.chemistry.opencmis.commons.SessionParameter;
+import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisBaseException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisContentAlreadyExistsException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisFilterNotValidException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisNameConstraintViolationException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisNotSupportedException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisPermissionDeniedException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisProxyAuthenticationException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisStorageException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisStreamNotSupportedException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisUnauthorizedException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisUpdateConflictException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisVersioningException;
+import org.apache.chemistry.opencmis.commons.impl.Constants;
+import org.apache.chemistry.opencmis.commons.impl.JSONConstants;
+import org.apache.chemistry.opencmis.commons.impl.JSONConverter;
+import org.apache.chemistry.opencmis.commons.impl.UrlBuilder;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
/**
* Base class for all Browser Binding client services.
@@ -42,6 +75,193 @@ public abstract class AbstractBrowserBin
return session;
}
+ /**
+ * Returns the service URL of this session.
+ */
+ protected String getServiceURL() {
+ Object url = session.get(SessionParameter.BROWSER_URL);
+ if (url instanceof String) {
+ return (String) url;
+ }
+
+ return null;
+ }
+
+ // ---- exceptions ----
+
+ /**
+ * Converts an error message or a HTTP status code into an Exception.
+ */
+ protected CmisBaseException convertStatusCode(int code, String message, String errorContent, Throwable t) {
+
+ Object obj = null;
+ try {
+ JSONParser parser = new JSONParser();
+ obj = parser.parse(errorContent);
+ } catch (Exception pe) {
+ }
+
+ if (obj instanceof JSONObject) {
+ JSONObject json = (JSONObject) obj;
+ Object jsonError = json.get(JSONConstants.ERROR_EXCEPTION);
+ if (jsonError instanceof String) {
+ Object jsonMessage = json.get(JSONConstants.ERROR_MESSAGE);
+ if (jsonMessage != null) {
+ message = jsonMessage.toString();
+ }
+
+ if (CmisConstraintException.EXCEPTION_NAME.equalsIgnoreCase((String) jsonError)) {
+ return new CmisConstraintException(message, errorContent, t);
+ } else if (CmisContentAlreadyExistsException.EXCEPTION_NAME.equalsIgnoreCase((String) jsonError)) {
+ return new CmisContentAlreadyExistsException(message, errorContent, t);
+ } else if (CmisFilterNotValidException.EXCEPTION_NAME.equalsIgnoreCase((String) jsonError)) {
+ return new CmisFilterNotValidException(message, errorContent, t);
+ } else if (CmisInvalidArgumentException.EXCEPTION_NAME.equalsIgnoreCase((String) jsonError)) {
+ return new CmisInvalidArgumentException(message, errorContent, t);
+ } else if (CmisNameConstraintViolationException.EXCEPTION_NAME.equalsIgnoreCase((String) jsonError)) {
+ return new CmisNameConstraintViolationException(message, errorContent, t);
+ } else if (CmisNotSupportedException.EXCEPTION_NAME.equalsIgnoreCase((String) jsonError)) {
+ return new CmisNotSupportedException(message, errorContent, t);
+ } else if (CmisObjectNotFoundException.EXCEPTION_NAME.equalsIgnoreCase((String) jsonError)) {
+ return new CmisObjectNotFoundException(message, errorContent, t);
+ } else if (CmisPermissionDeniedException.EXCEPTION_NAME.equalsIgnoreCase((String) jsonError)) {
+ return new CmisPermissionDeniedException(message, errorContent, t);
+ } else if (CmisStorageException.EXCEPTION_NAME.equalsIgnoreCase((String) jsonError)) {
+ return new CmisStorageException(message, errorContent, t);
+ } else if (CmisStreamNotSupportedException.EXCEPTION_NAME.equalsIgnoreCase((String) jsonError)) {
+ return new CmisStreamNotSupportedException(message, errorContent, t);
+ } else if (CmisUpdateConflictException.EXCEPTION_NAME.equalsIgnoreCase((String) jsonError)) {
+ return new CmisUpdateConflictException(message, errorContent, t);
+ } else if (CmisVersioningException.EXCEPTION_NAME.equalsIgnoreCase((String) jsonError)) {
+ return new CmisVersioningException(message, errorContent, t);
+ }
+ }
+ }
+
+ // fall back to status code
+ switch (code) {
+ case 400:
+ return new CmisInvalidArgumentException(message, errorContent, t);
+ case 401:
+ return new CmisUnauthorizedException(message, errorContent, t);
+ case 403:
+ return new CmisPermissionDeniedException(message, errorContent, t);
+ case 404:
+ return new CmisObjectNotFoundException(message, errorContent, t);
+ case 405:
+ return new CmisNotSupportedException(message, errorContent, t);
+ case 407:
+ return new CmisProxyAuthenticationException(message, errorContent, t);
+ case 409:
+ return new CmisConstraintException(message, errorContent, t);
+ default:
+ return new CmisRuntimeException(message, errorContent, t);
+ }
+ }
+
+ // ---- helpers ----
+
+ /**
+ * Parses an input stream.
+ */
+ protected Object parse(InputStream stream, String charset) {
+ Object obj = null;
+ try {
+ JSONParser parser = new JSONParser();
+ obj = parser.parse(new InputStreamReader(stream, charset));
+ } catch (Exception e) {
+ throw new CmisConnectionException("Parsing exception!", e);
+ } finally {
+ try {
+ stream.close();
+ } catch (Exception e) {
+ }
+ }
+
+ return obj;
+ }
+
+ /**
+ * Performs a GET on an URL, checks the response code and returns the
+ * result.
+ */
+ protected HttpUtils.Response read(UrlBuilder url) {
+ // make the call
+ HttpUtils.Response resp = HttpUtils.invokeGET(url, session);
+
+ // check response code
+ if (resp.getResponseCode() != 200) {
+ throw convertStatusCode(resp.getResponseCode(), resp.getResponseMessage(), resp.getErrorContent(), null);
+ }
+
+ return resp;
+ }
+
+ /**
+ * Performs a POST on an URL, checks the response code and returns the
+ * result.
+ */
+ protected HttpUtils.Response post(UrlBuilder url, String contentType, HttpUtils.Output writer) {
+ // make the call
+ HttpUtils.Response resp = HttpUtils.invokePOST(url, contentType, writer, session);
+
+ // check response code
+ if (resp.getResponseCode() != 200 && resp.getResponseCode() != 201) {
+ throw convertStatusCode(resp.getResponseCode(), resp.getResponseMessage(), resp.getErrorContent(), null);
+ }
+
+ return resp;
+ }
+
+ // ---- URL ----
+
+ /**
+ * Returns the repository URL cache or creates a new cache if it doesn't
+ * exist.
+ */
+ protected RepositoryUrlCache geRepositoryUrlCache() {
+ RepositoryUrlCache repositoryUrlCache = (RepositoryUrlCache) getSession().get(
+ SpiSessionParameter.REPOSITORY_URL_CACHE);
+ if (repositoryUrlCache == null) {
+ repositoryUrlCache = new RepositoryUrlCache();
+ getSession().put(SpiSessionParameter.REPOSITORY_URL_CACHE, repositoryUrlCache);
+ }
+
+ return repositoryUrlCache;
+ }
+
+ /**
+ * Retrieves the the repository info objects.
+ */
+ protected List<RepositoryInfo> getRepositoriesInternal(String repositoryId) {
+ // retrieve service doc
+ UrlBuilder url = new UrlBuilder(getServiceURL());
+ url.addParameter(Constants.PARAM_REPOSITORY_ID, repositoryId);
+
+ // read and parse
+ HttpUtils.Response resp = read(url);
+
+ Object json = parse(resp.getStream(), resp.getCharset());
+
+ if (json instanceof JSONObject) {
+ return Collections.singletonList(JSONConverter.convertRepositoryInfo((JSONObject) json));
+ }
+
+ if (json instanceof JSONArray) {
+ List<RepositoryInfo> repInfos = new ArrayList<RepositoryInfo>();
+
+ for (Object ri : ((JSONArray) json)) {
+ if (ri instanceof JSONObject) {
+ repInfos.add(JSONConverter.convertRepositoryInfo((JSONObject) json));
+ }
+ }
+
+ return repInfos;
+ }
+
+ throw new CmisConnectionException("Repository Infos could not be read!");
+ }
+
// ---- LinkAccess interface ----
public String loadLink(String repositoryId, String objectId, String rel, String type) {
@@ -50,7 +270,7 @@ public abstract class AbstractBrowserBin
}
public String loadContentLink(String repositoryId, String documentId) {
- // TODO Auto-generated method stub
- return null;
+ UrlBuilder result = geRepositoryUrlCache().getObjectUrl(repositoryId, documentId, Constants.SELECTOR_CONTENT);
+ return result == null ? null : result.toString();
}
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/browser/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/browser/RepositoryServiceImpl.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/browser/RepositoryServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/browser/RepositoryServiceImpl.java Thu Nov 24 19:18:48 2011
@@ -27,6 +27,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionContainer;
import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionList;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
import org.apache.chemistry.opencmis.commons.spi.RepositoryService;
/**
@@ -42,13 +43,24 @@ public class RepositoryServiceImpl exten
}
public List<RepositoryInfo> getRepositoryInfos(ExtensionsData extension) {
- // TODO Auto-generated method stub
- return null;
+ return getRepositoriesInternal(null);
}
public RepositoryInfo getRepositoryInfo(String repositoryId, ExtensionsData extension) {
- // TODO Auto-generated method stub
- return null;
+ List<RepositoryInfo> repositoryInfos = getRepositoriesInternal(repositoryId);
+
+ // find the repository
+ for (RepositoryInfo info : repositoryInfos) {
+ if (info.getId() == null) {
+ continue;
+ }
+
+ if (info.getId().equals(repositoryId)) {
+ return info;
+ }
+ }
+
+ throw new CmisObjectNotFoundException("Repository not found!");
}
public TypeDefinitionList getTypeChildren(String repositoryId, String typeId, Boolean includePropertyDefinitions,
Added: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/http/HttpUtils.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/http/HttpUtils.java?rev=1205962&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/http/HttpUtils.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/http/HttpUtils.java Thu Nov 24 19:18:48 2011
@@ -0,0 +1,416 @@
+/*
+ * 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.chemistry.opencmis.client.bindings.spi.http;
+
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.math.BigInteger;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+import java.util.zip.Inflater;
+import java.util.zip.InflaterInputStream;
+
+import org.apache.chemistry.opencmis.client.bindings.impl.ClientVersion;
+import org.apache.chemistry.opencmis.client.bindings.impl.CmisBindingsHelper;
+import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
+import org.apache.chemistry.opencmis.commons.SessionParameter;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException;
+import org.apache.chemistry.opencmis.commons.impl.Base64;
+import org.apache.chemistry.opencmis.commons.impl.UrlBuilder;
+import org.apache.chemistry.opencmis.commons.spi.AuthenticationProvider;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * HTTP helper methods.
+ */
+public class HttpUtils {
+
+ private static final Log log = LogFactory.getLog(HttpUtils.class);
+
+ private static final int BUFFER_SIZE = 2 * 1024 * 1024;
+
+ private HttpUtils() {
+ }
+
+ public static Response invokeGET(UrlBuilder url, BindingSession session) {
+ return invoke(url, "GET", null, null, null, session, null, null);
+ }
+
+ public static Response invokeGET(UrlBuilder url, BindingSession session, BigInteger offset, BigInteger length) {
+ return invoke(url, "GET", null, null, null, session, offset, length);
+ }
+
+ public static Response invokePOST(UrlBuilder url, String contentType, Output writer, BindingSession session) {
+ return invoke(url, "POST", contentType, null, writer, session, null, null);
+ }
+
+ public static Response invokePUT(UrlBuilder url, String contentType, Map<String, String> headers, Output writer,
+ BindingSession session) {
+ return invoke(url, "PUT", contentType, headers, writer, session, null, null);
+ }
+
+ public static Response invokeDELETE(UrlBuilder url, BindingSession session) {
+ return invoke(url, "DELETE", null, null, null, session, null, null);
+ }
+
+ private static Response invoke(UrlBuilder url, String method, String contentType, Map<String, String> headers,
+ Output writer, BindingSession session, BigInteger offset, BigInteger length) {
+ try {
+ // log before connect
+ if (log.isDebugEnabled()) {
+ log.debug(method + " " + url);
+ }
+
+ // connect
+ HttpURLConnection conn = (HttpURLConnection) (new URL(url.toString())).openConnection();
+ conn.setRequestMethod(method);
+ conn.setDoInput(true);
+ conn.setDoOutput(writer != null);
+ conn.setAllowUserInteraction(false);
+ conn.setUseCaches(false);
+ conn.setRequestProperty("User-Agent", ClientVersion.OPENCMIS_CLIENT);
+
+ // timeouts
+ int connectTimeout = session.get(SessionParameter.CONNECT_TIMEOUT, -1);
+ if (connectTimeout >= 0) {
+ conn.setConnectTimeout(connectTimeout);
+ }
+
+ int readTimeout = session.get(SessionParameter.READ_TIMEOUT, -1);
+ if (readTimeout >= 0) {
+ conn.setReadTimeout(readTimeout);
+ }
+
+ // set content type
+ if (contentType != null) {
+ conn.setRequestProperty("Content-Type", contentType);
+ }
+ // set other headers
+ if (headers != null) {
+ for (Map.Entry<String, String> header : headers.entrySet()) {
+ conn.setRequestProperty(header.getKey(), header.getValue());
+ }
+ }
+
+ // authenticate
+ AuthenticationProvider authProvider = CmisBindingsHelper.getAuthenticationProvider(session);
+ if (authProvider != null) {
+ Map<String, List<String>> httpHeaders = authProvider.getHTTPHeaders(url.toString());
+ if (httpHeaders != null) {
+ for (Map.Entry<String, List<String>> header : httpHeaders.entrySet()) {
+ if (header.getValue() != null) {
+ for (String value : header.getValue()) {
+ conn.setRequestProperty(header.getKey(), value);
+ }
+ }
+ }
+ }
+ }
+
+ // range
+ if ((offset != null) || (length != null)) {
+ StringBuilder sb = new StringBuilder("bytes=");
+
+ if ((offset == null) || (offset.signum() == -1)) {
+ offset = BigInteger.ZERO;
+ }
+
+ sb.append(offset.toString());
+ sb.append("-");
+
+ if ((length != null) && (length.signum() == 1)) {
+ sb.append(offset.add(length.subtract(BigInteger.ONE)).toString());
+ }
+
+ conn.setRequestProperty("Range", sb.toString());
+ }
+
+ // compression
+ Object compression = session.get(SessionParameter.COMPRESSION);
+ if ((compression != null) && Boolean.parseBoolean(compression.toString())) {
+ conn.setRequestProperty("Accept-Encoding", "gzip,deflate");
+ }
+
+ // locale
+ if (session.get(CmisBindingsHelper.ACCEPT_LANGUAGE) instanceof String) {
+ conn.setRequestProperty("Accept-Language", session.get(CmisBindingsHelper.ACCEPT_LANGUAGE).toString());
+ }
+
+ // send data
+ if (writer != null) {
+ conn.setChunkedStreamingMode((64 * 1024) - 1);
+
+ OutputStream connOut = null;
+
+ Object clientCompression = session.get(SessionParameter.CLIENT_COMPRESSION);
+ if ((clientCompression != null) && Boolean.parseBoolean(clientCompression.toString())) {
+ conn.setRequestProperty("Content-Encoding", "gzip");
+ connOut = new GZIPOutputStream(conn.getOutputStream(), 4096);
+ } else {
+ connOut = conn.getOutputStream();
+ }
+
+ OutputStream out = new BufferedOutputStream(connOut, BUFFER_SIZE);
+ writer.write(out);
+ out.flush();
+ }
+
+ // connect
+ conn.connect();
+
+ // get stream, if present
+ int respCode = conn.getResponseCode();
+ InputStream inputStream = null;
+ if ((respCode == 200) || (respCode == 201) || (respCode == 203) || (respCode == 206)) {
+ inputStream = conn.getInputStream();
+ }
+
+ // forward response HTTP headers
+ if (authProvider != null) {
+ authProvider.putResponseHeaders(url.toString(), respCode, conn.getHeaderFields());
+ }
+
+ // get the response
+ return new Response(respCode, conn.getResponseMessage(), conn.getHeaderFields(), inputStream,
+ conn.getErrorStream());
+ } catch (Exception e) {
+ throw new CmisConnectionException("Cannot access " + url + ": " + e.getMessage(), e);
+ }
+ }
+
+ /**
+ * HTTP Response.
+ */
+ public static class Response {
+ private final int responseCode;
+ private final String responseMessage;
+ private final Map<String, List<String>> headers;
+ private InputStream stream;
+ private String errorContent;
+ private BigInteger length;
+ private String charset;
+
+ public Response(int responseCode, String responseMessage, Map<String, List<String>> headers,
+ InputStream responseStream, InputStream errorStream) {
+ this.responseCode = responseCode;
+ this.responseMessage = responseMessage;
+ stream = responseStream;
+
+ this.headers = new HashMap<String, List<String>>();
+ if (headers != null) {
+ for (Map.Entry<String, List<String>> e : headers.entrySet()) {
+ this.headers.put(e.getKey() == null ? null : e.getKey().toLowerCase(), e.getValue());
+ }
+ }
+
+ // determine charset
+ charset = "UTF-8";
+ String contentType = getContentTypeHeader();
+ if (contentType != null) {
+ String[] parts = contentType.split(";");
+ for (int i = 1; i < parts.length; i++) {
+ String part = parts[i].trim().toLowerCase();
+ if (part.startsWith("charset")) {
+ int x = part.indexOf('=');
+ charset = part.substring(x + 1).trim();
+ break;
+ }
+ }
+ }
+
+ // if there is an error page, get it
+ if (errorStream != null) {
+ if (contentType != null) {
+ String contentTypeLower = contentType.toLowerCase().split(";")[0];
+ if (contentTypeLower.startsWith("text/") || contentTypeLower.endsWith("+xml")) {
+ StringBuilder sb = new StringBuilder();
+
+ try {
+ String encoding = getContentEncoding();
+ if (encoding != null) {
+ if (encoding.toLowerCase().trim().equals("gzip")) {
+ try {
+ errorStream = new GZIPInputStream(errorStream, 4096);
+ } catch (IOException e) {
+ }
+ } else if (encoding.toLowerCase().trim().equals("deflate")) {
+ errorStream = new InflaterInputStream(errorStream, new Inflater(true), 4096);
+ }
+ }
+
+ InputStreamReader reader = new InputStreamReader(errorStream, charset);
+ char[] buffer = new char[4096];
+ int b;
+ while ((b = reader.read(buffer)) > -1) {
+ sb.append(buffer, 0, b);
+ }
+ reader.close();
+
+ errorContent = sb.toString();
+ } catch (IOException e) {
+ errorContent = "Unable to retrieve content: " + e.getMessage();
+ }
+ }
+ } else {
+ try {
+ errorStream.close();
+ } catch (IOException e) {
+ }
+ }
+
+ if (responseStream != null) {
+ try {
+ responseStream.close();
+ } catch (IOException e) {
+ }
+ }
+
+ return;
+ }
+
+ // get the stream length
+ String lengthStr = getHeader("Content-Length");
+ if (lengthStr != null) {
+ try {
+ length = new BigInteger(lengthStr);
+ } catch (NumberFormatException e) {
+ }
+ }
+
+ if (stream != null) {
+ String encoding = getContentEncoding();
+ if (encoding != null) {
+ if (encoding.toLowerCase().trim().equals("gzip")) {
+ // if the stream is gzip encoded, decode it
+ length = null;
+ try {
+ stream = new GZIPInputStream(stream, 4096);
+ } catch (IOException e) {
+ errorContent = e.getMessage();
+ stream = null;
+ try {
+ responseStream.close();
+ } catch (IOException ec) {
+ }
+ }
+ } else if (encoding.toLowerCase().trim().equals("deflate")) {
+ // if the stream is deflate encoded, decode it
+ length = null;
+ stream = new InflaterInputStream(stream, new Inflater(true), 4096);
+ }
+ }
+
+ String transferEncoding = getContentTransferEncoding();
+ if ((stream != null) && (transferEncoding != null)
+ && (transferEncoding.toLowerCase().trim().equals("base64"))) {
+ // if the stream is base64 encoded, decode it
+ length = null;
+ stream = new Base64.InputStream(stream);
+ }
+ }
+ }
+
+ public int getResponseCode() {
+ return responseCode;
+ }
+
+ public String getResponseMessage() {
+ return responseMessage;
+ }
+
+ public Map<String, List<String>> getHeaders() {
+ return headers;
+ }
+
+ public String getHeader(String name) {
+ List<String> list = headers.get(name.toLowerCase(Locale.US));
+ if ((list == null) || (list.isEmpty())) {
+ return null;
+ }
+
+ return list.get(0);
+ }
+
+ public String getContentTypeHeader() {
+ return getHeader("Content-Type");
+ }
+
+ public BigInteger getContentLengthHeader() {
+ String lengthStr = getHeader("Content-Length");
+ if (lengthStr == null) {
+ return null;
+ }
+
+ try {
+ return new BigInteger(lengthStr);
+ } catch (NumberFormatException e) {
+ return null;
+ }
+ }
+
+ public String getLocactionHeader() {
+ return getHeader("Location");
+ }
+
+ public String getContentLocactionHeader() {
+ return getHeader("Content-Location");
+ }
+
+ public String getContentTransferEncoding() {
+ return getHeader("Content-Transfer-Encoding");
+ }
+
+ public String getContentEncoding() {
+ return getHeader("Content-Encoding");
+ }
+
+ public String getCharset() {
+ return charset;
+ }
+
+ public BigInteger getContentLength() {
+ return length;
+ }
+
+ public InputStream getStream() {
+ return stream;
+ }
+
+ public String getErrorContent() {
+ return errorContent;
+ }
+ }
+
+ /**
+ * Output interface.
+ */
+ public interface Output {
+ void write(OutputStream out) throws Exception;
+ }
+}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/pom.xml
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/pom.xml?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/pom.xml (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/pom.xml Thu Nov 24 19:18:48 2011
@@ -43,6 +43,11 @@
<version>2.1.7</version>
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>com.googlecode.json-simple</groupId>
+ <artifactId>json-simple</artifactId>
+ <version>1.1</version>
+ </dependency>
</dependencies>
<build>
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/Constants.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/Constants.java?rev=1205962&r1=1205961&r2=1205962&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/Constants.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/Constants.java Thu Nov 24 19:18:48 2011
@@ -93,6 +93,49 @@ public final class Constants {
public static final String REP_REL_ROOTDESC = "http://docs.oasis-open.org/ns/cmis/link/200908/rootdescendants";
public static final String REP_REL_CHANGES = "http://docs.oasis-open.org/ns/cmis/link/200908/changes";
+ // browser binding selectors
+ public static final String SELECTOR_LAST_RESULT = "lastResult";
+ public static final String SELECTOR_TYPE_CHILDREN = "typeChildren";
+ public static final String SELECTOR_TYPE_DESCENDANTS = "typeDescendants";
+ public static final String SELECTOR_TYPE_DEFINITION = "typeDefinition";
+ public static final String SELECTOR_CONTENT = "content";
+ public static final String SELECTOR_OBJECT = "object";
+ public static final String SELECTOR_PROPERTIES = "properties";
+ public static final String SELECTOR_RENDITIONS = "renditions";
+ public static final String SELECTOR_CHILDREN = "children";
+ public static final String SELECTOR_DESCENDANTS = "descendants";
+ public static final String SELECTOR_PARENTS = "parents";
+ public static final String SELECTOR_PARENT = "parent";
+ public static final String SELECTOR_FOLDER_TREE = "folder";
+ public static final String SELECTOR_QUERY = "query";
+ public static final String SELECTOR_VERSIONS = "versions";
+ public static final String SELECTOR_RELATIONSHIPS = "relationships";
+ public static final String SELECTOR_CHECKEDOUT = "checkedout";
+ public static final String SELECTOR_POLICIES = "policies";
+ public static final String SELECTOR_ACL = "acl";
+ public static final String SELECTOR_CONTENT_CHANGES = "contentChanges";
+
+ // browser binding actions
+ public static final String CMISACTION_CREATE_DOCUMENT = "createDocument";
+ public static final String CMISACTION_CREATE_DOCUMENT_FROM_SOURCE = "createDocumentFromSource";
+ public static final String CMISACTION_CREATE_FOLDER = "createFolder";
+ public static final String CMISACTION_CREATE_RELATIONSHIP = "createRelationship";
+ public static final String CMISACTION_CREATE_POLICY = "createPolicy";
+ public static final String CMISACTION_DELETE_CONTENT = "deleteContent";
+ public static final String CMISACTION_SET_CONTENT = "setContent";
+ public static final String CMISACTION_DELETE = "delete";
+ public static final String CMISACTION_DELETE_TREE = "deleteTree";
+ public static final String CMISACTION_MOVE = "move";
+ public static final String CMISACTION_ADD_OBJECT_TO_FOLDER = "addObjectToFolder";
+ public static final String CMISACTION_REMOVE_OBJECT_FROM_FOLDER = "removeObjectFromFolder";
+ public static final String CMISACTION_QUERY = "query";
+ public static final String CMISACTION_CHECK_OUT = "checkOut";
+ public static final String CMISACTION_CANCEL_CHECK_OUT = "cancelCheckOut";
+ public static final String CMISACTION_CHECK_IN = "checkIn";
+ public static final String CMISACTION_APPLY_POLICY = "applyPolicy";
+ public static final String CMISACTION_REMOVE_POLICY = "removePolicy";
+ public static final String CMISACTION_APPLY_ACL = "applyACL";
+
// parameter
public static final String PARAM_ACL = "includeACL";
public static final String PARAM_ALLOWABLE_ACTIONS = "includeAllowableActions";
Added: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/JSONConstants.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/JSONConstants.java?rev=1205962&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/JSONConstants.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/JSONConstants.java Thu Nov 24 19:18:48 2011
@@ -0,0 +1,188 @@
+/*
+ * 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.chemistry.opencmis.commons.impl;
+
+/**
+ * JSON object constants.
+ */
+public class JSONConstants {
+
+ public static final String ERROR_EXCEPTION = "exception";
+ public static final String ERROR_MESSAGE = "message";
+ public static final String ERROR_STACKTRACE = "stacktrace";
+
+ public static final String REPINFO_ID = "repositoryId";
+ public static final String REPINFO_NAME = "repositoryName";
+ public static final String REPINFO_DESCRIPTION = "repositoryDescription";
+ public static final String REPINFO_VENDOR = "vendorName";
+ public static final String REPINFO_PRODUCT = "productName";
+ public static final String REPINFO_PRODUCT_VERSION = "productVersion";
+ public static final String REPINFO_ROOT_FOLDER_ID = "rootFolderId";
+ public static final String REPINFO_REPOSITORY_URL = "repositoryUrl";
+ public static final String REPINFO_ROOT_FOLDER_URL = "rootFolderUrl";
+ public static final String REPINFO_CAPABILITIES = "capabilities";
+ public static final String REPINFO_ACL_CAPABILITIES = "aclCapabilities";
+ public static final String REPINFO_CHANGE_LOCK_TOKEN = "latestChangeLogToken";
+ public static final String REPINFO_CMIS_VERSION_SUPPORTED = "cmisVersionSupported";
+ public static final String REPINFO_THIN_CLIENT_URI = "thinClientURI";
+ public static final String REPINFO_CHANGES_INCOMPLETE = "changesIncomplete";
+ public static final String REPINFO_CHANGES_ON_TYPE = "changesOnType";
+ public static final String REPINFO_PRINCIPAL_ID_ANONYMOUS = "principalIdAnonymous";
+ public static final String REPINFO_PRINCIPAL_ID_ANYONE = "principalIdAnyone";
+
+ public static final String JSON_CAP_CONTENT_STREAM_UPDATES = "capabilityContentStreamUpdatability";
+ public static final String JSON_CAP_CHANGES = "capabilityChanges";
+ public static final String JSON_CAP_RENDITIONS = "capabilityRenditions";
+ public static final String JSON_CAP_GET_DESCENDANTS = "capabilityGetDescendants";
+ public static final String JSON_CAP_GET_FOLDER_TREE = "capabilityGetFolderTree";
+ public static final String JSON_CAP_MULTIFILING = "capabilityMultifiling";
+ public static final String JSON_CAP_UNFILING = "capabilityUnfiling";
+ public static final String JSON_CAP_VERSION_SPECIFIC_FILING = "capabilityVersionSpecificFiling";
+ public static final String JSON_CAP_PWC_SEARCHABLE = "capabilityPWCSearchable";
+ public static final String JSON_CAP_PWC_UPDATABLE = "capabilityPWCUpdatable";
+ public static final String JSON_CAP_ALL_VERSIONS_SEARCHABLE = "capabilityAllVersionsSearchable";
+ public static final String JSON_CAP_QUERY = "capabilityQuery";
+ public static final String JSON_CAP_JOIN = "capabilityJoin";
+ public static final String JSON_CAP_ACL = "capabilityACL";
+
+ public static final String JSON_ACLCAP_SUPPORTED_PERMISSIONS = "supportedPermissions";
+ public static final String JSON_ACLCAP_ACL_PROPAGATION = "propagation";
+ public static final String JSON_ACLCAP_PERMISSIONS = "permissions";
+ public static final String JSON_ACLCAP_PERMISSION_MAPPING = "permissionMapping";
+
+ public static final String JSON_ACLCAP_PERMISSION_PERMISSION = "permission";
+ public static final String JSON_ACLCAP_PERMISSION_DESCRIPTION = "description";
+
+ public static final String JSON_ACLCAP_MAPPING_KEY = "key";
+ public static final String JSON_ACLCAP_MAPPING_PERMISSION = "permission";
+
+ public static final String JSON_OBJECT_PROPERTIES = "properties";
+ public static final String JSON_OBJECT_ALLOWABLE_ACTIONS = "allowableActions";
+ public static final String JSON_OBJECT_RELATIONSHIPS = "relationships";
+ public static final String JSON_OBJECT_CHANGE_EVENT_INFO = "changeEventInfo";
+ public static final String JSON_OBJECT_ACL = "acl";
+ public static final String JSON_OBJECT_EXACT_ACL = "exactACL";
+ public static final String JSON_OBJECT_POLICY_IDS = "policyIds";
+ public static final String JSON_OBJECT_RENDITIONS = "renditions";
+
+ public static final String JSON_OBJECTINFOLDER_OBJECT = "object";
+ public static final String JSON_OBJECTINFOLDER_PATH_SEGMENT = "pathSegment";
+ public static final String JSON_OBJECTPARENTS_OBJECT = "object";
+ public static final String JSON_OBJECTPARENTS_RELATIVE_PATH_SEGMENT = "relativePathSegment";
+
+ public static final String JSON_PROPERTY_ID = "id";
+ public static final String JSON_PROPERTY_LOCALNAME = "localName";
+ public static final String JSON_PROPERTY_DISPLAYNAME = "displayName";
+ public static final String JSON_PROPERTY_QUERYNAME = "queryName";
+ public static final String JSON_PROPERTY_VALUE = "value";
+ public static final String JSON_PROPERTY_DATATYPE = "type";
+ public static final String JSON_PROPERTY_CARDINALITY = "cardinality";
+
+ public static final String JSON_CHANGE_EVENT_TYPE = "changeType";
+ public static final String JSON_CHANGE_EVENT_TIME = "changeTime";
+
+ public static final String JSON_ACL_ACES = "aces";
+ public static final String JSON_ACL_IS_EXACT = "isExact";
+
+ public static final String JSON_ACE_PRINCIPAL = "princial";
+ public static final String JSON_ACE_PRINCIPAL_ID = "princialId";
+ public static final String JSON_ACE_PERMISSIONS = "permissions";
+ public static final String JSON_ACE_IS_DIRECT = "isDirect";
+
+ public static final String JSON_RENDITION_STREAM_ID = "streamId";
+ public static final String JSON_RENDITION_MIMETYPE = "mimeType";
+ public static final String JSON_RENDITION_LENGTH = "length";
+ public static final String JSON_RENDITION_KIND = "kind";
+ public static final String JSON_RENDITION_TITLE = "title";
+ public static final String JSON_RENDITION_HEIGHT = "height";
+ public static final String JSON_RENDITION_WIDTH = "width";
+ public static final String JSON_RENDITION_DOCUMENT_ID = "renditionDocumentId";
+
+ public static final String JSON_OBJECTLIST_OBJECTS = "objects";
+ public static final String JSON_OBJECTLIST_HAS_MORE_ITEMS = "hasMoreItems";
+ public static final String JSON_OBJECTLIST_NUM_ITEMS = "numItems";
+
+ public static final String JSON_OBJECTINFOLDERLIST_OBJECTS = "objects";
+ public static final String JSON_OBJECTINFOLDERLIST_HAS_MORE_ITEMS = "hasMoreItems";
+ public static final String JSON_OBJECTINFOLDERLIST_NUM_ITEMS = "numItems";
+
+ public static final String JSON_OBJECTINFOLDERCONTAINER_OBJECT = "object";
+ public static final String JSON_OBJECTINFOLDERCONTAINER_CHILDREN = "children";
+
+ public static final String JSON_TYPE_ID = "id";
+ public static final String JSON_TYPE_LOCALNAME = "localName";
+ public static final String JSON_TYPE_LOCALNAMESPACE = "localNamespace";
+ public static final String JSON_TYPE_DISPLAYNAME = "displayName";
+ public static final String JSON_TYPE_QUERYNAME = "queryName";
+ public static final String JSON_TYPE_DESCRIPTION = "description";
+ public static final String JSON_TYPE_BASE_ID = "baseId";
+ public static final String JSON_TYPE_PARENT_ID = "parentId";
+ public static final String JSON_TYPE_CREATABLE = "creatable";
+ public static final String JSON_TYPE_FILEABLE = "fileable";
+ public static final String JSON_TYPE_QUERYABLE = "queryable";
+ public static final String JSON_TYPE_FULLTEXT_INDEXED = "fulltextIndexed";
+ public static final String JSON_TYPE_INCLUDE_IN_SUPERTYPE_QUERY = "includedInSupertypeQuery";
+ public static final String JSON_TYPE_CONTROLABLE_POLICY = "controllablePolicy";
+ public static final String JSON_TYPE_CONTROLABLE_ACL = "controllableACL";
+ public static final String JSON_TYPE_PROPERTY_DEFINITIONS = "propertyDefinitions";
+
+ public static final String JSON_TYPE_VERSIONABLE = "versionable"; // document
+ public static final String JSON_TYPE_CONTENTSTREAM_ALLOWED = "contentStreamAllowed"; // document
+
+ public static final String JSON_TYPE_ALLOWED_SOURCE_TYPES = "allowedSourceTypes"; // relationship
+ public static final String JSON_TYPE_ALLOWED_TARGET_TYPES = "allowedTargetTypes"; // relationship
+
+ public static final String JSON_PROPERTYTYPE_ID = "id";
+ public static final String JSON_PROPERTYTYPE_LOCALNAME = "localName";
+ public static final String JSON_PROPERTYTYPE_LOCALNAMESPACE = "localNamespace";
+ public static final String JSON_PROPERTYTYPE_DISPLAYNAME = "displayName";
+ public static final String JSON_PROPERTYTYPE_QUERYNAME = "queryName";
+ public static final String JSON_PROPERTYTYPE_DESCRIPTION = "description";
+ public static final String JSON_PROPERTYTYPE_PROPERTY_TYPE = "propertyType";
+ public static final String JSON_PROPERTYTYPE_CARDINALITY = "cardinality";
+ public static final String JSON_PROPERTYTYPE_UPDATABILITY = "updatability";
+ public static final String JSON_PROPERTYTYPE_INHERITED = "inherited";
+ public static final String JSON_PROPERTYTYPE_REQUIRED = "required";
+ public static final String JSON_PROPERTYTYPE_QUERYABLE = "queryable";
+ public static final String JSON_PROPERTYTYPE_OPENCHOICE = "openChoice";
+
+ public static final String JSON_PROPERTYTYPE_DEAULT_VALUE = "defaultValue";
+
+ public static final String JSON_PROPERTYTYPE_MAX_LENGTH = "maxLength";
+ public static final String JSON_PROPERTYTYPE_MIN_VALUE = "minValue";
+ public static final String JSON_PROPERTYTYPE_MAX_VALUE = "maxValue";
+ public static final String JSON_PROPERTYTYPE_MAX_PRECISION = "precision";
+ public static final String JSON_PROPERTYTYPE_MAX_RESOLUTION = "resolution";
+
+ public static final String JSON_PROPERTYTYPE_CHOICE_DISPLAYNAME = "displayName";
+ public static final String JSON_PROPERTYTYPE_CHOICE_VALUE = "value";
+ public static final String JSON_PROPERTYTYPE_CHOICE_CHOICE = "choice";
+
+ public static final String JSON_TYPESLIST_TYPES = "types";
+ public static final String JSON_TYPESLIST_HAS_MORE_ITEMS = "hasMoreItems";
+ public static final String JSON_TYPESLIST_NUM_ITEMS = "numItems";
+
+ public static final String JSON_TYPESCONTAINER_TYPE = "type";
+ public static final String JSON_TYPESCONTAINER_CHILDREN = "children";
+
+ // Constant utility class.
+ private JSONConstants() {
+ }
+
+}