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 2009/10/28 18:10:50 UTC
svn commit: r830674 - in /incubator/chemistry/trunk/chemistry: ./
chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/
chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/
chemistry-atompub/src/main/java/or...
Author: fguillaume
Date: Wed Oct 28 17:10:49 2009
New Revision: 830674
URL: http://svn.apache.org/viewvc?rev=830674&view=rev
Log:
Pass more of the TCK (RepositoryServiceTest,TypeDefinitionTest,CreateTest,GetTest)
Modified:
incubator/chemistry/trunk/chemistry/README.txt
incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPConnection.java
incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPRepository.java
incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISCollection.java
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/CMISServiceResponse.java
incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISTypesCollection.java
incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISWorkspaceManager.java
incubator/chemistry/trunk/chemistry/chemistry-atompub/src/main/java/org/apache/chemistry/atompub/AtomPubCMIS.java
incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleConnection.java
incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleObject.java
incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleObjectEntry.java
incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/pom.xml
incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java
Modified: incubator/chemistry/trunk/chemistry/README.txt
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/README.txt?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/README.txt (original)
+++ incubator/chemistry/trunk/chemistry/README.txt Wed Oct 28 17:10:49 2009
@@ -18,4 +18,4 @@
A small in-memory demo AtomPub server can then be launched with:
- java -jar chemistry-tests/target/chemistry-tests-0.1-SNAPSHOT-jar-with-dependencies.jar
+ java -jar chemistry-tests/target/chemistry-tests-1.0-SNAPSHOT-jar-with-dependencies.jar
Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPConnection.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPConnection.java?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPConnection.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPConnection.java Wed Oct 28 17:10:49 2009
@@ -351,7 +351,7 @@
// TODO do a search (maybe 4 searches as base type unknown)
// XXX hardcoded Chemistry URL pattern
- href = repository.getCollectionHref(AtomPubCMIS.COL_ROOT_CHILDREN);
+ href = repository.getCollectionHref(AtomPubCMIS.COL_ROOT);
if (href.matches(".*/children/[0-9a-f-]{36}")) {
href = href.substring(0, href.length() - "/children/".length()
- 36);
Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPRepository.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPRepository.java?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPRepository.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-client/src/main/java/org/apache/chemistry/atompub/client/APPRepository.java Wed Oct 28 17:10:49 2009
@@ -147,7 +147,7 @@
return;
}
try {
- String href = getCollectionHref(AtomPubCMIS.COL_TYPES_CHILDREN);
+ String href = getCollectionHref(AtomPubCMIS.COL_TYPES);
if (href == null) {
throw new IllegalArgumentException(
"Invalid CMIS repository. No types children collection defined");
Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISCollection.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISCollection.java?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISCollection.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISCollection.java Wed Oct 28 17:10:49 2009
@@ -125,6 +125,13 @@
return request.absoluteUrlFor(TargetType.TYPE_ENTRY, params);
}
+ public String getDescendantsLink(String fid, RequestContext request) {
+ Map<String, String> params = new HashMap<String, String>();
+ params.put("collection", "descendants");
+ params.put("id", fid);
+ return request.absoluteUrlFor(TargetType.TYPE_COLLECTION, params);
+ }
+
public String getParentsLink(String fid, RequestContext request) {
Map<String, String> params = new HashMap<String, String>();
params.put("entrytype", "parents");
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=830674&r1=830673&r2=830674&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 Oct 28 17:10:49 2009
@@ -23,6 +23,7 @@
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -61,6 +62,7 @@
import org.apache.chemistry.atompub.abdera.ObjectElement;
import org.apache.chemistry.impl.simple.SimpleContentStream;
import org.apache.chemistry.util.GregorianCalendar;
+import org.apache.commons.codec.binary.Base64;
/**
* CMIS Collection for object entries.
@@ -173,7 +175,8 @@
// TODO don't add links if no children/decendants
entry.addLink(getChildrenLink(oid, request), AtomPub.LINK_DOWN,
AtomPub.MEDIA_TYPE_ATOM_FEED, null, null, -1);
- // TODO children descendants and folder tree
+ entry.addLink(getDescendantsLink(oid, request), AtomPub.LINK_DOWN,
+ AtomPubCMIS.MEDIA_TYPE_CMIS_TREE, null, null, -1);
} else if (baseType == BaseType.DOCUMENT) {
// TODO don't add link if no parents
entry.addLink(getParentsLink(oid, request), AtomPub.LINK_UP,
@@ -207,54 +210,84 @@
if (entry == null /* || !ProviderHelper.isValidEntry(entry) TODO XXX TCK */) {
return new EmptyResponseContext(400);
}
+
InputStream stream;
String mimeType;
- try {
- org.apache.abdera.model.Content.Type ct = entry.getContentType();
- switch (ct) {
- case TEXT:
- mimeType = "text/plain";
- break;
- case HTML:
- mimeType = "text/html";
- break;
- case XHTML:
- mimeType = "application/xhtml+xml";
- break;
- case XML:
- mimeType = "application/xml";
- break;
- case MEDIA:
- mimeType = entry.getContentMimeType().toString();
- break;
- default:
- throw new AssertionError(ct.toString());
+
+ Element cmisContent = entry.getFirstChild(AtomPubCMIS.CONTENT);
+ if (cmisContent != null) {
+ Element el = cmisContent.getFirstChild(AtomPubCMIS.MEDIA_TYPE);
+ if (el == null) {
+ return createErrorResponse(new ResponseContextException(
+ "missing cmisra:mediatype", 500));
}
- if (ct == org.apache.abdera.model.Content.Type.MEDIA) {
- stream = entry.getContentStream();
+ mimeType = el.getText();
+ el = cmisContent.getFirstChild(AtomPubCMIS.BASE64);
+ if (el == null) {
+ return createErrorResponse(new ResponseContextException(
+ "missing cmisra:base64", 500));
+ }
+ byte[] b64 = el.getText().getBytes(); // no charset, pure ASCII
+ stream = new ByteArrayInputStream(Base64.decodeBase64(b64));
+ } else {
+ Content content = entry.getContentElement();
+ if (content != null) {
+ org.apache.abdera.model.Content.Type ct = content.getContentType();
+ switch (ct) {
+ case TEXT:
+ mimeType = "text/plain;charset=UTF-8";
+ break;
+ case HTML:
+ mimeType = "text/html;charset=UTF-8";
+ break;
+ case XHTML:
+ mimeType = "application/xhtml+xml";
+ break;
+ case XML:
+ mimeType = "application/xml";
+ break;
+ case MEDIA:
+ mimeType = content.getMimeType().toString();
+ break;
+ default:
+ throw new AssertionError(ct.toString());
+ }
+ try {
+ if (ct == org.apache.abdera.model.Content.Type.MEDIA) {
+ stream = content.getDataHandler().getInputStream();
+ } else {
+ stream = new ByteArrayInputStream(
+ content.getValue().getBytes("UTF-8"));
+ }
+ } catch (IOException e1) {
+ return createErrorResponse(new ResponseContextException(
+ "cannot get stream", 500));
+ }
} else {
- stream = new ByteArrayInputStream(entry.getContent().getBytes(
- "UTF-8"));
+ stream = null;
+ mimeType = null;
}
- } catch (IOException e1) {
- return createErrorResponse(new ResponseContextException(
- "cannot get stream", 500));
}
- Element obb = entry.getFirstChild(AtomPubCMIS.OBJECT);
- ObjectElement objectElement = new ObjectElement(obb, repository);
Map<String, Serializable> properties;
- try {
- properties = objectElement.getProperties();
- } catch (Exception e) { // TODO proper exception
- return createErrorResponse(new ResponseContextException(500, e));
- }
-
- String typeId = (String) properties.get(Property.TYPE_ID);
- Type type = repository.getType(typeId);
- if (type == null) {
- return createErrorResponse(new ResponseContextException(
- "Unknown type: " + typeId, 500));
+ Type type;
+ Element obb = entry.getFirstChild(AtomPubCMIS.OBJECT);
+ if (obb != null) {
+ ObjectElement objectElement = new ObjectElement(obb, repository);
+ try {
+ properties = objectElement.getProperties();
+ } catch (Exception e) { // TODO proper exception
+ return createErrorResponse(new ResponseContextException(500, e));
+ }
+ String typeId = (String) properties.get(Property.TYPE_ID);
+ type = repository.getType(typeId);
+ if (type == null) {
+ return createErrorResponse(new ResponseContextException(
+ "Unknown type: " + typeId, 500));
+ }
+ } else {
+ properties = new HashMap<String, Serializable>();
+ type = repository.getType(BaseType.DOCUMENT.getId());
}
// set Atom-defined properties into entry
@@ -286,11 +319,16 @@
case DOCUMENT:
String filename = (String) properties.get(Property.CONTENT_STREAM_FILE_NAME);
ContentStream contentStream;
- try {
- contentStream = new SimpleContentStream(stream, mimeType,
- filename);
- } catch (IOException e) {
- return createErrorResponse(new ResponseContextException(500, e));
+ if (stream == null) {
+ contentStream = null;
+ } else {
+ try {
+ contentStream = new SimpleContentStream(stream, mimeType,
+ filename);
+ } catch (IOException e) {
+ return createErrorResponse(new ResponseContextException(
+ 500, e));
+ }
}
VersioningState versioningState = null; // TODO
objectId = spi.createDocument(properties, folderId, contentStream,
@@ -413,7 +451,10 @@
throws ResponseContextException {
SPI spi = repository.getSPI(); // TODO XXX connection leak
if ("path".equals(getType())) {
- String path = "/" + resourceName;
+ String path = resourceName;
+ if (!path.startsWith("/")) {
+ path = "/" + path;
+ }
return spi.getObjectByPath(path, null, false, false);
} else { // object
String id = resourceName;
@@ -434,6 +475,8 @@
resourceName = resourceName.replace("%3a", ":");
resourceName = resourceName.replace("%3A", ":");
resourceName = resourceName.replace("%20", " ");
+ resourceName = resourceName.replace("%2f", "/");
+ resourceName = resourceName.replace("%2F", "/");
return resourceName;
}
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=830674&r1=830673&r2=830674&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 Oct 28 17:10:49 2009
@@ -105,10 +105,6 @@
TargetType.TYPE_COLLECTION, "objectid");
targetResolver.setPattern("/types/([^/?]+)",
TargetType.TYPE_COLLECTION, "typeid");
- targetResolver.setPattern("/typesdescendants(\\?.*)?",
- TargetType.TYPE_COLLECTION);
- targetResolver.setPattern("/typesdescendants/([^/?]*)(\\?.*)?",
- TargetType.TYPE_COLLECTION, "typeid");
// CMIS workspaces available
@@ -116,11 +112,7 @@
workspaceInfo.setTitle(repository.getInfo().getName());
workspaceInfo.addCollection(new CMISChildrenCollection(
- AtomPubCMIS.COL_ROOT_CHILDREN,
- repository.getInfo().getRootFolderId().getId(), repository));
-
- workspaceInfo.addCollection(new CMISCollectionForOther(
- AtomPubCMIS.COL_ROOT_DESCENDANTS, "descendants",
+ AtomPubCMIS.COL_ROOT,
repository.getInfo().getRootFolderId().getId(), repository));
workspaceInfo.addCollection(new CMISCollectionForOther(
@@ -130,10 +122,7 @@
AtomPubCMIS.COL_CHECKED_OUT, "checkedout", null, repository));
workspaceInfo.addCollection(new CMISTypesCollection(
- AtomPubCMIS.COL_TYPES_CHILDREN, null, repository));
-
- workspaceInfo.addCollection(new CMISTypesCollection(
- AtomPubCMIS.COL_TYPES_DESCENDANTS, null, repository));
+ AtomPubCMIS.COL_TYPES, null, repository));
workspaceInfo.addCollection(new CMISQueryFeed(repository));
@@ -156,7 +145,7 @@
base + "object/{id}"));
list.add(new URITemplate(AtomPubCMIS.URITMPL_OBJECT_BY_PATH, //
AtomPub.MEDIA_TYPE_ATOM_ENTRY, //
- base + "path{path}"));
+ base + "path/{path}"));
list.add(new URITemplate(AtomPubCMIS.URITMPL_TYPE_BY_ID, //
AtomPub.MEDIA_TYPE_ATOM_FEED, //
base + "type/{id}"));
Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISServiceResponse.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISServiceResponse.java?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISServiceResponse.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISServiceResponse.java Wed Oct 28 17:10:49 2009
@@ -80,13 +80,14 @@
sw.endCollection();
}
// CMIS links
- sw.startElement(AtomPub.ATOM_LINK);
- sw.writeAttribute("type", "application/cmistree+xml");
- sw.writeAttribute("rel", AtomPubCMIS.LINK_TYPES_DESCENDANTS);
- String tdurl = request.absoluteUrlFor(TargetType.TYPE_SERVICE, null);
- tdurl = tdurl.replaceFirst("/repository$", "/typesdescendants"); // XXX
- sw.writeAttribute("href", tdurl);
- sw.endElement();
+ // sw.startElement(AtomPub.ATOM_LINK);
+ // sw.writeAttribute("type", "application/cmistree+xml");
+ // sw.writeAttribute("rel", AtomPubCMIS.LINK_TYPES_DESCENDANTS);
+ // String tdurl = request.absoluteUrlFor(TargetType.TYPE_SERVICE,
+ // null);
+ // tdurl = tdurl.replaceFirst("/repository$", "/typesdescendants");
+ // sw.writeAttribute("href", tdurl);
+ // sw.endElement();
// URI templates
for (URITemplate info : provider.getURITemplates(request)) {
sw.startElement(AtomPubCMIS.URI_TEMPLATE);
Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISTypesCollection.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISTypesCollection.java?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISTypesCollection.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISTypesCollection.java Wed Oct 28 17:10:49 2009
@@ -18,8 +18,6 @@
import java.io.Serializable;
import java.net.URI;
-import java.util.ArrayList;
-import java.util.Collection;
import java.util.Date;
import java.util.List;
@@ -34,7 +32,6 @@
import org.apache.abdera.model.Person;
import org.apache.abdera.protocol.server.RequestContext;
import org.apache.abdera.protocol.server.context.ResponseContextException;
-import org.apache.chemistry.BaseType;
import org.apache.chemistry.CMIS;
import org.apache.chemistry.PropertyDefinition;
import org.apache.chemistry.PropertyType;
@@ -256,29 +253,6 @@
}
}
// end property definitions
- if (AtomPubCMIS.COL_TYPES_DESCENDANTS.equals(getType())) {
- Collection<Type> subTypes = repository.getTypes(type.getId(), 1,
- includePropertyDefinitions);
- if (!subTypes.isEmpty()) {
- Element che = factory.newElement(AtomPubCMIS.CHILDREN, entry);
- // TODO basic feed info
- // AbstractCollectionAdapter.createFeedBase:
- factory.newID(che).setValue(
- "urn:x-id:typesdecendants-" + type.getId());
- // che.setTitle(getTitle(request));
- // che.addLink("");
- // che.addLink("", "self");
- // che.addAuthor(getAuthor(request));
- // che.setUpdated(new Date());
- // AbstractEntityCollectionAdapter.addFeedDetails
- // che.setUpdated(new Date());
- for (Type subType : subTypes) {
- Entry subEntry = factory.newEntry(che);
- addEntryDetails(request, subEntry, null, subType);
- }
- // end children entry
- }
- }
return link;
}
@@ -289,16 +263,7 @@
@Override
public Iterable<Type> getEntries(RequestContext request)
throws ResponseContextException {
- if (id == null && AtomPubCMIS.COL_TYPES_DESCENDANTS.equals(getType())) {
- // descendants needs only the first level, it will then recurse
- List<Type> list = new ArrayList<Type>(4);
- for (String tid : BaseType.ALL_IDS) {
- list.add(repository.getType(tid));
- }
- return list;
- } else {
- return repository.getTypes(id);
- }
+ return repository.getTypes(id);
}
@Override
Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISWorkspaceManager.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISWorkspaceManager.java?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISWorkspaceManager.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub-server/src/main/java/org/apache/chemistry/atompub/server/CMISWorkspaceManager.java Wed Oct 28 17:10:49 2009
@@ -46,22 +46,18 @@
if (paths.startsWith("/types/")) {
return new CMISTypesCollection(null, null, repository);
}
- if (paths.startsWith("/typesdescendants/")) {
- String id = request.getTarget().getParameter("typeid");
- if ("".equals(id)) {
- id = null;
- }
- return new CMISTypesCollection(AtomPubCMIS.COL_TYPES_DESCENDANTS,
- id, repository);
- }
if (paths.startsWith("/type/")) {
- return new CMISTypesCollection(AtomPubCMIS.COL_TYPES_CHILDREN,
+ return new CMISTypesCollection(AtomPubCMIS.COL_TYPES,
null, repository);
}
if (paths.startsWith("/children/")) {
String id = request.getTarget().getParameter("objectid");
return new CMISChildrenCollection(null, id, repository);
}
+ if (paths.startsWith("/descendants/")) {
+ String id = request.getTarget().getParameter("objectid");
+ return new CMISChildrenCollection(null, id, repository);
+ }
if (paths.startsWith("/parents/")) {
String id = request.getTarget().getParameter("objectid");
return new CMISParentsCollection(null, id, repository);
Modified: incubator/chemistry/trunk/chemistry/chemistry-atompub/src/main/java/org/apache/chemistry/atompub/AtomPubCMIS.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-atompub/src/main/java/org/apache/chemistry/atompub/AtomPubCMIS.java?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-atompub/src/main/java/org/apache/chemistry/atompub/AtomPubCMIS.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-atompub/src/main/java/org/apache/chemistry/atompub/AtomPubCMIS.java Wed Oct 28 17:10:49 2009
@@ -64,24 +64,24 @@
public static final QName CHILDREN = CMISRAName("children");
+ public static final QName CONTENT = CMISRAName("content");
+
+ public static final QName BASE64 = CMISRAName("base64");
+
/*
* ----- AtomPub Collection Types -----
*/
- public static final String COL_ROOT_CHILDREN = "root";
+ public static final String COL_ROOT = "root";
- public static final String COL_ROOT_DESCENDANTS = "rootdescendants"; // TODO
-
- public static final String COL_UNFILED = "unfiled";
+ public static final String COL_TYPES = "types";
public static final String COL_CHECKED_OUT = "checkedout";
- public static final String COL_TYPES_CHILDREN = "types";
-
- public static final String COL_TYPES_DESCENDANTS = "typesdescendants"; // TODO
-
public static final String COL_QUERY = "query";
+ public static final String COL_UNFILED = "unfiled";
+
/*
* ----- AtomPub Link Types -----
*/
@@ -108,9 +108,6 @@
public static final String LINK_FOLDER_TREE = CMIS_LINK_NS_BASE
+ "foldertree";
- public static final String LINK_TYPES_DESCENDANTS = CMIS_LINK_NS_BASE
- + "typesdescendants";
-
public static final String LINK_ROOT_DESCENDANTS = CMIS_LINK_NS_BASE
+ "rootdescendants";
Modified: incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleConnection.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleConnection.java?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleConnection.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleConnection.java Wed Oct 28 17:10:49 2009
@@ -405,7 +405,10 @@
// TODO contentStream, versioningState
String typeId = (String) properties.get(Property.TYPE_ID);
if (typeId == null) {
- throw new IllegalArgumentException("Missing obejct type id");
+ // use a default type, useful for pure AtomPub POST
+ typeId = BaseType.DOCUMENT.getId();
+ properties.put(Property.TYPE_ID, typeId);
+ // throw new IllegalArgumentException("Missing obejct type id");
}
Type type = repository.getType(typeId);
if (type == null || type.getBaseType() != BaseType.DOCUMENT) {
Modified: incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleObject.java?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleObject.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleObject.java Wed Oct 28 17:10:49 2009
@@ -131,7 +131,7 @@
if (pd == null) {
throw new IllegalArgumentException(id);
}
- Serializable value = entry.data.get(id);
+ Serializable value = entry.getValue(id);
if (value == null) {
value = pd.getDefaultValue();
}
Modified: incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleObjectEntry.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleObjectEntry.java?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleObjectEntry.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-commons/src/main/java/org/apache/chemistry/impl/simple/SimpleObjectEntry.java Wed Oct 28 17:10:49 2009
@@ -69,13 +69,55 @@
}
public Map<String, Serializable> getValues() {
- return new HashMap<String, Serializable>(data);
+ HashMap<String, Serializable> map = new HashMap<String, Serializable>(
+ data);
+ if (map.containsKey(Property.PATH)) {
+ map.put(Property.PATH, getValue(Property.PATH));
+ }
+ return map;
}
public Serializable getValue(String id) {
+ if (id.equals(Property.PATH)) {
+ // non-local value
+ return getPath();
+ }
return data.get(id);
}
+ // TODO add a getPath method to the SPI
+ protected String getPath() {
+ ObjectEntry parent;
+ if (getBaseType() == BaseType.FOLDER) {
+ parent = connection.getSPI().getFolderParent(this, null);
+ } else {
+ Collection<ObjectEntry> parents = connection.getSPI().getObjectParents(
+ this, null);
+ if (parents.size() == 0) {
+ parent = null;
+ } else if (parents.size() > 1) {
+ // several parents -> no path TODO error?
+ return null;
+ } else {
+ parent = parents.iterator().next();
+ }
+ }
+ String parentPath;
+ if (parent == null) {
+ parentPath = "";
+ } else {
+ parentPath = (String) parent.getValue(Property.PATH);
+ if (parentPath == null) {
+ return null;
+ }
+ if (parentPath.equals("/")) {
+ parentPath = "";
+ }
+ }
+ String name = (String) getValue(Property.NAME);
+ return parentPath + "/" + name;
+ }
+
public void setValue(String id, Serializable value) {
if (value == null) {
data.remove(id);
Modified: incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/pom.xml
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/pom.xml?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/pom.xml (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/pom.xml Wed Oct 28 17:10:49 2009
@@ -109,6 +109,49 @@
</reporting>
<profiles>
<profile>
+ <id>chemistry-local</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <systemProperties>
+ <property>
+ <name>chemistry.tck.tests</name>
+ <value>*</value>
+ </property>
+ <property>
+ <name>chemistry.tck.serviceUrl</name>
+ <value>http://localhost:8080/cmis/repository</value>
+ </property>
+ <property>
+ <name>chemistry.tck.user</name>
+ <value>admin</value>
+ </property>
+ <property>
+ <name>chemistry.tck.password</name>
+ <value>admin</value>
+ </property>
+ <property>
+ <name>chemistry.tck.validate</name>
+ <value>true</value>
+ </property>
+ <property>
+ <name>chemistry.tck.failOnValidationError</name>
+ <value>false</value>
+ </property>
+ <property>
+ <name>chemistry.tck.traceRequests</name>
+ <value>false</value>
+ </property>
+ </systemProperties>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
<id>example</id>
<build>
<plugins>
Modified: incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java?rev=830674&r1=830673&r2=830674&view=diff
==============================================================================
--- incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java (original)
+++ incubator/chemistry/trunk/chemistry/chemistry-tests/src/main/java/org/apache/chemistry/test/BasicTestCase.java Wed Oct 28 17:10:49 2009
@@ -321,8 +321,8 @@
// content stream
String blobText = "Another file...\n";
byte[] blobBytes = blobText.getBytes("UTF-8");
- ContentStream cs = new SimpleContentStream(blobBytes, "text/plain",
- "mydoc.txt");
+ ContentStream cs = new SimpleContentStream(blobBytes,
+ "text/plain;charset=UTF-8", "mydoc.txt");
doc.setContentStream(cs);
assertNull(doc.getId()); // not yet saved
doc.save();
@@ -344,7 +344,7 @@
assertNotNull(cs);
assertTrue(cs.getLength() != 0);
assertEquals("mydoc.txt", cs.getFileName());
- assertEquals("text/plain", cs.getMimeType());
+ assertEquals("text/plain;charset=UTF-8", cs.getMimeType());
assertNotNull(cs.getStream());
InputStream in = doc.getContentStream().getStream();
assertNotNull(in);