You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fg...@apache.org on 2010/01/13 18:49:38 UTC
svn commit: r898858 - in
/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src:
main/java/org/apache/chemistry/atompub/server/
main/java/org/apache/chemistry/atompub/server/jaxrs/
test/java/org/apache/chemistry/atompub/server/
Author: fguillaume
Date: Wed Jan 13 17:49:37 2010
New Revision: 898858
URL: http://svn.apache.org/viewvc?rev=898858&view=rev
Log:
CMIS-97: deal with Tomcat and encoded paths in URI templates
Modified:
incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java
incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISProvider.java
incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/jaxrs/AbderaResource.java
incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java
Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java?rev=898858&r1=898857&r2=898858&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISObjectsCollection.java Wed Jan 13 17:49:37 2010
@@ -792,8 +792,17 @@
RelationshipDirection relationships = RelationshipDirection.fromInclusion(incl);
Inclusion inclusion = new Inclusion(properties, null, relationships,
allowableActions, false, false);
- if (COLTYPE_PATH.equals(getType())) {
- String path = resourceName;
+ if (COLTYPE_PATH.equals(getType()) || "".equals(resourceName)) {
+ String path;
+ if (COLTYPE_PATH.equals(getType())) {
+ path = resourceName;
+ } else {
+ path = target.getParameter(AtomPubCMIS.PARAM_PATH);
+ if (path == null) {
+ throw new ResponseContextException("Missing id and path",
+ 500);
+ }
+ }
if (!path.startsWith("/")) {
path = "/" + path;
}
Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISProvider.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISProvider.java?rev=898858&r1=898857&r2=898858&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISProvider.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISProvider.java Wed Jan 13 17:49:37 2010
@@ -66,7 +66,7 @@
// entry
targetBuilder.setTemplate(TargetType.TYPE_ENTRY,
"{target_base}/{entrytype}/{id}");
- targetResolver.setPattern("/object/([^/?]+)(\\?.*)?",
+ targetResolver.setPattern("/object(?:/?)([^/?]*)(\\?.*)?",
TargetType.TYPE_ENTRY, "objectid");
targetResolver.setPattern("/allowableactions/([^/?]+)",
TargetType.TYPE_ENTRY, "objectid"); // XXX entry?
@@ -160,7 +160,8 @@
AtomPubCMIS.PARAM_INCLUDE_ACL)));
list.add(new URITemplate(AtomPubCMIS.URITMPL_OBJECT_BY_PATH,
AtomPub.MEDIA_TYPE_ATOM_ENTRY, addURITemplateParameters(
- base + "/path/{path}", //
+ base + "/object", //
+ AtomPubCMIS.PARAM_PATH, //
AtomPubCMIS.PARAM_FILTER,
AtomPubCMIS.PARAM_RENDITION_FILTER,
AtomPubCMIS.PARAM_INCLUDE_RELATIONSHIPS,
Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/jaxrs/AbderaResource.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/jaxrs/AbderaResource.java?rev=898858&r1=898857&r2=898858&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/jaxrs/AbderaResource.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/jaxrs/AbderaResource.java Wed Jan 13 17:49:37 2010
@@ -298,6 +298,13 @@
@GET
@Produces(AtomPub.MEDIA_TYPE_ATOM_ENTRY)
+ @Path("object")
+ public Response doGetObjectNoId() {
+ return getAbderaEntry(1);
+ }
+
+ @GET
+ @Produces(AtomPub.MEDIA_TYPE_ATOM_ENTRY)
@Path("object/{objectid}")
public Response doGetObject() {
// objectid decoded by Abdera getCollectionAdapter
Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java?rev=898858&r1=898857&r2=898858&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/test/java/org/apache/chemistry/atompub/server/AtomPubServerTestCase.java Wed Jan 13 17:49:37 2010
@@ -290,7 +290,7 @@
String path = "/folder1/folder2/doc3";
// URL-encoded (what a compliant client using the URI template does)
- ClientResponse resp = client.get(base + "/path/"
+ ClientResponse resp = client.get(base + "/object?path="
+ path.replace("/", "%2F"));
assertEquals(HttpStatus.SC_OK, resp.getStatus());
Element ob = resp.getDocument().getRoot();
@@ -299,6 +299,26 @@
assertEquals("urn:uuid:" + doc3id, id.getText());
resp.release();
+ // unencoded
+ resp = client.get(base + "/object?path=" + path);
+ assertEquals(HttpStatus.SC_OK, resp.getStatus());
+ ob = resp.getDocument().getRoot();
+ assertNotNull(ob);
+ id = ob.getFirstChild(new QName(AtomPub.ATOM_NS, "id"));
+ assertEquals("urn:uuid:" + doc3id, id.getText());
+ resp.release();
+
+ // non-URI-template version using /path
+
+ // URL-encoded
+ resp = client.get(base + "/path/" + path.replace("/", "%2F"));
+ assertEquals(HttpStatus.SC_OK, resp.getStatus());
+ ob = resp.getDocument().getRoot();
+ assertNotNull(ob);
+ id = ob.getFirstChild(new QName(AtomPub.ATOM_NS, "id"));
+ assertEquals("urn:uuid:" + doc3id, id.getText());
+ resp.release();
+
// unencoded, single slash
resp = client.get(base + "/path" + path);
assertEquals(HttpStatus.SC_OK, resp.getStatus());